Merge branch 'COMPRESS-380'

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

Branch: refs/heads/master
Commit: b18ef2a10393824bd9a79c908bda656de4d45006
Parents: 7cf10d7 4b57823
Author: Stefan Bodewig <bode...@apache.org>
Authored: Tue Jan 9 18:40:31 2018 +0100
Committer: Stefan Bodewig <bode...@apache.org>
Committed: Tue Jan 9 18:40:31 2018 +0100

----------------------------------------------------------------------
 .gitattributes                                  |   1 +
 src/changes/changes.xml                         |   4 +
 .../archivers/zip/ZipArchiveInputStream.java    |  39 +-
 .../commons/compress/archivers/zip/ZipFile.java |   4 +-
 .../commons/compress/archivers/zip/ZipUtil.java |   4 +-
 .../compressors/CompressorStreamFactory.java    |  24 +-
 .../Deflate64CompressorInputStream.java         | 104 ++++
 .../compressors/deflate64/HuffmanDecoder.java   | 513 +++++++++++++++++++
 .../compressors/deflate64/HuffmanState.java     |  25 +
 .../compress/compressors/deflate64/package.html |  25 +
 .../commons/compress/utils/BitInputStream.java  |  30 ++
 src/site/xdoc/examples.xml                      |  25 +-
 src/site/xdoc/index.xml                         |   7 +-
 src/site/xdoc/limitations.xml                   |   2 +-
 src/site/xdoc/zip.xml                           |  36 +-
 .../zip/ZipArchiveInputStreamTest.java          |  35 ++
 .../compress/archivers/zip/ZipFileTest.java     |  18 +
 .../deflate64/Deflate64BugsTest.java            |  49 ++
 .../Deflate64CompressorInputStreamTest.java     | 155 ++++++
 .../deflate64/HuffmanDecoderTest.java           | 222 ++++++++
 .../resources/COMPRESS-380/COMPRESS-380-dd.zip  | Bin 0 -> 1391 bytes
 .../resources/COMPRESS-380/COMPRESS-380-input   | Bin 0 -> 3072 bytes
 .../COMPRESS-380-readbeyondmemory.zip           | Bin 0 -> 15290 bytes
 .../resources/COMPRESS-380/COMPRESS-380.zip     | Bin 0 -> 2257 bytes
 24 files changed, 1303 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/b18ef2a1/src/changes/changes.xml
----------------------------------------------------------------------
diff --cc src/changes/changes.xml
index d640f2a,3eaf692..de50417
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@@ -72,14 -72,10 +72,18 @@@ The <action> type attribute can be add,
          throw the expected IOException rather than obscure
          RuntimeExceptions.
        </action>
 -      <action issue="COMPRESS-380" type="add" date="2018-01-03"
 +      <action type="update" date="2018-01-04">
 +        Updated XZ for Java dependency to 1.8 in order to pick up bug
 +        fix to LZMA2InputStream's available method.
 +      </action>
 +      <action type="update" date="2018-01-05" issue="COMPRESS-429"
 +              due-to="Damiano Albani">
 +        ZipArchiveEntry now exposes how the name or comment have been
 +        determined when the entry was read.
++      <action issue="COMPRESS-380" type="add" date="2018-01-09"
+               due-to="">
+         Added read-only DEFLATE64 support to ZIP archives and as
+         stand-alone CompressorInputStream.
        </action>
      </release>
      <release version="1.15" date="2017-10-17"

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/b18ef2a1/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/b18ef2a1/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/b18ef2a1/src/main/java/org/apache/commons/compress/archivers/zip/ZipUtil.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/b18ef2a1/src/site/xdoc/examples.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/b18ef2a1/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStreamTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/b18ef2a1/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java
----------------------------------------------------------------------
diff --cc 
src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java
index a6170b1,e29f080..8e07d7e
--- a/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java
+++ b/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java
@@@ -581,23 -581,24 +581,41 @@@ public class ZipFileTest 
          entry.setAlignment(3);
      }
  
 +    @Test
 +    public void nameSourceDefaultsToName() throws Exception {
 +        nameSource("bla.zip", "test1.xml", ZipArchiveEntry.NameSource.NAME);
 +    }
 +
 +    @Test
 +    public void nameSourceIsSetToUnicodeExtraField() throws Exception {
 +        nameSource("utf8-winzip-test.zip", "\u20AC_for_Dollar.txt",
 +                   ZipArchiveEntry.NameSource.UNICODE_EXTRA_FIELD);
 +    }
 +
 +    @Test
 +    public void nameSourceIsSetToEFS() throws Exception {
 +        nameSource("utf8-7zip-test.zip", "\u20AC_for_Dollar.txt",
 +                   ZipArchiveEntry.NameSource.NAME_WITH_EFS_FLAG);
 +    }
 +
+     /**
+      * @see "https://issues.apache.org/jira/browse/COMPRESS-380";
+      */
+     @Test
+     public void readDeflate64CompressedStream() throws Exception {
+         final File input = getFile("COMPRESS-380/COMPRESS-380-input");
+         final File archive = getFile("COMPRESS-380/COMPRESS-380.zip");
+         try (FileInputStream in = new FileInputStream(input);
+              ZipFile zf = new ZipFile(archive)) {
+             byte[] orig = IOUtils.toByteArray(in);
+             ZipArchiveEntry e = zf.getEntry("input2");
+             try (InputStream s = zf.getInputStream(e)) {
+                 byte[] fromZip = IOUtils.toByteArray(s);
+                 assertArrayEquals(orig, fromZip);
+             }
+         }
+     }
+ 
      private void assertAllReadMethods(byte[] expected, ZipFile zipFile, 
ZipArchiveEntry entry) {
          // simple IOUtil read
          try (InputStream stream = zf.getInputStream(entry)) {

Reply via email to