whitespace
Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/5457e1a2 Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/5457e1a2 Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/5457e1a2 Branch: refs/heads/master Commit: 5457e1a23693695c3023a7416b2f60aabb299430 Parents: a53ab17 Author: Stefan Bodewig <bode...@apache.org> Authored: Wed Feb 24 15:48:35 2016 +0100 Committer: Stefan Bodewig <bode...@apache.org> Committed: Wed Feb 24 15:48:35 2016 +0100 ---------------------------------------------------------------------- .../compress/archivers/sevenz/SevenZFile.java | 41 ++++--- .../archivers/sevenz/SevenZFileTest.java | 106 +++++++++---------- 2 files changed, 73 insertions(+), 74 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-compress/blob/5457e1a2/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java index 60ffea8..4a86dd2 100644 --- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java +++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java @@ -811,25 +811,24 @@ public class SevenZFile implements Closeable { private void buildDecodingStream() throws IOException { final int folderIndex = archive.streamMap.fileFolderIndex[currentEntryIndex]; if (folderIndex < 0) { - deferredBlockStreams.clear(); + deferredBlockStreams.clear(); // TODO: previously it'd return an empty stream? - // new BoundedInputStream(new ByteArrayInputStream(new byte[0]), 0); + // new BoundedInputStream(new ByteArrayInputStream(new byte[0]), 0); return; } final SevenZArchiveEntry file = archive.files[currentEntryIndex]; if (currentFolderIndex == folderIndex) { - // (COMPRESS-320). - // The current entry is within the same (potentially opened) folder. The - // previous stream has to be fully decoded before we can start reading - // but don't do it eagerly -- if the user skips over the entire folder nothing - // is effectively decompressed. + // (COMPRESS-320). + // The current entry is within the same (potentially opened) folder. The + // previous stream has to be fully decoded before we can start reading + // but don't do it eagerly -- if the user skips over the entire folder nothing + // is effectively decompressed. - // need to advance the folder input stream past the current file file.setContentMethods(archive.files[currentEntryIndex - 1].getContentMethods()); } else { - // We're opening a new folder. Discard any queued streams/ folder stream. + // We're opening a new folder. Discard any queued streams/ folder stream. currentFolderIndex = folderIndex; - deferredBlockStreams.clear(); + deferredBlockStreams.clear(); if (currentFolderInputStream != null) { currentFolderInputStream.close(); currentFolderInputStream = null; @@ -885,7 +884,7 @@ public class SevenZFile implements Closeable { * if an I/O error has occurred */ public int read() throws IOException { - return getCurrentStream().read(); + return getCurrentStream().read(); } private InputStream getCurrentStream() throws IOException { @@ -894,18 +893,18 @@ public class SevenZFile implements Closeable { } while (deferredBlockStreams.size() > 1) { - // In solid compression mode we need to decompress all leading folder' - // streams to get access to an entry. We defer this until really needed - // so that entire blocks can be skipped without wasting time for decompression. - InputStream stream = deferredBlockStreams.remove(0); - IOUtils.skip(stream, Long.MAX_VALUE); - stream.close(); + // In solid compression mode we need to decompress all leading folder' + // streams to get access to an entry. We defer this until really needed + // so that entire blocks can be skipped without wasting time for decompression. + InputStream stream = deferredBlockStreams.remove(0); + IOUtils.skip(stream, Long.MAX_VALUE); + stream.close(); } - return deferredBlockStreams.get(0); - } + return deferredBlockStreams.get(0); + } - /** + /** * Reads data into an array of bytes. * * @param b the array to write data to @@ -914,7 +913,7 @@ public class SevenZFile implements Closeable { * if an I/O error has occurred */ public int read(byte[] b) throws IOException { - return read(b, 0, b.length); + return read(b, 0, b.length); } /** http://git-wip-us.apache.org/repos/asf/commons-compress/blob/5457e1a2/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 fe47652..a57d4cb 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 @@ -41,64 +41,64 @@ public class SevenZFileTest extends AbstractTestCase { // https://issues.apache.org/jira/browse/COMPRESS-320 @Test public void testRandomlySkippingEntries() throws Exception { - // Read sequential reference. - Map<String, byte[]> entriesByName = new HashMap<String, byte[]>(); - SevenZFile archive = new SevenZFile(getFile("COMPRESS-320/Copy.7z")); - SevenZArchiveEntry entry; - while ((entry = archive.getNextEntry()) != null) { - if (entry.hasStream()) { - entriesByName.put(entry.getName(), readFully(archive)); - } - } - archive.close(); + // Read sequential reference. + Map<String, byte[]> entriesByName = new HashMap<String, byte[]>(); + SevenZFile archive = new SevenZFile(getFile("COMPRESS-320/Copy.7z")); + SevenZArchiveEntry entry; + while ((entry = archive.getNextEntry()) != null) { + if (entry.hasStream()) { + entriesByName.put(entry.getName(), readFully(archive)); + } + } + archive.close(); - String[] variants = { - "BZip2-solid.7z", - "BZip2.7z", - "Copy-solid.7z", - "Copy.7z", - "Deflate-solid.7z", - "Deflate.7z", - "LZMA-solid.7z", - "LZMA.7z", - "LZMA2-solid.7z", - "LZMA2.7z", - // TODO: unsupported compression method. - // "PPMd-solid.7z", - // "PPMd.7z", - }; + String[] variants = { + "BZip2-solid.7z", + "BZip2.7z", + "Copy-solid.7z", + "Copy.7z", + "Deflate-solid.7z", + "Deflate.7z", + "LZMA-solid.7z", + "LZMA.7z", + "LZMA2-solid.7z", + "LZMA2.7z", + // TODO: unsupported compression method. + // "PPMd-solid.7z", + // "PPMd.7z", + }; - // TODO: use randomizedtesting for predictable, but different, randomness. - Random rnd = new Random(0xdeadbeef); - for (String fileName : variants) { - archive = new SevenZFile(getFile("COMPRESS-320/" + fileName)); + // TODO: use randomizedtesting for predictable, but different, randomness. + Random rnd = new Random(0xdeadbeef); + for (String fileName : variants) { + archive = new SevenZFile(getFile("COMPRESS-320/" + fileName)); - while ((entry = archive.getNextEntry()) != null) { - // Sometimes skip reading entries. - if (rnd.nextBoolean()) { - continue; - } + while ((entry = archive.getNextEntry()) != null) { + // Sometimes skip reading entries. + if (rnd.nextBoolean()) { + continue; + } - if (entry.hasStream()) { - assertTrue(entriesByName.containsKey(entry.getName())); - byte [] content = readFully(archive); - assertTrue("Content mismatch on: " + fileName + "!" + entry.getName(), - Arrays.equals(content, entriesByName.get(entry.getName()))); - } - } - - archive.close(); - } + if (entry.hasStream()) { + assertTrue(entriesByName.containsKey(entry.getName())); + byte [] content = readFully(archive); + assertTrue("Content mismatch on: " + fileName + "!" + entry.getName(), + Arrays.equals(content, entriesByName.get(entry.getName()))); + } + } + + archive.close(); + } } - private byte [] readFully(SevenZFile archive) throws IOException { - byte [] buf = new byte [1024]; - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - for (int len = 0; (len = archive.read(buf)) > 0;) { - baos.write(buf, 0, len); - } - return baos.toByteArray(); - } + private byte[] readFully(SevenZFile archive) throws IOException { + byte [] buf = new byte [1024]; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + for (int len = 0; (len = archive.read(buf)) > 0;) { + baos.write(buf, 0, len); + } + return baos.toByteArray(); + } @Test public void testAllEmptyFilesArchive() throws Exception { @@ -109,7 +109,7 @@ public class SevenZFileTest extends AbstractTestCase { archive.close(); } } - + @Test public void testHelloWorldHeaderCompressionOffCopy() throws Exception { checkHelloWorld("7z-hello-mhc-off-copy.7z");