From de5e98ecea40d4b8fedb1980e9b8f97186160310 Mon Sep 17 00:00:00 2001
From: Stefan Bodewig
++
+ +Attribute +Description +Required ++ +cache +Whether to cache results +No, 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.