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 def5b298d3d1f6532a674ebb59656b152fe08129
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Thu May 4 15:19:10 2023 -0400

    Reuse FilterInputStream
---
 .../commons/io/input/BoundedInputStream.java       | 26 +++++++++----------
 .../commons/io/input/ReadAheadInputStream.java     | 15 +++++------
 .../io/input/WindowsLineEndingInputStream.java     | 30 +++++++++++-----------
 .../io/input/buffer/CircularBufferInputStream.java | 15 +++--------
 4 files changed, 38 insertions(+), 48 deletions(-)

diff --git a/src/main/java/org/apache/commons/io/input/BoundedInputStream.java 
b/src/main/java/org/apache/commons/io/input/BoundedInputStream.java
index 39bfa19e..902e6a55 100644
--- a/src/main/java/org/apache/commons/io/input/BoundedInputStream.java
+++ b/src/main/java/org/apache/commons/io/input/BoundedInputStream.java
@@ -18,6 +18,7 @@ package org.apache.commons.io.input;
 
 import static org.apache.commons.io.IOUtils.EOF;
 
+import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -31,10 +32,7 @@ import java.io.InputStream;
  *
  * @since 2.0
  */
-public class BoundedInputStream extends InputStream {
-
-    /** The wrapped input stream. */
-    private final InputStream inputStream;
+public class BoundedInputStream extends FilterInputStream {
 
     /** The max count of bytes to read. */
     private final long maxCount;
@@ -68,8 +66,8 @@ public class BoundedInputStream extends InputStream {
     public BoundedInputStream(final InputStream inputStream, final long 
maxLength) {
         // Some badly designed methods - e.g. the servlet API - overload length
         // such that "-1" means stream finished
+        super(inputStream);
         this.maxCount = maxLength;
-        this.inputStream = inputStream;
     }
 
     /**
@@ -81,7 +79,7 @@ public class BoundedInputStream extends InputStream {
             onMaxLength(maxCount, count);
             return 0;
         }
-        return inputStream.available();
+        return in.available();
     }
 
     /**
@@ -93,7 +91,7 @@ public class BoundedInputStream extends InputStream {
     @Override
     public void close() throws IOException {
         if (propagateClose) {
-            inputStream.close();
+            in.close();
         }
     }
 
@@ -140,7 +138,7 @@ public class BoundedInputStream extends InputStream {
      */
     @Override
     public synchronized void mark(final int readlimit) {
-        inputStream.mark(readlimit);
+        in.mark(readlimit);
         mark = count;
     }
 
@@ -151,7 +149,7 @@ public class BoundedInputStream extends InputStream {
      */
     @Override
     public boolean markSupported() {
-        return inputStream.markSupported();
+        return in.markSupported();
     }
 
     /**
@@ -180,7 +178,7 @@ public class BoundedInputStream extends InputStream {
             onMaxLength(maxCount, count);
             return EOF;
         }
-        final int result = inputStream.read();
+        final int result = in.read();
         count++;
         return result;
     }
@@ -215,7 +213,7 @@ public class BoundedInputStream extends InputStream {
             return EOF;
         }
         final long maxRead = maxCount >= 0 ? Math.min(len, maxCount - count) : 
len;
-        final int bytesRead = inputStream.read(b, off, (int) maxRead);
+        final int bytesRead = in.read(b, off, (int) maxRead);
 
         if (bytesRead == EOF) {
             return EOF;
@@ -232,7 +230,7 @@ public class BoundedInputStream extends InputStream {
      */
     @Override
     public synchronized void reset() throws IOException {
-        inputStream.reset();
+        in.reset();
         count = mark;
     }
 
@@ -259,7 +257,7 @@ public class BoundedInputStream extends InputStream {
     @Override
     public long skip(final long n) throws IOException {
         final long toSkip = maxCount >= 0 ? Math.min(n, maxCount - count) : n;
-        final long skippedBytes = inputStream.skip(toSkip);
+        final long skippedBytes = in.skip(toSkip);
         count += skippedBytes;
         return skippedBytes;
     }
@@ -271,6 +269,6 @@ public class BoundedInputStream extends InputStream {
      */
     @Override
     public String toString() {
-        return inputStream.toString();
+        return in.toString();
     }
 }
diff --git 
a/src/main/java/org/apache/commons/io/input/ReadAheadInputStream.java 
b/src/main/java/org/apache/commons/io/input/ReadAheadInputStream.java
index 4f1d5a19..72e06335 100644
--- a/src/main/java/org/apache/commons/io/input/ReadAheadInputStream.java
+++ b/src/main/java/org/apache/commons/io/input/ReadAheadInputStream.java
@@ -17,6 +17,7 @@ import static org.apache.commons.io.IOUtils.EOF;
 
 // import javax.annotation.concurrent.GuardedBy;
 import java.io.EOFException;
+import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InterruptedIOException;
@@ -42,7 +43,7 @@ import org.apache.commons.io.build.AbstractStreamBuilder;
  *
  * @since 2.9.0
  */
-public class ReadAheadInputStream extends InputStream {
+public class ReadAheadInputStream extends FilterInputStream {
 
     /**
      * Builds a new {@link ReadAheadInputStream} instance.
@@ -158,8 +159,6 @@ public class ReadAheadInputStream extends InputStream {
     // Whether there is a reader waiting for data.
     private final AtomicBoolean isWaiting = new AtomicBoolean(false);
 
-    private final InputStream underlyingInputStream;
-
     private final ExecutorService executorService;
 
     private final boolean shutdownExecutorService;
@@ -201,11 +200,11 @@ public class ReadAheadInputStream extends InputStream {
      */
     private ReadAheadInputStream(final InputStream inputStream, final int 
bufferSizeInBytes, final ExecutorService executorService,
             final boolean shutdownExecutorService) {
+        super(Objects.requireNonNull(inputStream, "inputStream"));
         if (bufferSizeInBytes <= 0) {
             throw new IllegalArgumentException("bufferSizeInBytes should be 
greater than 0, but the value is " + bufferSizeInBytes);
         }
         this.executorService = Objects.requireNonNull(executorService, 
"executorService");
-        this.underlyingInputStream = Objects.requireNonNull(inputStream, 
"inputStream");
         this.shutdownExecutorService = shutdownExecutorService;
         this.activeBuffer = ByteBuffer.allocate(bufferSizeInBytes);
         this.readAheadBuffer = ByteBuffer.allocate(bufferSizeInBytes);
@@ -262,7 +261,7 @@ public class ReadAheadInputStream extends InputStream {
                 throw iio;
             } finally {
                 if (isSafeToCloseUnderlyingInputStream) {
-                    underlyingInputStream.close();
+                    super.close();
                 }
             }
         }
@@ -282,7 +281,7 @@ public class ReadAheadInputStream extends InputStream {
         }
         if (needToCloseUnderlyingInputStream) {
             try {
-                underlyingInputStream.close();
+                super.close();
             } catch (final IOException ignored) {
                 // TODO Rethrow as UncheckedIOException?
             }
@@ -389,7 +388,7 @@ public class ReadAheadInputStream extends InputStream {
                 // try to fill the read ahead buffer.
                 // if a reader is waiting, possibly return early.
                 do {
-                    read = underlyingInputStream.read(arr, off, len);
+                    read = in.read(arr, off, len);
                     if (read <= 0) {
                         break;
                     }
@@ -486,7 +485,7 @@ public class ReadAheadInputStream extends InputStream {
         activeBuffer.flip();
         readAheadBuffer.position(0);
         readAheadBuffer.flip();
-        final long skippedFromInputStream = underlyingInputStream.skip(toSkip);
+        final long skippedFromInputStream = in.skip(toSkip);
         readAsync();
         return skippedBytes + skippedFromInputStream;
     }
diff --git 
a/src/main/java/org/apache/commons/io/input/WindowsLineEndingInputStream.java 
b/src/main/java/org/apache/commons/io/input/WindowsLineEndingInputStream.java
index e6ec30fe..bb9b15f3 100644
--- 
a/src/main/java/org/apache/commons/io/input/WindowsLineEndingInputStream.java
+++ 
b/src/main/java/org/apache/commons/io/input/WindowsLineEndingInputStream.java
@@ -30,13 +30,13 @@ import java.io.InputStream;
  */
 public class WindowsLineEndingInputStream  extends InputStream {
 
-    private boolean slashRSeen;
+    private boolean atSlashCr;
 
-    private boolean slashNSeen;
+    private boolean atSlashN;
 
     private boolean injectSlashN;
 
-    private boolean eofSeen;
+    private boolean atEos;
 
     private final InputStream target;
 
@@ -71,13 +71,13 @@ public class WindowsLineEndingInputStream  extends 
InputStream {
         if (!ensureLineFeedAtEndOfFile) {
             return EOF;
         }
-        if (!slashNSeen && !slashRSeen) {
-            slashRSeen = true;
+        if (!atSlashN && !atSlashCr) {
+            atSlashCr = true;
             return CR;
         }
-        if (!slashNSeen) {
-            slashRSeen = false;
-            slashNSeen = true;
+        if (!atSlashN) {
+            atSlashCr = false;
+            atSlashN = true;
             return LF;
         }
         return EOF;
@@ -96,16 +96,16 @@ public class WindowsLineEndingInputStream  extends 
InputStream {
      */
     @Override
     public int read() throws IOException {
-        if (eofSeen) {
+        if (atEos) {
             return eofGame();
         }
         if (injectSlashN) {
             injectSlashN = false;
             return LF;
         }
-        final boolean prevWasSlashR = slashRSeen;
+        final boolean prevWasSlashR = atSlashCr;
         final int target = readWithUpdate();
-        if (eofSeen) {
+        if (atEos) {
             return eofGame();
         }
         if (target == LF && !prevWasSlashR) {
@@ -122,12 +122,12 @@ public class WindowsLineEndingInputStream  extends 
InputStream {
      */
     private int readWithUpdate() throws IOException {
         final int target = this.target.read();
-        eofSeen = target == EOF;
-        if (eofSeen) {
+        atEos = target == EOF;
+        if (atEos) {
             return target;
         }
-        slashRSeen = target == CR;
-        slashNSeen = target == LF;
+        atSlashCr = target == CR;
+        atSlashN = target == LF;
         return target;
     }
 }
diff --git 
a/src/main/java/org/apache/commons/io/input/buffer/CircularBufferInputStream.java
 
b/src/main/java/org/apache/commons/io/input/buffer/CircularBufferInputStream.java
index 02201b25..8c8f1f10 100644
--- 
a/src/main/java/org/apache/commons/io/input/buffer/CircularBufferInputStream.java
+++ 
b/src/main/java/org/apache/commons/io/input/buffer/CircularBufferInputStream.java
@@ -18,6 +18,7 @@ package org.apache.commons.io.input.buffer;
 
 import static org.apache.commons.io.IOUtils.EOF;
 
+import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Objects;
@@ -28,10 +29,7 @@ import org.apache.commons.io.IOUtils;
  * Implements a buffered input stream, which is internally based on a {@link 
CircularByteBuffer}. Unlike the
  * {@link java.io.BufferedInputStream}, this one doesn't need to reallocate 
byte arrays internally.
  */
-public class CircularBufferInputStream extends InputStream {
-
-    /** What we are streaming, used to fill the internal buffer. */
-    protected final InputStream in;
+public class CircularBufferInputStream extends FilterInputStream {
 
     /** Internal buffer. */
     protected final CircularByteBuffer buffer;
@@ -59,10 +57,10 @@ public class CircularBufferInputStream extends InputStream {
      * @param bufferSize The size of the {@link CircularByteBuffer}, which is 
used internally.
      */
     public CircularBufferInputStream(final InputStream inputStream, final int 
bufferSize) {
+        super(Objects.requireNonNull(inputStream, "inputStream"));
         if (bufferSize <= 0) {
             throw new IllegalArgumentException("Invalid bufferSize: " + 
bufferSize);
         }
-        this.in = Objects.requireNonNull(inputStream, "inputStream");
         this.buffer = new CircularByteBuffer(bufferSize);
         this.bufferSize = bufferSize;
         this.eof = false;
@@ -70,7 +68,7 @@ public class CircularBufferInputStream extends InputStream {
 
     @Override
     public void close() throws IOException {
-        in.close();
+        super.close();
         eof = true;
         buffer.clear();
     }
@@ -121,11 +119,6 @@ public class CircularBufferInputStream extends InputStream 
{
         return buffer.read() & 0xFF; // return unsigned byte
     }
 
-    @Override
-    public int read(final byte[] buffer) throws IOException {
-        return read(buffer, 0, buffer.length);
-    }
-
     @Override
     public int read(final byte[] targetBuffer, final int offset, final int 
length) throws IOException {
         Objects.requireNonNull(targetBuffer, "targetBuffer");

Reply via email to