Repository: camel Updated Branches: refs/heads/master 066e66ab2 -> 5737fe608
CAMEL-10141: make org.apache.camel.converter.IO... ...ConverterCharsetTest tests pass on Java 9 Alternative implementation and test without using reflection. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5737fe60 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5737fe60 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5737fe60 Branch: refs/heads/master Commit: 5737fe6086f60f9421c54e0096d5887f1449dc11 Parents: 066e66a Author: Zoran Regvart <zregv...@apache.org> Authored: Wed May 10 13:06:03 2017 +0200 Committer: Zoran Regvart <zregv...@apache.org> Committed: Wed May 10 13:27:04 2017 +0200 ---------------------------------------------------------------------- .../org/apache/camel/converter/IOConverter.java | 5 ++++- .../camel/converter/IOConverterCharsetTest.java | 16 ++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/5737fe60/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java b/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java index e9bd4b8..72dab06 100644 --- a/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java +++ b/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java @@ -44,6 +44,7 @@ import java.nio.CharBuffer; import java.nio.charset.Charset; import java.nio.charset.UnsupportedCharsetException; import java.util.Properties; +import java.util.function.Supplier; import org.apache.camel.Converter; import org.apache.camel.Exchange; @@ -60,6 +61,8 @@ import org.slf4j.LoggerFactory; @Converter public final class IOConverter { + static Supplier<Charset> defaultCharset = Charset::defaultCharset; + private static final Logger LOG = LoggerFactory.getLogger(IOConverter.class); /** @@ -81,7 +84,7 @@ public final class IOConverter { public static InputStream toInputStream(File file, String charset) throws IOException { if (charset != null) { final BufferedReader reader = toReader(file, charset); - final Charset defaultStreamCharset = Charset.defaultCharset(); + final Charset defaultStreamCharset = defaultCharset.get(); return new InputStream() { private ByteBuffer bufferBytes; private CharBuffer bufferedChars = CharBuffer.allocate(4096); http://git-wip-us.apache.org/repos/asf/camel/blob/5737fe60/camel-core/src/test/java/org/apache/camel/converter/IOConverterCharsetTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/converter/IOConverterCharsetTest.java b/camel-core/src/test/java/org/apache/camel/converter/IOConverterCharsetTest.java index b96175e..8297d3b 100644 --- a/camel-core/src/test/java/org/apache/camel/converter/IOConverterCharsetTest.java +++ b/camel-core/src/test/java/org/apache/camel/converter/IOConverterCharsetTest.java @@ -21,8 +21,8 @@ import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; -import java.lang.reflect.Field; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import org.apache.camel.ContextTestSupport; @@ -61,7 +61,7 @@ public class IOConverterCharsetTest extends ContextTestSupport { File file = new File("src/test/resources/org/apache/camel/converter/german.utf-8.txt"); InputStream in = IOConverter.toInputStream(file, "UTF-8"); // do read with default charset! - BufferedReader reader = new BufferedReader(new InputStreamReader(in)); + BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.ISO_8859_1)); BufferedReader naiveReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")); try { String line = reader.readLine(); @@ -141,13 +141,9 @@ public class IOConverterCharsetTest extends ContextTestSupport { } - private void switchToDefaultCharset(String charset) { - try { - Field defaultCharset = Charset.class.getDeclaredField("defaultCharset"); - defaultCharset.setAccessible(true); - defaultCharset.set(null, Charset.forName(charset)); - } catch (Exception e) { - // Do nothing here - } + private void switchToDefaultCharset(final String charset) { + final Charset newCharset = Charset.forName(charset); + + IOConverter.defaultCharset = () -> newCharset; } }