You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2009/09/01 05:04:04 UTC
svn commit: r809805 - in /ant/sandbox/antlibs/compress/trunk/src:
main/org/apache/ant/compress/taskdefs/ tests/antunit/
Author: bodewig
Date: Tue Sep 1 03:04:04 2009
New Revision: 809805
URL: http://svn.apache.org/viewvc?rev=809805&view=rev
Log:
<gzip> and <bzip2> can now wrap an archiving task
Modified:
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/BZip2.java
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/GZip.java
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/PackBase.java
ant/sandbox/antlibs/compress/trunk/src/tests/antunit/bzip2-test.xml
ant/sandbox/antlibs/compress/trunk/src/tests/antunit/gzip-test.xml
Modified: ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/BZip2.java
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/BZip2.java?rev=809805&r1=809804&r2=809805&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/BZip2.java (original)
+++ ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/BZip2.java Tue Sep 1 03:04:04 2009
@@ -18,7 +18,10 @@
package org.apache.ant.compress.taskdefs;
+import org.apache.ant.compress.resources.BZip2Resource;
+import org.apache.ant.compress.resources.CommonsCompressCompressorResource;
import org.apache.ant.compress.util.BZip2StreamFactory;
+import org.apache.tools.ant.types.Resource;
/**
* Compresses using gzip.
@@ -26,7 +29,12 @@
public final class BZip2 extends PackBase {
public BZip2() {
- super(new BZip2StreamFactory());
+ super(new BZip2StreamFactory(),
+ new PackBase.ResourceWrapper() {
+ public CommonsCompressCompressorResource wrap(Resource dest) {
+ return new BZip2Resource(dest);
+ }
+ });
}
}
\ No newline at end of file
Modified: ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/GZip.java
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/GZip.java?rev=809805&r1=809804&r2=809805&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/GZip.java (original)
+++ ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/GZip.java Tue Sep 1 03:04:04 2009
@@ -18,7 +18,10 @@
package org.apache.ant.compress.taskdefs;
+import org.apache.ant.compress.resources.CommonsCompressCompressorResource;
+import org.apache.ant.compress.resources.GZipResource;
import org.apache.ant.compress.util.GZipStreamFactory;
+import org.apache.tools.ant.types.Resource;
/**
* Compresses using gzip.
@@ -26,7 +29,12 @@
public final class GZip extends PackBase {
public GZip() {
- super(new GZipStreamFactory());
+ super(new GZipStreamFactory(),
+ new PackBase.ResourceWrapper() {
+ public CommonsCompressCompressorResource wrap(Resource dest) {
+ return new GZipResource(dest);
+ }
+ });
}
}
\ No newline at end of file
Modified: ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/PackBase.java
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/PackBase.java?rev=809805&r1=809804&r2=809805&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/PackBase.java (original)
+++ ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/PackBase.java Tue Sep 1 03:04:04 2009
@@ -25,6 +25,7 @@
import java.io.OutputStream;
import java.util.Iterator;
+import org.apache.ant.compress.resources.CommonsCompressCompressorResource;
import org.apache.ant.compress.util.CompressorStreamFactory;
import org.apache.commons.compress.utils.IOUtils;
import org.apache.tools.ant.BuildException;
@@ -43,12 +44,16 @@
private static final int BUFFER_SIZE = 8 * 1024;
private final CompressorStreamFactory factory;
+ private final ResourceWrapper wrapper;
private Resource src;
+ private ArchiveBase srcTask;
private Resource dest;
- protected PackBase(CompressorStreamFactory factory) {
+ protected PackBase(CompressorStreamFactory factory,
+ ResourceWrapper wrapper) {
this.factory = factory;
+ this.wrapper = wrapper;
}
/**
@@ -91,8 +96,8 @@
* @param src resource to expand
*/
public void setSrc(Resource src) {
- if (this.src != null) {
- throw new BuildException("Can only have one source resource.");
+ if (this.src != null || srcTask != null) {
+ throw new BuildException("Can only have one source.");
}
if (src.isDirectory()) {
throw new BuildException("the source can't be a directory");
@@ -110,16 +115,24 @@
}
}
+ public void add(ArchiveBase task) {
+ if (src != null || srcTask != null) {
+ throw new BuildException("Can only have one source.");
+ }
+ srcTask = task;
+ }
+
/**
* validation routine
* @throws BuildException if anything is invalid
*/
private void validate() throws BuildException {
- if (src == null) {
- throw new BuildException("source resource is required.",
+ if (src == null && srcTask == null) {
+ throw new BuildException("source is required.",
getLocation());
}
+ if (src != null) {
if (src.isDirectory()) {
throw new BuildException("source resource must not "
+ "represent a directory!", getLocation());
@@ -128,6 +141,7 @@
if (!src.isExists()) {
throw new BuildException("source resource must exist.");
}
+ }
if (dest == null) {
throw new BuildException("dest resource is required.",
@@ -148,6 +162,11 @@
public void execute() throws BuildException {
validate();
+ if (srcTask != null) {
+ srcTask.setDest(wrapper.wrap(dest));
+ srcTask.setTaskName(getTaskName());
+ srcTask.execute();
+ } else
if (dest.isExists() && dest.getLastModified() > src.getLastModified()) {
log("Nothing to do: " + dest.getName() + " is up to date.");
} else {
@@ -176,4 +195,8 @@
FileUtils.close(out);
}
}
+
+ public static interface ResourceWrapper {
+ CommonsCompressCompressorResource wrap(Resource dest);
+ }
}
Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/bzip2-test.xml
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/bzip2-test.xml?rev=809805&r1=809804&r2=809805&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/bzip2-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/bzip2-test.xml Tue Sep 1 03:04:04 2009
@@ -17,6 +17,7 @@
-->
<project default="antunit"
xmlns:au="antlib:org.apache.ant.antunit"
+ xmlns:cond="antlib:org.apache.tools.ant.types.conditions"
xmlns:cmp="antlib:org.apache.ant.compress">
<import file="antunit-base.xml" />
@@ -29,7 +30,7 @@
</target>
<target name="testFailNone" depends="setUp">
- <au:expectfailure expectedmessage="source resource is required.">
+ <au:expectfailure expectedmessage="source is required.">
<cmp:bzip2 destfile="${output}/file.bz2">
<fileset dir="${output}/empty" />
</cmp:bzip2>
@@ -37,7 +38,7 @@
</target>
<target name="testFailTwo" depends="setUp">
- <au:expectfailure expectedmessage="Can only have one source resource.">
+ <au:expectfailure expectedmessage="Can only have one source.">
<cmp:bzip2 destfile="${output}/file.bz2">
<fileset dir="${output}" />
</cmp:bzip2>
@@ -95,4 +96,24 @@
<au:assertFileExists file="${output}/asf-logo-huge.tar.bz2"/>
</target>
+ <target name="testNestedTask" depends="setUp">
+ <cmp:bzip2 destfile="${output}/asf-logo.tar.bz2">
+ <cmp:tar>
+ <cmp:cpiofileset src="../resources/asf-logo.gif.cpio"
+ includes="asf-logo.gif"/>
+ </cmp:tar>
+ </cmp:bzip2>
+ <au:assertFileExists file="${output}/asf-logo.tar.bz2"/>
+ <au:assertTrue>
+ <cond:islastmodified datetime="2009-07-31-20:11:13 +0200"
+ pattern="yyyy-MM-dd-HH:mm:ss Z">
+ <cmp:tarentry name="asf-logo.gif">
+ <bzip2resource>
+ <file file="${output}/asf-logo.tar.bz2"/>
+ </bzip2resource>
+ </cmp:tarentry>
+ </cond:islastmodified>
+ </au:assertTrue>
+ </target>
+
</project>
Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/gzip-test.xml
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/gzip-test.xml?rev=809805&r1=809804&r2=809805&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/gzip-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/gzip-test.xml Tue Sep 1 03:04:04 2009
@@ -17,6 +17,7 @@
-->
<project default="antunit"
xmlns:au="antlib:org.apache.ant.antunit"
+ xmlns:cond="antlib:org.apache.tools.ant.types.conditions"
xmlns:cmp="antlib:org.apache.ant.compress">
<import file="antunit-base.xml" />
@@ -29,7 +30,7 @@
</target>
<target name="testFailNone" depends="setUp">
- <au:expectfailure expectedmessage="source resource is required.">
+ <au:expectfailure expectedmessage="source is required.">
<cmp:gzip destfile="${output}/file.gz">
<fileset dir="${output}/empty" />
</cmp:gzip>
@@ -37,7 +38,7 @@
</target>
<target name="testFailTwo" depends="setUp">
- <au:expectfailure expectedmessage="Can only have one source resource.">
+ <au:expectfailure expectedmessage="Can only have one source.">
<cmp:gzip destfile="${output}/file.gz">
<fileset dir="${output}" />
</cmp:gzip>
@@ -85,4 +86,24 @@
destfile="${output}/asf-logo.gif.gz" />
<au:assertLogContains text="Nothing to do: asf-logo.gif.gz is up to date."/>
</target>
+
+ <target name="testNestedTask" depends="setUp">
+ <cmp:gzip destfile="${output}/asf-logo.tar.gz">
+ <cmp:tar>
+ <cmp:cpiofileset src="../resources/asf-logo.gif.cpio"
+ includes="asf-logo.gif"/>
+ </cmp:tar>
+ </cmp:gzip>
+ <au:assertFileExists file="${output}/asf-logo.tar.gz"/>
+ <au:assertTrue>
+ <cond:islastmodified datetime="2009-07-31-20:11:13 +0200"
+ pattern="yyyy-MM-dd-HH:mm:ss Z">
+ <cmp:tarentry name="asf-logo.gif">
+ <gzipresource>
+ <file file="${output}/asf-logo.tar.gz"/>
+ </gzipresource>
+ </cmp:tarentry>
+ </cond:islastmodified>
+ </au:assertTrue>
+ </target>
</project>