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