You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2005/09/28 21:08:13 UTC
svn commit: r292261 - in
/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs: Expand.java
Untar.java
Author: bodewig
Date: Wed Sep 28 12:08:09 2005
New Revision: 292261
URL: http://svn.apache.org/viewcvs?rev=292261&view=rev
Log:
resource collection support for unzip/jar/war/tar
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Expand.java
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Untar.java
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Expand.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Expand.java?rev=292261&r1=292260&r2=292261&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Expand.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Expand.java Wed Sep 28 12:08:09 2005
@@ -24,6 +24,7 @@
import java.io.InputStream;
import java.util.Date;
import java.util.Enumeration;
+import java.util.Iterator;
import java.util.Vector;
import org.apache.tools.ant.BuildException;
@@ -33,6 +34,10 @@
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Mapper;
import org.apache.tools.ant.types.PatternSet;
+import org.apache.tools.ant.types.Resource;
+import org.apache.tools.ant.types.ResourceCollection;
+import org.apache.tools.ant.types.resources.FileResource;
+import org.apache.tools.ant.types.resources.Union;
import org.apache.tools.ant.types.selectors.SelectorUtils;
import org.apache.tools.ant.util.FileNameMapper;
import org.apache.tools.ant.util.FileUtils;
@@ -56,7 +61,7 @@
private boolean overwrite = true;
private Mapper mapperElement = null;
private Vector patternsets = new Vector();
- private Vector filesets = new Vector();
+ private Union resources = new Union();
private static final String NATIVE_ENCODING = "native-encoding";
@@ -76,8 +81,8 @@
log("!! expand is deprecated. Use unzip instead. !!");
}
- if (source == null && filesets.size() == 0) {
- throw new BuildException("src attribute and/or filesets must be "
+ if (source == null && resources.size() == 0) {
+ throw new BuildException("src attribute and/or resources must be "
+ "specified");
}
@@ -98,19 +103,19 @@
expandFile(FILE_UTILS, source, dest);
}
}
- if (filesets.size() > 0) {
- for (int j = 0, size = filesets.size(); j < size; j++) {
- FileSet fs = (FileSet) filesets.elementAt(j);
- DirectoryScanner ds = fs.getDirectoryScanner(getProject());
- File fromDir = fs.getDir(getProject());
-
- String[] files = ds.getIncludedFiles();
- for (int i = 0; i < files.length; ++i) {
- File file = new File(fromDir, files[i]);
- expandFile(FILE_UTILS, file, dest);
- }
- }
- }
+ Iterator iter = resources.iterator();
+ while (iter.hasNext()) {
+ Resource r = (Resource) iter.next();
+ if (!r.isExists()) {
+ continue;
+ }
+
+ if (r instanceof FileResource) {
+ expandFile(FILE_UTILS, ((FileResource) r).getFile(), dest);
+ } else {
+ expandResource(r, dest);
+ }
+ }
}
/**
@@ -144,6 +149,17 @@
}
/**
+ * This method is to be overridden by extending unarchival tasks.
+ *
+ * @param r the source resource
+ * @param dir the destination directory
+ */
+ protected void expandResource(Resource srcR, File dir) {
+ throw new BuildException("only filesystem based resources are"
+ + " supported by this task.");
+ }
+
+ /**
* get a mapper for a file
* @return a filenamemapper for a file
*/
@@ -322,7 +338,16 @@
* @param set a file set
*/
public void addFileset(FileSet set) {
- filesets.addElement(set);
+ add(set);
+ }
+
+ /**
+ * Add a resource collection.
+ * @param rc a resource collection.
+ * @since Ant 1.7
+ */
+ public void add(ResourceCollection rc) {
+ resources.add(rc);
}
/**
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Untar.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Untar.java?rev=292261&r1=292260&r2=292261&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Untar.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Untar.java Wed Sep 28 12:08:09 2005
@@ -27,6 +27,7 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.EnumeratedAttribute;
+import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.util.FileNameMapper;
import org.apache.tools.ant.util.FileUtils;
import org.apache.tools.bzip2.CBZip2InputStream;
@@ -91,34 +92,62 @@
*/
protected void expandFile(FileUtils fileUtils, File srcF, File dir) {
FileInputStream fis = null;
- TarInputStream tis = null;
try {
- log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO);
- fis = new FileInputStream(srcF);
- tis = new TarInputStream(
- compression.decompress(srcF, new BufferedInputStream(fis)));
- TarEntry te = null;
- FileNameMapper mapper = getMapper();
- while ((te = tis.getNextEntry()) != null) {
- extractFile(fileUtils, srcF, dir, tis,
- te.getName(), te.getModTime(),
- te.isDirectory(), mapper);
- }
- log("expand complete", Project.MSG_VERBOSE);
-
+ fis = new FileInputStream(srcF);
+ expandStream(srcF.getPath(), fis, dir);
} catch (IOException ioe) {
throw new BuildException("Error while expanding " + srcF.getPath(),
ioe, getLocation());
} finally {
- FileUtils.close(tis);
- if (tis == null) {
- FileUtils.close(fis);
- }
-
+ FileUtils.close(fis);
}
}
/**
+ * This method is to be overridden by extending unarchival tasks.
+ *
+ * @param r the source resource
+ * @param dir the destination directory
+ * @since Ant 1.7
+ */
+ protected void expandResource(Resource srcR, File dir) {
+ InputStream i = null;
+ try {
+ i = srcR.getInputStream();
+ expandStream(srcR.getName(), i, dir);
+ } catch (IOException ioe) {
+ throw new BuildException("Error while expanding " + srcR.getName(),
+ ioe, getLocation());
+ } finally {
+ FileUtils.close(i);
+ }
+ }
+
+ /**
+ * @since Ant 1.7
+ */
+ private void expandStream(String name, InputStream stream, File dir)
+ throws IOException {
+ TarInputStream tis = null;
+ try {
+ tis =
+ new TarInputStream(compression.decompress(name,
+ new BufferedInputStream(stream)));
+ log("Expanding: " + name + " into " + dir, Project.MSG_INFO);
+ TarEntry te = null;
+ FileNameMapper mapper = getMapper();
+ while ((te = tis.getNextEntry()) != null) {
+ extractFile(FileUtils.getFileUtils(), null, dir, tis,
+ te.getName(), te.getModTime(),
+ te.isDirectory(), mapper);
+ }
+ log("expand complete", Project.MSG_VERBOSE);
+ } finally {
+ FileUtils.close(tis);
+ }
+ }
+
+ /**
* Valid Modes for Compression attribute to Untar Task
*
*/
@@ -168,7 +197,7 @@
* @exception BuildException thrown if bzip stream does not
* start with expected magic values
*/
- private InputStream decompress(final File file,
+ private InputStream decompress(final String name,
final InputStream istream)
throws IOException, BuildException {
final String v = getValue();
@@ -180,7 +209,7 @@
for (int i = 0; i < magic.length; i++) {
if (istream.read() != magic[i]) {
throw new BuildException(
- "Invalid bz2 file." + file.toString());
+ "Invalid bz2 file." + name);
}
}
return new CBZip2InputStream(istream);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org