Author: bodewig
Date: Tue Aug 25 04:20:50 2009
New Revision: 807472

URL: http://svn.apache.org/viewvc?rev=807472&view=rev
Log:
port level from core <zip>

Modified:
    
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Ar.java
    
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
    
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Cpio.java
    
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Tar.java
    
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
    ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml

Modified: 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Ar.java
URL: 
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Ar.java?rev=807472&r1=807471&r2=807472&view=diff
==============================================================================
--- 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Ar.java
 (original)
+++ 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Ar.java
 Tue Aug 25 04:20:50 2009
@@ -33,7 +33,7 @@
         + " directory entries";
 
     public Ar() {
-        super(new ArStreamFactory());
+        setFactory(new ArStreamFactory());
         setBuilder(
               new ArchiveBase.EntryBuilder() {
                 public ArchiveEntry buildEntry(ArchiveBase.ResourceWithFlags 
r) {

Modified: 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
URL: 
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java?rev=807472&r1=807471&r2=807472&view=diff
==============================================================================
--- 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
 (original)
+++ 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
 Tue Aug 25 04:20:50 2009
@@ -65,7 +65,7 @@
  * Base implementation of tasks creating archives.
  */
 public abstract class ArchiveBase extends Task {
-    private final StreamFactory factory;
+    private StreamFactory factory;
     private EntryBuilder builder;
 
     private Resource dest;
@@ -77,7 +77,9 @@
     private boolean roundUp = true;
     private boolean preserveLeadingSlashes = false;
 
-    protected ArchiveBase(StreamFactory factory) {
+    protected ArchiveBase() {}
+
+    protected final void setFactory(StreamFactory factory) {
         this.factory = factory;
     }
 
@@ -196,6 +198,10 @@
      * Argument validation.
      */
     protected void validate() throws BuildException {
+        if (factory == null) {
+            throw new BuildException("subclass didn't provide a factory"
+                                     + " instance");
+        }
         if (builder == null) {
             throw new BuildException("subclass didn't provide a builder"
                                      + " instance");

Modified: 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Cpio.java
URL: 
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Cpio.java?rev=807472&r1=807471&r2=807472&view=diff
==============================================================================
--- 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Cpio.java
 (original)
+++ 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Cpio.java
 Tue Aug 25 04:20:50 2009
@@ -28,7 +28,7 @@
  */
 public class Cpio extends ArchiveBase {
     public Cpio() {
-        super(new CpioStreamFactory());
+        setFactory(new CpioStreamFactory());
         setBuilder(
               new ArchiveBase.EntryBuilder() {
                 public ArchiveEntry buildEntry(ArchiveBase.ResourceWithFlags 
r) {

Modified: 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Tar.java
URL: 
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Tar.java?rev=807472&r1=807471&r2=807472&view=diff
==============================================================================
--- 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Tar.java
 (original)
+++ 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Tar.java
 Tue Aug 25 04:20:50 2009
@@ -29,7 +29,7 @@
  */
 public class Tar extends ArchiveBase {
     public Tar() {
-        super(new TarStreamFactory());
+        setFactory(new TarStreamFactory());
         setBuilder(
               new ArchiveBase.EntryBuilder() {
                 public ArchiveEntry buildEntry(ArchiveBase.ResourceWithFlags 
r) {

Modified: 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
URL: 
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java?rev=807472&r1=807471&r2=807472&view=diff
==============================================================================
--- 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
 (original)
+++ 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
 Tue Aug 25 04:20:50 2009
@@ -18,17 +18,35 @@
 
 package org.apache.ant.compress.taskdefs;
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.zip.Deflater;
+
 import org.apache.ant.compress.util.ZipStreamFactory;
 import org.apache.commons.compress.archivers.ArchiveEntry;
+import org.apache.commons.compress.archivers.ArchiveOutputStream;
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
+import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
 import org.apache.tools.ant.types.ArchiveFileSet;
 
 /**
  * Creates zip archives.
  */
 public class Zip extends ArchiveBase {
+    private int level = Deflater.DEFAULT_COMPRESSION;
+
     public Zip() {
-        super(new ZipStreamFactory());
+        setFactory(new ZipStreamFactory() {
+                public ArchiveOutputStream getArchiveStream(OutputStream 
stream,
+                                                            String encoding)
+        throws IOException {
+                    ZipArchiveOutputStream o =
+                        (ZipArchiveOutputStream) super.getArchiveStream(stream,
+                                                                        
encoding);
+                    o.setLevel(level);
+                    return o;
+                }
+            });
         setBuilder(
               new ArchiveBase.EntryBuilder() {
                 public ArchiveEntry buildEntry(ArchiveBase.ResourceWithFlags 
r) {
@@ -60,4 +78,12 @@
             });
     }
 
+    /**
+     * Set the compression level to use.  Default is
+     * Deflater.DEFAULT_COMPRESSION.
+     * @param level compression level.
+     */
+    public void setLevel(int level) {
+        this.level = level;
+    }
 }
\ No newline at end of file

Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml
URL: 
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml?rev=807472&r1=807471&r2=807472&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml Tue Aug 
25 04:20:50 2009
@@ -354,4 +354,26 @@
       </cmp:zipentry>
     </assertResourceDoesntExist>
   </target>
+
+  <target name="testLevel" depends="setUp">
+    <cmp:zip destfile="${output}/compressed.zip">
+      <file file="${ant.file}"/>
+    </cmp:zip>
+    <cmp:zip destfile="${output}/uncompressed.zip" level="0">
+      <file file="${ant.file}"/>
+    </cmp:zip>
+    <au:assertTrue>
+      <resourcecount count="2">
+        <fileset dir="${output}"/>
+      </resourcecount>
+    </au:assertTrue>
+    <au:assertTrue>
+      <resourcecount count="1">
+        <fileset dir="${output}">
+          <size value="5" units="Ki" when="less"/>
+        </fileset>
+      </resourcecount>
+    </au:assertTrue>
+  </target>
+
 </project>


Reply via email to