ReaderInputStream.Builder.setCharset(null) should reset to a default
object, not throw an NPE
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0e4f002..ba1ddae 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -73,6 +73,9 @@
<action dev="ggregory" type="fix" due-to="Gary Gregory">
ReaderInputStream.Builder.setCharsetEncoder(null) should reset to a default object, not throw an NPE.
</action>
+ <action dev="ggregory" type="fix" due-to="Gary Gregory">
+ ReaderInputStream.Builder.setCharset(null) should reset to a default object, not throw an NPE.
+ </action>
<!-- ADD -->
<action dev="ggregory" type="add" due-to="Gary Gregory">
Add CharSequenceInputStream.Builder.
diff --git a/src/main/java/org/apache/commons/io/build/AbstractStreamBuilder.java b/src/main/java/org/apache/commons/io/build/AbstractStreamBuilder.java
index f38bed0..8beccd9 100644
--- a/src/main/java/org/apache/commons/io/build/AbstractStreamBuilder.java
+++ b/src/main/java/org/apache/commons/io/build/AbstractStreamBuilder.java
@@ -99,7 +99,7 @@
*
* @return the Charset, defaults to {@link Charset#defaultCharset()}.
*/
- protected Charset getCharset() {
+ public Charset getCharset() {
return charset;
}
diff --git a/src/main/java/org/apache/commons/io/input/ReaderInputStream.java b/src/main/java/org/apache/commons/io/input/ReaderInputStream.java
index 0108780..69e0042 100644
--- a/src/main/java/org/apache/commons/io/input/ReaderInputStream.java
+++ b/src/main/java/org/apache/commons/io/input/ReaderInputStream.java
@@ -129,8 +129,9 @@
@Override
public Builder setCharset(final Charset charset) {
- charsetEncoder = charset.newEncoder();
- return super.setCharset(charset);
+ super.setCharset(charset);
+ charsetEncoder = getCharset().newEncoder();
+ return this;
}
/**
diff --git a/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java b/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java
index 565fa1e..db104da 100644
--- a/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java
@@ -243,11 +243,21 @@
}
@Test
+ public void testResetCharset() {
+ assertNotNull(ReaderInputStream.builder().setReader(new StringReader("\uD800")).setCharset((Charset) null).getCharset());
+ }
+
+ @Test
public void testResetCharsetEncoder() {
assertNotNull(ReaderInputStream.builder().setReader(new StringReader("\uD800")).setCharsetEncoder(null).getCharsetEncoder());
}
@Test
+ public void testResetCharsetName() {
+ assertNotNull(ReaderInputStream.builder().setReader(new StringReader("\uD800")).setCharset((String) null).getCharset());
+ }
+
+ @Test
public void testUTF16WithSingleByteRead() throws IOException {
testWithSingleByteRead(TEST_STRING, UTF_16);
}