diff --git a/WHATSNEW b/WHATSNEW index 39afff14e..2461c218c 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -872,6 +872,9 @@ Other changes: * now can delete entries. + * The resource collection can now optionally cache its + contents. + Changes from Ant 1.7.0 TO Ant 1.7.1 ============================================= diff --git a/docs/manual/CoreTypes/resources.html b/docs/manual/CoreTypes/resources.html index f73bb4828..e6bcb084f 100644 --- a/docs/manual/CoreTypes/resources.html +++ b/docs/manual/CoreTypes/resources.html @@ -363,6 +363,19 @@ Ant's "legacy" datatypes have been modified to behave as Resource Collections: preserving the order of nested collections as well as duplicate resources (contrast with union).

+
+ + + + + + + + + + + +
AttributeDescriptionRequired
cacheWhether to cache resultsNo, default false

files

A group of files. These files are matched by absolute patterns diff --git a/src/main/org/apache/tools/ant/taskdefs/Delete.java b/src/main/org/apache/tools/ant/taskdefs/Delete.java index b1008494a..8042e15be 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Delete.java +++ b/src/main/org/apache/tools/ant/taskdefs/Delete.java @@ -214,7 +214,10 @@ public class Delete extends MatchingTask { if (rc == null) { return; } - rcs = (rcs == null) ? new Resources() : rcs; + if (rcs == null) { + rcs = new Resources(); + rcs.setCache(true); + } rcs.add(rc); } @@ -579,8 +582,10 @@ public class Delete extends MatchingTask { } Resources resourcesToDelete = new Resources(); resourcesToDelete.setProject(getProject()); + resourcesToDelete.setCache(true); Resources filesetDirs = new Resources(); filesetDirs.setProject(getProject()); + filesetDirs.setCache(true); FileSet implicit = null; if (usedMatchingTask && dir != null && dir.isDirectory()) { //add the files from the default fileset: diff --git a/src/main/org/apache/tools/ant/types/resources/Resources.java b/src/main/org/apache/tools/ant/types/resources/Resources.java index 6ffba542e..4c40c5fb5 100644 --- a/src/main/org/apache/tools/ant/types/resources/Resources.java +++ b/src/main/org/apache/tools/ant/types/resources/Resources.java @@ -67,21 +67,25 @@ public class Resources extends DataType implements ResourceCollection { }; private class MyCollection extends AbstractCollection { - private Collection cache; + private Collection cached; MyCollection() { } public int size() { return getCache().size(); } - public synchronized Iterator iterator() { - return cache != null ? cache.iterator() : new MyIterator(); + public Iterator iterator() { + return getCache().iterator(); } private synchronized Collection getCache() { - if (cache == null) { - cache = CollectionUtils.asCollection(new MyIterator()); + Collection coll = cached; + if (coll == null) { + coll = CollectionUtils.asCollection(new MyIterator()); + if (cache) { + cached = coll; + } } - return cache; + return coll; } private class MyIterator implements Iterator { private Iterator rci = getNested().iterator(); @@ -109,6 +113,7 @@ public class Resources extends DataType implements ResourceCollection { private Vector rc; private Collection coll; + private boolean cache = false; /** * Create a new Resources. @@ -124,6 +129,14 @@ public class Resources extends DataType implements ResourceCollection { setProject(project); } + /** + * Set whether to cache collections. + * @param b boolean cache flag. + */ + public synchronized void setCache(boolean b) { + cache = b; + } + /** * Add a ResourceCollection. * @param c the ResourceCollection to add.