Index: classlib/modules/archive/src/main/java/java/util/zip/Deflater.java =================================================================== --- classlib/modules/archive/src/main/java/java/util/zip/Deflater.java (revision 985786) +++ classlib/modules/archive/src/main/java/java/util/zip/Deflater.java (working copy) @@ -451,9 +451,6 @@ if (level < DEFAULT_COMPRESSION || level > BEST_COMPRESSION) { throw new IllegalArgumentException(); } - if (inputBuffer != null) { - throw new IllegalStateException(); - } compressLevel = level; } @@ -472,9 +469,6 @@ if (strategy < DEFAULT_STRATEGY || strategy > HUFFMAN_ONLY) { throw new IllegalArgumentException(); } - if (inputBuffer != null) { - throw new IllegalStateException(); - } this.strategy = strategy; } Index: classlib/modules/archive/src/test/java/org/apache/harmony/archive/tests/java/util/zip/DeflaterTest.java =================================================================== --- classlib/modules/archive/src/test/java/org/apache/harmony/archive/tests/java/util/zip/DeflaterTest.java (revision 985786) +++ classlib/modules/archive/src/test/java/org/apache/harmony/archive/tests/java/util/zip/DeflaterTest.java (working copy) @@ -676,6 +676,22 @@ defl.end(); } + //test setLevel - Call after inputArray + Deflater defl = new Deflater(); + defl.setLevel(2); + outPutBuf = new byte[500]; + defl.setInput(byteArray); + defl.setLevel(3); + while (!defl.needsInput()) { + defl.deflate(outPutBuf); + } + defl.finish(); + while (!defl.finished()) { + defl.deflate(outPutBuf); + } + totalOut = defl.getTotalOut(); + defl.end(); + // testing boundaries try { Deflater boundDefl = new Deflater(); @@ -745,6 +761,21 @@ mdefl.end(); } + //Call setStrategy after setInput call + byte outPutBuf[] = new byte[500]; + MyDeflater mdefl = new MyDeflater(); + mdefl.setStrategy(mdefl.getDefStrategy()); + mdefl.setInput(byteArray); + mdefl.setStrategy(mdefl.getHuffman()); + while (!mdefl.needsInput()) { + mdefl.deflate(outPutBuf); + } + mdefl.finish(); + while (!mdefl.finished()) { + mdefl.deflate(outPutBuf); + } + mdefl.end(); + // Attempting to setStrategy to an invalid value try { Deflater defl = new Deflater();