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>