Author: bodewig
Date: Fri Aug 21 14:29:51 2009
New Revision: 806570

URL: http://svn.apache.org/viewvc?rev=806570&view=rev
Log:
provide proper control over caching in <resources>

Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/docs/manual/CoreTypes/resources.html
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java
    ant/core/trunk/src/main/org/apache/tools/ant/types/resources/Resources.java

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=806570&r1=806569&r2=806570&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Fri Aug 21 14:29:51 2009
@@ -872,6 +872,9 @@
    
  * <propertyfile> now can delete entries.
 
+ * The <resources> resource collection can now optionally cache its
+   contents.
+
 Changes from Ant 1.7.0 TO Ant 1.7.1
 =============================================
 

Modified: ant/core/trunk/docs/manual/CoreTypes/resources.html
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/CoreTypes/resources.html?rev=806570&r1=806569&r2=806570&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/CoreTypes/resources.html (original)
+++ ant/core/trunk/docs/manual/CoreTypes/resources.html Fri Aug 21 14:29:51 2009
@@ -363,6 +363,19 @@
   preserving the order of nested collections as well as
   duplicate resources (contrast with <a href="#union">union</a>).
 </p>
+<blockquote>
+  <table border="1" cellpadding="2" cellspacing="0">
+    <tr>
+      <td valign="top"><b>Attribute</b></td>
+      <td valign="top"><b>Description</b></td>
+      <td align="center" valign="top"><b>Required</b></td>
+    </tr>
+    <tr>
+      <td valign="top">cache</td>
+      <td valign="top">Whether to cache results</td>
+      <td valign="top" align="center">No, default <i>false</i></td>
+    </tr>
+  </table>
 
 <h4><a name="files">files</a></h4>
 <p>A group of files. These files are matched by <b>absolute</b> patterns

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java?rev=806570&r1=806569&r2=806570&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java Fri Aug 
21 14:29:51 2009
@@ -214,7 +214,10 @@
         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 @@
         }
         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:

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/types/resources/Resources.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/types/resources/Resources.java?rev=806570&r1=806569&r2=806570&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/types/resources/Resources.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/types/resources/Resources.java 
Fri Aug 21 14:29:51 2009
@@ -67,21 +67,25 @@
     };
 
     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 @@
 
     private Vector rc;
     private Collection coll;
+    private boolean cache = false;
 
     /**
      * Create a new Resources.
@@ -125,6 +130,14 @@
     }
 
     /**
+     * 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.
      */


Reply via email to