bodewig 2003/05/02 07:44:54
Modified: . WHATSNEW
src/main/org/apache/tools/ant/taskdefs Zip.java
Log:
Don't update archives because it lacks directory entries when we are
not going to add directory entries either.
PR: 19449
Revision Changes Path
1.408 +3 -0 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.407
retrieving revision 1.408
diff -u -r1.407 -r1.408
--- WHATSNEW 2 May 2003 08:18:36 -0000 1.407
+++ WHATSNEW 2 May 2003 14:44:53 -0000 1.408
@@ -112,6 +112,9 @@
* file names that include spaces need to be quoted inside the @argfile
argument using forked <javac> and JDK 1.4. Bugzilla Report 10499.
+* Setting filesonly to true in <zip> and related tasks would cause the
+ archives to be always recreated. Bugzilla Report 19449.
+
Other changes:
--------------
* Six new Clearcase tasks added.
1.105 +32 -0 ant/src/main/org/apache/tools/ant/taskdefs/Zip.java
Index: Zip.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Zip.java,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -r1.104 -r1.105
--- Zip.java 18 Apr 2003 22:02:58 -0000 1.104
+++ Zip.java 2 May 2003 14:44:53 -0000 1.105
@@ -812,6 +812,10 @@
initialResources[i],
myMapper,
getZipScanner());
+ if (doFilesonly) {
+ newerResources[i] = selectFileResources(newerResources[i]);
+ }
+
needsUpdate = needsUpdate || (newerResources[i].length > 0);
if (needsUpdate && !doUpdate) {
@@ -1114,6 +1118,34 @@
}
}
return true;
+ }
+
+ /**
+ * Drops all non-file resources from the given array.
+ *
+ * @since Ant 1.6
+ */
+ protected Resource[] selectFileResources(Resource[] orig) {
+ if (orig.length == 0) {
+ return orig;
+ }
+
+ Vector v = new Vector(orig.length);
+ for (int i = 0; i < orig.length; i++) {
+ if (!orig[i].isDirectory()) {
+ v.addElement(orig[i]);
+ } else {
+ log("Ignoring directory " + orig[i].getName()
+ + " as only files will be added.", Project.MSG_VERBOSE);
+ }
+ }
+
+ if (v.size() != orig.length) {
+ Resource[] r = new Resource[v.size()];
+ v.copyInto(r);
+ return r;
+ }
+ return orig;
}
/**