You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by gg...@apache.org on 2024/08/22 12:10:34 UTC

(httpcomponents-client) branch master updated: DeflateInputStream extends FilterInputStream

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/httpcomponents-client.git


The following commit(s) were added to refs/heads/master by this push:
     new 01c478b7d DeflateInputStream extends FilterInputStream
01c478b7d is described below

commit 01c478b7d81b723ca516daf93990432880f4dbe4
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Aug 21 18:26:35 2024 -0400

    DeflateInputStream extends FilterInputStream
    
    - Reduces boilerplate
    - Improve Javadoc
    - Internal static class can be private
    - Reuse constant Deflater.DEFLATED
---
 .../hc/client5/http/entity/DeflateInputStream.java | 93 +++-------------------
 1 file changed, 10 insertions(+), 83 deletions(-)

diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/entity/DeflateInputStream.java b/httpclient5/src/main/java/org/apache/hc/client5/http/entity/DeflateInputStream.java
index 8e36b6464..1c635d362 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/entity/DeflateInputStream.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/entity/DeflateInputStream.java
@@ -26,23 +26,23 @@
  */
 package org.apache.hc.client5.http.entity;
 
+import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PushbackInputStream;
+import java.util.zip.Deflater;
 import java.util.zip.Inflater;
 import java.util.zip.InflaterInputStream;
 import java.util.zip.ZipException;
 
 /**
- * Deflate input stream. This class includes logic needed for various Rfc's in order
- * to reasonably implement the "deflate" compression style.
+ * Deflates an input stream. This class includes logic needed for various RFCs in order
+ * to reasonably implement the "deflate" compression algorithm.
  */
-public class DeflateInputStream extends InputStream {
-
-    private final InputStream sourceStream;
+public class DeflateInputStream extends FilterInputStream {
 
     public DeflateInputStream(final InputStream wrapped) throws IOException {
-
+        super(null);
         final PushbackInputStream pushback = new PushbackInputStream(wrapped, 2);
         final int i1 = pushback.read();
         final int i2 = pushback.read();
@@ -58,89 +58,17 @@ public class DeflateInputStream extends InputStream {
         final int compressionMethod = b1 & 0xF;
         final int compressionInfo = b1 >> 4 & 0xF;
         final int b2 = i2 & 0xFF;
-        if (compressionMethod == 8 && compressionInfo <= 7 && ((b1 << 8) | b2) % 31 == 0) {
+        if (compressionMethod == Deflater.DEFLATED && compressionInfo <= 7 && ((b1 << 8) | b2) % 31 == 0) {
             nowrap = false;
         }
-        sourceStream = new DeflateStream(pushback, new Inflater(nowrap));
-    }
-
-    /**
-     * Read a byte.
-     */
-    @Override
-    public int read() throws IOException {
-        return sourceStream.read();
-    }
-
-    /**
-     * Read lots of bytes.
-     */
-    @Override
-    public int read(final byte[] b) throws IOException {
-        return sourceStream.read(b);
+        in = new DeflateStream(pushback, new Inflater(nowrap));
     }
 
-    /**
-     * Read lots of specific bytes.
-     */
-    @Override
-    public int read(final byte[] b, final int off, final int len) throws IOException {
-        return sourceStream.read(b, off, len);
-    }
-
-    /**
-     * Skip
-     */
-    @Override
-    public long skip(final long n) throws IOException {
-        return sourceStream.skip(n);
-    }
-
-    /**
-     * Get available.
-     */
-    @Override
-    public int available() throws IOException {
-        return sourceStream.available();
-    }
-
-    /**
-     * Mark.
-     */
-    @Override
-    public void mark(final int readLimit) {
-        sourceStream.mark(readLimit);
-    }
-
-    /**
-     * Reset.
-     */
-    @Override
-    public void reset() throws IOException {
-        sourceStream.reset();
-    }
-
-    /**
-     * Check if mark is supported.
-     */
-    @Override
-    public boolean markSupported() {
-        return sourceStream.markSupported();
-    }
-
-    /**
-     * Close.
-     */
-    @Override
-    public void close() throws IOException {
-        sourceStream.close();
-    }
-
-    static class DeflateStream extends InflaterInputStream {
+    private static class DeflateStream extends InflaterInputStream {
 
         private boolean closed;
 
-        public DeflateStream(final InputStream in, final Inflater inflater) {
+        private DeflateStream(final InputStream in, final Inflater inflater) {
             super(in, inflater);
         }
 
@@ -157,4 +85,3 @@ public class DeflateInputStream extends InputStream {
     }
 
 }
-