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