You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2018/01/13 15:32:42 UTC

[1/2] commons-compress git commit: COMPRESS-437 add read-only DEFLATE64 support to 7z

Repository: commons-compress
Updated Branches:
  refs/heads/master 5b004bfc1 -> a12adc362


COMPRESS-437 add read-only DEFLATE64 support to 7z


Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/738c708b
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/738c708b
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/738c708b

Branch: refs/heads/master
Commit: 738c708be3dbfd99a6ef5c0b486bf0b55e315406
Parents: 5b004bf
Author: Stefan Bodewig <bo...@apache.org>
Authored: Sat Jan 13 16:31:39 2018 +0100
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Sat Jan 13 16:31:39 2018 +0100

----------------------------------------------------------------------
 src/changes/changes.xml                            |   3 +++
 .../commons/compress/archivers/sevenz/Coders.java  |  16 ++++++++++++++++
 .../compress/archivers/sevenz/SevenZMethod.java    |   5 +++++
 src/site/xdoc/examples.xml                         |   2 +-
 src/site/xdoc/index.xml                            |   2 +-
 .../compress/archivers/sevenz/SevenZFileTest.java  |   5 +++++
 src/test/resources/bla.deflate64.7z                | Bin 0 -> 503 bytes
 7 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/738c708b/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index cdca5d4..e9b8d7a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -94,6 +94,9 @@ The <action> type attribute can be add,update,fix,remove.
               due-to="Dawid Weiss">
         Speed improvement for DEFLATE64 decompression.
       </action>
+      <action issue="COMPRESS-437" type="add" date="2018-01-13">
+        Added read-only DEFLATE64 support to 7z archives.
+      </action>
     </release>
     <release version="1.15" date="2017-10-17"
              description="Release 1.15

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/738c708b/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java
index 50ae163..065562d 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java
@@ -31,6 +31,7 @@ import java.util.zip.InflaterInputStream;
 
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
+import org.apache.commons.compress.compressors.deflate64.Deflate64CompressorInputStream;
 import org.apache.commons.compress.utils.FlushShieldFilterOutputStream;
 import org.tukaani.xz.ARMOptions;
 import org.tukaani.xz.ARMThumbOptions;
@@ -50,6 +51,7 @@ class Coders {
             put(SevenZMethod.LZMA, new LZMADecoder());
             put(SevenZMethod.LZMA2, new LZMA2Decoder());
             put(SevenZMethod.DEFLATE, new DeflateDecoder());
+            put(SevenZMethod.DEFLATE64, new Deflate64Decoder());
             put(SevenZMethod.BZIP2, new BZIP2Decoder());
             put(SevenZMethod.AES256SHA256, new AES256SHA256Decoder());
             put(SevenZMethod.BCJ_X86_FILTER, new BCJDecoder(new X86Options()));
@@ -219,6 +221,20 @@ class Coders {
         }
     }
 
+    static class Deflate64Decoder extends CoderBase {
+        Deflate64Decoder() {
+            super(Number.class);
+        }
+
+        @SuppressWarnings("resource") // caller must close the InputStream
+        @Override
+        InputStream decode(final String archiveName, final InputStream in, final long uncompressedLength,
+                final Coder coder, final byte[] password)
+            throws IOException {
+            return new Deflate64CompressorInputStream(in);
+        }
+    }
+
     static class BZIP2Decoder extends CoderBase {
         BZIP2Decoder() {
             super(Number.class);

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/738c708b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZMethod.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZMethod.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZMethod.java
index 25a2e24..d36c42f 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZMethod.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZMethod.java
@@ -42,6 +42,11 @@ public enum SevenZMethod {
     LZMA2(new byte[] { (byte)0x21 }),
     /** Deflate */
     DEFLATE(new byte[] { (byte)0x04, (byte)0x01, (byte)0x08 }),
+    /**
+     * Deflate64
+     * @since 1.16
+     */
+    DEFLATE64(new byte[] { (byte)0x04, (byte)0x01, (byte)0x09 }),
     /** BZIP2 */
     BZIP2(new byte[] { (byte)0x04, (byte)0x02, (byte)0x02 }),
     /**

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/738c708b/src/site/xdoc/examples.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/examples.xml b/src/site/xdoc/examples.xml
index 64a743d..d3fd0d4 100644
--- a/src/site/xdoc/examples.xml
+++ b/src/site/xdoc/examples.xml
@@ -419,7 +419,7 @@ LOOP UNTIL entry.getSize() HAS BEEN READ {
         of compression and encryption algorithms used for 7z archives.
         For writing only uncompressed entries, LZMA, LZMA2, BZIP2 and
         Deflate are supported - reading also supports
-        AES-256/SHA-256.</p>
+        AES-256/SHA-256 and DEFLATE64.</p>
 
         <p>Multipart archives are not supported at all.</p>
 

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/738c708b/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index cfadd39..d6bfd57 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -71,7 +71,7 @@
               <li>Support for Zstandard compression.</li>
               <li>Read-only support for DEFLATE64 compression as
               stand-alone CompressorInputStream and as method used in
-              ZIP archives.</li>
+              ZIP and 7z archives.</li>
             </ul>
           </subsection>
 

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/738c708b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
index 4592523..954cd09 100644
--- a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
+++ b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
@@ -132,6 +132,11 @@ public class SevenZFileTest extends AbstractTestCase {
     }
 
     @Test
+    public void test7zDeflate64Unarchive() throws Exception {
+        test7zUnarchive(getFile("bla.deflate64.7z"), SevenZMethod.DEFLATE64);
+    }
+
+    @Test
     public void test7zDecryptUnarchive() throws Exception {
         if (isStrongCryptoAvailable()) {
             test7zUnarchive(getFile("bla.encrypted.7z"), SevenZMethod.LZMA, // stack LZMA + AES

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/738c708b/src/test/resources/bla.deflate64.7z
----------------------------------------------------------------------
diff --git a/src/test/resources/bla.deflate64.7z b/src/test/resources/bla.deflate64.7z
new file mode 100644
index 0000000..94f60bd
Binary files /dev/null and b/src/test/resources/bla.deflate64.7z differ


[2/2] commons-compress git commit: add known limitations for stand-alone DEFLATE64

Posted by bo...@apache.org.
add known limitations for stand-alone DEFLATE64


Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/a12adc36
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/a12adc36
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/a12adc36

Branch: refs/heads/master
Commit: a12adc3627ae39baecd132906c05484fee40efe8
Parents: 738c708
Author: Stefan Bodewig <bo...@apache.org>
Authored: Sat Jan 13 16:32:10 2018 +0100
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Sat Jan 13 16:32:10 2018 +0100

----------------------------------------------------------------------
 src/site/xdoc/limitations.xml | 7 +++++++
 1 file changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/a12adc36/src/site/xdoc/limitations.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/limitations.xml b/src/site/xdoc/limitations.xml
index 82fc233..f9033d9 100644
--- a/src/site/xdoc/limitations.xml
+++ b/src/site/xdoc/limitations.xml
@@ -95,6 +95,13 @@
          streams using DEFLATE compression.</li>
        </ul>
      </section>
+     <section name="DEFLATE64">
+       <ul>
+         <li><code>CompressorStreamFactory</code> is not able to auto-detect
+         streams using DEFLATE64 compression.</li>
+         <li>read-only support</li>
+       </ul>
+     </section>
      <section name="DUMP">
        <ul>
          <li>read-only support</li>