You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by kr...@apache.org on 2014/12/18 21:58:00 UTC

svn commit: r1646532 - in /commons/proper/compress/trunk/src: main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java test/java/org/apache/commons/compress/archivers/ZipTestCase.java

Author: krosenvold
Date: Thu Dec 18 20:58:00 2014
New Revision: 1646532

URL: http://svn.apache.org/r1646532
Log:
COMPRESS-296 Parallel compression. Add support for cloning ZipArchiveOutputStream

With these changes it is possible to realize parallel compression. There is one more class coming that coordinates it all

Modified:
    commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java
    commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ZipTestCase.java

Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java?rev=1646532&r1=1646531&r2=1646532&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java Thu Dec 18 20:58:00 2014
@@ -505,6 +505,24 @@ public class ZipArchiveOutputStream exte
     }
 
     /**
+     * Make a copy of this stream with all its settings, but point to a new file.
+     * Used for scatter/gather operations to make several streams from a user-supplied master.
+     *
+     * @param newFile The file to use for the copy of this stream
+     * @return A copy of this stream
+     */
+    public ZipArchiveOutputStream cloneWith(File newFile) throws IOException {
+        ZipArchiveOutputStream zos = new ZipArchiveOutputStream(newFile);
+        zos.setCreateUnicodeExtraFields(createUnicodeExtraFields);
+        zos.setMethod(method);
+        zos.setEncoding(encoding);
+        zos.setFallbackToUTF8(fallbackToUTF8);
+        zos.setUseLanguageEncodingFlag(useUTF8Flag);
+        zos.setUseZip64(zip64Mode);
+        return zos;
+    }
+
+    /**
      * Ensures all bytes sent to the deflater are written to the stream.
      */
     private void flushDeflater() throws IOException {

Modified: commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ZipTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ZipTestCase.java?rev=1646532&r1=1646531&r2=1646532&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ZipTestCase.java (original)
+++ commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ZipTestCase.java Thu Dec 18 20:58:00 2014
@@ -294,6 +294,18 @@ public final class ZipTestCase extends A
     };
 
 
+    public void testCloneZipOutputStream( ) throws IOException {
+        File tempDir = createTempDir();
+        File fred = new File(tempDir, "fred");
+        ZipArchiveOutputStream zipArchiveOutputStream = new ZipArchiveOutputStream(fred);
+        File frank = new File(tempDir, "frank");
+        ZipArchiveOutputStream actual = zipArchiveOutputStream.cloneWith(frank);
+        zipArchiveOutputStream.close();
+        actual.close();
+        assertTrue( fred.exists());
+        assertTrue( frank.exists());
+    }
+
     public void testCopyRawEntriesFromFile
             ()
             throws IOException {