Methods Summary |
---|
public synchronized void | add(org.apache.tools.ant.types.ResourceCollection c)Add a ResourceCollection to the container.
if (isReference()) {
throw noChildrenAllowed();
}
if (c == null) {
return;
}
rc.add(c);
FailFast.invalidate(this);
coll = null;
setChecked(false);
|
public synchronized void | addAll(java.util.Collection c)Add the Collection of ResourceCollections to the container.
if (isReference()) {
throw noChildrenAllowed();
}
try {
for (Iterator i = c.iterator(); i.hasNext();) {
add((ResourceCollection) i.next());
}
} catch (ClassCastException e) {
throw new BuildException(e);
}
|
private synchronized java.util.Collection | cacheCollection()
if (coll == null || !isCache()) {
coll = getCollection();
}
return coll;
|
public synchronized void | clear()Clear the container.
if (isReference()) {
throw noChildrenAllowed();
}
rc.clear();
FailFast.invalidate(this);
coll = null;
setChecked(false);
|
public java.lang.Object | clone()Implement clone. The set of nested resource
collections is shallowly cloned.
try {
BaseResourceCollectionContainer c
= (BaseResourceCollectionContainer) super.clone();
c.rc = new ArrayList(rc);
c.coll = null;
return c;
} catch (CloneNotSupportedException e) {
throw new BuildException(e);
}
|
protected synchronized void | dieOnCircularReference(java.util.Stack stk, org.apache.tools.ant.Project p)Overrides the version of DataType to recurse on all DataType
child elements that may have been added.
if (isChecked()) {
return;
}
if (isReference()) {
super.dieOnCircularReference(stk, p);
} else {
for (Iterator i = rc.iterator(); i.hasNext();) {
Object o = i.next();
if (o instanceof DataType) {
stk.push(o);
invokeCircularReferenceCheck((DataType) o, stk, p);
stk.pop();
}
}
setChecked(true);
}
|
protected abstract java.util.Collection | getCollection()Template method for subclasses to return a Collection object of Resources.
|
protected final synchronized java.util.List | getResourceCollections()Get the nested ResourceCollections.
dieOnCircularReference();
return Collections.unmodifiableList(rc);
|
public synchronized boolean | isCache()Learn whether to cache collections. Default is true .
return cache;
|
public synchronized boolean | isFilesystemOnly()Fulfill the ResourceCollection contract.
if (isReference()) {
return ((BaseResourceCollectionContainer) getCheckedRef()).isFilesystemOnly();
}
dieOnCircularReference();
//first the easy way, if all children are filesystem-only, return true:
boolean goEarly = true;
for (Iterator i = rc.iterator(); goEarly && i.hasNext();) {
goEarly &= ((ResourceCollection) i.next()).isFilesystemOnly();
}
if (goEarly) {
return true;
}
/* now check each Resource in case the child only
lets through files from any children IT may have: */
for (Iterator i = cacheCollection().iterator(); i.hasNext();) {
if (!(i.next() instanceof FileResource)) {
return false;
}
}
return true;
|
public final synchronized java.util.Iterator | iterator()Fulfill the ResourceCollection contract. The Iterator returned
will throw ConcurrentModificationExceptions if ResourceCollections
are added to this container while the Iterator is in use.
if (isReference()) {
return ((BaseResourceCollectionContainer) getCheckedRef()).iterator();
}
dieOnCircularReference();
return new FailFast(this, cacheCollection().iterator());
|
public synchronized void | setCache(boolean b)Set whether to cache collections.
cache = b;
|
public synchronized int | size()Fulfill the ResourceCollection contract.
if (isReference()) {
return ((BaseResourceCollectionContainer) getCheckedRef()).size();
}
dieOnCircularReference();
return cacheCollection().size();
|
public synchronized java.lang.String | toString()Format this BaseResourceCollectionContainer as a String.
if (isReference()) {
return getCheckedRef().toString();
}
if (cacheCollection().size() == 0) {
return "";
}
StringBuffer sb = new StringBuffer();
for (Iterator i = coll.iterator(); i.hasNext();) {
if (sb.length() > 0) {
sb.append(File.pathSeparatorChar);
}
sb.append(i.next());
}
return sb.toString();
|