Browse Source

provide proper control over caching in <resources>

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@806570 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 16 years ago
parent
commit
de5e98ecea
4 changed files with 41 additions and 7 deletions
  1. +3
    -0
      WHATSNEW
  2. +13
    -0
      docs/manual/CoreTypes/resources.html
  3. +6
    -1
      src/main/org/apache/tools/ant/taskdefs/Delete.java
  4. +19
    -6
      src/main/org/apache/tools/ant/types/resources/Resources.java

+ 3
- 0
WHATSNEW View File

@@ -872,6 +872,9 @@ Other changes:
* <propertyfile> now can delete entries. * <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 Changes from Ant 1.7.0 TO Ant 1.7.1
============================================= =============================================




+ 13
- 0
docs/manual/CoreTypes/resources.html View File

@@ -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 preserving the order of nested collections as well as
duplicate resources (contrast with <a href="#union">union</a>). duplicate resources (contrast with <a href="#union">union</a>).
</p> </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> <h4><a name="files">files</a></h4>
<p>A group of files. These files are matched by <b>absolute</b> patterns <p>A group of files. These files are matched by <b>absolute</b> patterns


+ 6
- 1
src/main/org/apache/tools/ant/taskdefs/Delete.java View File

@@ -214,7 +214,10 @@ public class Delete extends MatchingTask {
if (rc == null) { if (rc == null) {
return; return;
} }
rcs = (rcs == null) ? new Resources() : rcs;
if (rcs == null) {
rcs = new Resources();
rcs.setCache(true);
}
rcs.add(rc); rcs.add(rc);
} }


@@ -579,8 +582,10 @@ public class Delete extends MatchingTask {
} }
Resources resourcesToDelete = new Resources(); Resources resourcesToDelete = new Resources();
resourcesToDelete.setProject(getProject()); resourcesToDelete.setProject(getProject());
resourcesToDelete.setCache(true);
Resources filesetDirs = new Resources(); Resources filesetDirs = new Resources();
filesetDirs.setProject(getProject()); filesetDirs.setProject(getProject());
filesetDirs.setCache(true);
FileSet implicit = null; FileSet implicit = null;
if (usedMatchingTask && dir != null && dir.isDirectory()) { if (usedMatchingTask && dir != null && dir.isDirectory()) {
//add the files from the default fileset: //add the files from the default fileset:


+ 19
- 6
src/main/org/apache/tools/ant/types/resources/Resources.java View File

@@ -67,21 +67,25 @@ public class Resources extends DataType implements ResourceCollection {
}; };


private class MyCollection extends AbstractCollection { private class MyCollection extends AbstractCollection {
private Collection cache;
private Collection cached;


MyCollection() { MyCollection() {
} }
public int size() { public int size() {
return getCache().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() { 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 class MyIterator implements Iterator {
private Iterator rci = getNested().iterator(); private Iterator rci = getNested().iterator();
@@ -109,6 +113,7 @@ public class Resources extends DataType implements ResourceCollection {


private Vector rc; private Vector rc;
private Collection coll; private Collection coll;
private boolean cache = false;


/** /**
* Create a new Resources. * Create a new Resources.
@@ -124,6 +129,14 @@ public class Resources extends DataType implements ResourceCollection {
setProject(project); setProject(project);
} }


/**
* Set whether to cache collections.
* @param b boolean cache flag.
*/
public synchronized void setCache(boolean b) {
cache = b;
}

/** /**
* Add a ResourceCollection. * Add a ResourceCollection.
* @param c the ResourceCollection to add. * @param c the ResourceCollection to add.


Loading…
Cancel
Save