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

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

commit 04c283ce9ded4fc0fc090ce94d1054e9bc574097
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Jul 31 11:56:22 2026 -0400

    Internal refactoring reduces overriding
---
 ...stractLhStaticHuffmanCompressorInputStream.java | 27 ++++++++++++++++++----
 .../compressors/lha/Lh4CompressorInputStream.java  | 18 +++------------
 .../compressors/lha/Lh5CompressorInputStream.java  | 13 +++--------
 .../compressors/lha/Lh6CompressorInputStream.java  | 13 +++--------
 .../compressors/lha/Lh7CompressorInputStream.java  | 13 +++--------
 5 files changed, 34 insertions(+), 50 deletions(-)

diff --git 
a/src/main/java/org/apache/commons/compress/compressors/lha/AbstractLhStaticHuffmanCompressorInputStream.java
 
b/src/main/java/org/apache/commons/compress/compressors/lha/AbstractLhStaticHuffmanCompressorInputStream.java
index 4813c57c9..daf615396 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/lha/AbstractLhStaticHuffmanCompressorInputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/lha/AbstractLhStaticHuffmanCompressorInputStream.java
@@ -77,13 +77,26 @@ abstract class AbstractLhStaticHuffmanCompressorInputStream 
extends CompressorIn
      */
     private BinaryTree distanceTree;
 
+    private final int dictionaryBits;
+
+    private final int distanceBits;
+
+    private final int maxNumberOfDistanceCodes;
+
     /**
      * Constructs a new CompressorInputStream which decompresses bytes read 
from the specified stream.
      *
-     * @param in the InputStream from which to read compressed data.
+     * @param in The InputStream from which to read compressed data.
+     * @param dictionaryBits The number of bits used for the dictionary size.
+     * @param distanceBits The number of bits used for the distance.
+     * @param maxNumberOfDistanceCodes The maximum number of distance codes.
      * @throws IOException if an I/O error occurs.
      */
-    AbstractLhStaticHuffmanCompressorInputStream(final InputStream in) throws 
IOException {
+    AbstractLhStaticHuffmanCompressorInputStream(final InputStream in, final 
int dictionaryBits, final int distanceBits, final int maxNumberOfDistanceCodes)
+            throws IOException {
+        this.dictionaryBits = dictionaryBits;
+        this.distanceBits = distanceBits;
+        this.maxNumberOfDistanceCodes = maxNumberOfDistanceCodes;
         this.bin = new BitInputStream(in == System.in ? 
CloseShieldInputStream.wrap(in) : in, ByteOrder.BIG_ENDIAN);
         // Create a sliding dictionary buffer that can hold the full 
dictionary size and the maximum match length
         this.buffer = new CircularBuffer(getDictionarySize() + 
getMaxMatchLength());
@@ -160,7 +173,9 @@ int getCopyThreshold() {
      *
      * @return the number of bits used for the dictionary size.
      */
-    abstract int getDictionaryBits();
+    int getDictionaryBits() {
+        return dictionaryBits;
+    }
 
     /**
      * Gets the size of the dictionary.
@@ -176,7 +191,9 @@ int getDictionarySize() {
      *
      * @return the number of bits used for the distance.
      */
-    abstract int getDistanceBits();
+    int getDistanceBits() {
+        return distanceBits;
+    }
 
     /**
      * Gets the maximum match length for the copy command.
@@ -202,7 +219,7 @@ int getMaxNumberOfCommands() {
      * @return the maximum number of distance codes.
      */
     int getMaxNumberOfDistanceCodes() {
-        return getDictionaryBits() + 1;
+        return maxNumberOfDistanceCodes;
     }
 
     @Override
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/lha/Lh4CompressorInputStream.java
 
b/src/main/java/org/apache/commons/compress/compressors/lha/Lh4CompressorInputStream.java
index a8063758c..e2b0c1b36 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/lha/Lh4CompressorInputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/lha/Lh4CompressorInputStream.java
@@ -29,6 +29,8 @@
  */
 public class Lh4CompressorInputStream extends 
AbstractLhStaticHuffmanCompressorInputStream {
 
+    private static final int DICT_BITS_LH4 = 12;
+
     /**
      * Constructs a new Lh4CompressorInputStream which decompresses bytes read 
from the specified stream.
      *
@@ -36,21 +38,7 @@ public class Lh4CompressorInputStream extends 
AbstractLhStaticHuffmanCompressorI
      * @throws IOException if an I/O error occurs
      */
     public Lh4CompressorInputStream(final InputStream in) throws IOException {
-        super(in);
-    }
-
-    @Override
-    int getDictionaryBits() {
-        return 12;
+        super(in, DICT_BITS_LH4, 4, DICT_BITS_LH4 + 2);
     }
 
-    @Override
-    int getDistanceBits() {
-        return 4;
-    }
-
-    @Override
-    int getMaxNumberOfDistanceCodes() {
-        return getDictionaryBits() + 2;
-    }
 }
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/lha/Lh5CompressorInputStream.java
 
b/src/main/java/org/apache/commons/compress/compressors/lha/Lh5CompressorInputStream.java
index bb632890c..bb5f418e8 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/lha/Lh5CompressorInputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/lha/Lh5CompressorInputStream.java
@@ -29,6 +29,8 @@
  */
 public class Lh5CompressorInputStream extends 
AbstractLhStaticHuffmanCompressorInputStream {
 
+    private static final int DICT_BITS_LH5 = 13;
+
     /**
      * Constructs a new Lh5CompressorInputStream which decompresses bytes read 
from the specified stream.
      *
@@ -36,16 +38,7 @@ public class Lh5CompressorInputStream extends 
AbstractLhStaticHuffmanCompressorI
      * @throws IOException if an I/O error occurs.
      */
     public Lh5CompressorInputStream(final InputStream in) throws IOException {
-        super(in);
-    }
-
-    @Override
-    int getDictionaryBits() {
-        return 13;
+        super(in, DICT_BITS_LH5, 4, DICT_BITS_LH5 + 1);
     }
 
-    @Override
-    int getDistanceBits() {
-        return 4;
-    }
 }
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/lha/Lh6CompressorInputStream.java
 
b/src/main/java/org/apache/commons/compress/compressors/lha/Lh6CompressorInputStream.java
index 156c78605..c14eb54ad 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/lha/Lh6CompressorInputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/lha/Lh6CompressorInputStream.java
@@ -29,6 +29,8 @@
  */
 public class Lh6CompressorInputStream extends 
AbstractLhStaticHuffmanCompressorInputStream {
 
+    private static final int DICT_BITS_LH6 = 15;
+
     /**
      * Constructs a new Lh6CompressorInputStream which decompresses bytes read 
from the specified stream.
      *
@@ -36,16 +38,7 @@ public class Lh6CompressorInputStream extends 
AbstractLhStaticHuffmanCompressorI
      * @throws IOException if an I/O error occurs.
      */
     public Lh6CompressorInputStream(final InputStream in) throws IOException {
-        super(in);
-    }
-
-    @Override
-    int getDictionaryBits() {
-        return 15;
+        super(in, DICT_BITS_LH6, 5, DICT_BITS_LH6 + 1);
     }
 
-    @Override
-    int getDistanceBits() {
-        return 5;
-    }
 }
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/lha/Lh7CompressorInputStream.java
 
b/src/main/java/org/apache/commons/compress/compressors/lha/Lh7CompressorInputStream.java
index 26dca2d58..bfc8e0d86 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/lha/Lh7CompressorInputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/lha/Lh7CompressorInputStream.java
@@ -29,6 +29,8 @@
  */
 public class Lh7CompressorInputStream extends 
AbstractLhStaticHuffmanCompressorInputStream {
 
+    private static final int DICT_BITS_LH7 = 16;
+
     /**
      * Constructs a new Lh7CompressorInputStream which decompresses bytes read 
from the specified stream.
      *
@@ -36,16 +38,7 @@ public class Lh7CompressorInputStream extends 
AbstractLhStaticHuffmanCompressorI
      * @throws IOException if an I/O error occurs.
      */
     public Lh7CompressorInputStream(final InputStream in) throws IOException {
-        super(in);
-    }
-
-    @Override
-    int getDictionaryBits() {
-        return 16;
+        super(in, DICT_BITS_LH7, 5, DICT_BITS_LH7 + 1);
     }
 
-    @Override
-    int getDistanceBits() {
-        return 5;
-    }
 }

Reply via email to