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;
     }
 }

Reply via email to