This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git

commit 73bca3d798e8450556d6be491786a0b3006cb5fa
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Wed May 3 09:16:09 2023 -0400

    Use a builder in UncheckedBufferedReader
---
 .../commons/io/input/UncheckedBufferedReader.java  | 48 ++++++++++++++++------
 .../io/input/UncheckedBufferedReaderTest.java      | 26 +++++++-----
 2 files changed, 52 insertions(+), 22 deletions(-)

diff --git 
a/src/main/java/org/apache/commons/io/input/UncheckedBufferedReader.java 
b/src/main/java/org/apache/commons/io/input/UncheckedBufferedReader.java
index 6664f5ad..f820baf3 100644
--- a/src/main/java/org/apache/commons/io/input/UncheckedBufferedReader.java
+++ b/src/main/java/org/apache/commons/io/input/UncheckedBufferedReader.java
@@ -22,7 +22,9 @@ import java.io.IOException;
 import java.io.Reader;
 import java.io.UncheckedIOException;
 import java.nio.CharBuffer;
+import java.nio.charset.Charset;
 
+import org.apache.commons.io.build.AbstractStreamBuilder;
 import org.apache.commons.io.function.Uncheck;
 
 /**
@@ -36,23 +38,45 @@ import org.apache.commons.io.function.Uncheck;
 public class UncheckedBufferedReader extends BufferedReader {
 
     /**
-     * Creates a new buffered reader.
-     *
-     * @param reader a Reader object providing the underlying stream.
-     * @return a new UncheckedBufferedReader.
-     * @throws NullPointerException if {@code reader} is {@code null}.
+     * Builds a new {@link UncheckedBufferedReader} instance.
+     * <p>
+     * Using File IO:
+     * </p>
+     * <pre>{@code
+     * UncheckedBufferedReader s = UncheckedBufferedReader.builder()
+     *   .setFile(file)
+     *   .setBufferSize(8192)
+     *   .setCharset(Charset.defaultCharset())
+     *   .get()}
+     * </pre>
+     * <p>
+     * Using NIO Path:
+     * </p>
+     * <pre>{@code
+     * UncheckedBufferedReader s = UncheckedBufferedReader.builder()
+     *   .setPath(path)
+     *   .setBufferSize(8192)
+     *   .setCharset(Charset.defaultCharset())
+     *   .get()}
+     * </pre>
      */
-    public static UncheckedBufferedReader on(final Reader reader) {
-        return new UncheckedBufferedReader(reader);
+    public static class Builder extends 
AbstractStreamBuilder<UncheckedBufferedReader, Builder> {
+
+        @Override
+        public UncheckedBufferedReader get() {
+            // This an unchecked class, so this method is as well.
+            return Uncheck.get(() -> new 
UncheckedBufferedReader(getOrigin().getReader(Charset.defaultCharset()), 
getBufferSize()));
+        }
+
     }
 
     /**
-     * Creates a buffering character-input stream that uses a default-sized 
input buffer.
+     * Constructs a new {@link Builder}.
      *
-     * @param reader A Reader
+     * @return a new {@link Builder}.
      */
-    public UncheckedBufferedReader(final Reader reader) {
-        super(reader);
+    public static Builder builder() {
+        return new Builder();
     }
 
     /**
@@ -63,7 +87,7 @@ public class UncheckedBufferedReader extends BufferedReader {
      *
      * @throws IllegalArgumentException If {@code bufferSize <= 0}
      */
-    public UncheckedBufferedReader(final Reader reader, final int bufferSize) {
+    private UncheckedBufferedReader(final Reader reader, final int bufferSize) 
{
         super(reader, bufferSize);
     }
 
diff --git 
a/src/test/java/org/apache/commons/io/input/UncheckedBufferedReaderTest.java 
b/src/test/java/org/apache/commons/io/input/UncheckedBufferedReaderTest.java
index fb0f18bc..0f86200e 100644
--- a/src/test/java/org/apache/commons/io/input/UncheckedBufferedReaderTest.java
+++ b/src/test/java/org/apache/commons/io/input/UncheckedBufferedReaderTest.java
@@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
+import java.io.Reader;
 import java.io.StringReader;
 import java.io.UncheckedIOException;
 import java.nio.CharBuffer;
@@ -41,14 +42,14 @@ public class UncheckedBufferedReaderTest {
     @SuppressWarnings("resource")
     @BeforeEach
     public void beforeEach() {
-        ucStringReader = UncheckedBufferedReader.on(new StringReader("01"));
+        ucStringReader = UncheckedBufferedReader.builder().setReader(new 
StringReader("01")).get();
         exception = new IOException("test exception");
-        ucBrokenReader = UncheckedBufferedReader.on(new 
BrokenReader(exception));
+        ucBrokenReader = UncheckedBufferedReader.builder().setReader(new 
BrokenReader(exception)).get();
     }
 
     @Test
     public void testBufferSize() {
-        try (UncheckedBufferedReader uncheckedReader = new 
UncheckedBufferedReader(new StringReader("0123456789"), 2)) {
+        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.builder().setReader(new 
StringReader("0123456789")).setBufferSize(2).get()) {
             assertEquals('0', uncheckedReader.read());
         }
     }
@@ -74,7 +75,7 @@ public class UncheckedBufferedReaderTest {
 
     @Test
     public void testMarkThrows() {
-        try (UncheckedBufferedReader closedReader = 
UncheckedBufferedReader.on(ClosedReader.INSTANCE)) {
+        try (UncheckedBufferedReader closedReader = 
UncheckedBufferedReader.builder().setReader(ClosedReader.INSTANCE).get()) {
             closedReader.close();
             assertThrows(UncheckedIOException.class, () -> 
closedReader.mark(1));
         }
@@ -82,7 +83,8 @@ public class UncheckedBufferedReaderTest {
 
     @Test
     public void testRead() {
-        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.on(ucStringReader)) {
+        final Reader reader = ucStringReader;
+        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.builder().setReader(reader).get()) {
             assertEquals('0', uncheckedReader.read());
             assertEquals('1', uncheckedReader.read());
             assertEquals(IOUtils.EOF, uncheckedReader.read());
@@ -92,7 +94,8 @@ public class UncheckedBufferedReaderTest {
 
     @Test
     public void testReadCharArray() {
-        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.on(ucStringReader)) {
+        final Reader reader = ucStringReader;
+        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.builder().setReader(reader).get()) {
             final char[] array = new char[1];
             assertEquals(1, uncheckedReader.read(array));
             assertEquals('0', array[0]);
@@ -109,7 +112,8 @@ public class UncheckedBufferedReaderTest {
 
     @Test
     public void testReadCharArrayIndexed() {
-        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.on(ucStringReader)) {
+        final Reader reader = ucStringReader;
+        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.builder().setReader(reader).get()) {
             final char[] array = new char[1];
             assertEquals(1, uncheckedReader.read(array, 0, 1));
             assertEquals('0', array[0]);
@@ -136,7 +140,8 @@ public class UncheckedBufferedReaderTest {
 
     @Test
     public void testReadCharBuffer() {
-        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.on(ucStringReader)) {
+        final Reader reader = ucStringReader;
+        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.builder().setReader(reader).get()) {
             final CharBuffer buffer = CharBuffer.wrap(new char[1]);
             assertEquals(1, uncheckedReader.read(buffer));
             buffer.flip();
@@ -162,7 +167,8 @@ public class UncheckedBufferedReaderTest {
 
     @Test
     public void testReadLine() {
-        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.on(ucStringReader)) {
+        final Reader reader = ucStringReader;
+        try (UncheckedBufferedReader uncheckedReader = 
UncheckedBufferedReader.builder().setReader(reader).get()) {
             assertEquals("01", uncheckedReader.readLine());
             assertEquals(IOUtils.EOF, uncheckedReader.read());
             assertEquals(IOUtils.EOF, uncheckedReader.read());
@@ -191,7 +197,7 @@ public class UncheckedBufferedReaderTest {
 
     @Test
     public void testResetThrows() {
-        try (UncheckedBufferedReader closedReader = 
UncheckedBufferedReader.on(ClosedReader.INSTANCE)) {
+        try (UncheckedBufferedReader closedReader = 
UncheckedBufferedReader.builder().setReader(ClosedReader.INSTANCE).get()) {
             closedReader.close();
             assertThrows(UncheckedIOException.class, () -> 
ucBrokenReader.reset());
         }

Reply via email to