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)) {