FileDocCategorySizeDatePackage
BaseResourceCollectionWrapper.javaAPI DocApache Ant 1.706202Wed Dec 13 06:16:18 GMT 2006org.apache.tools.ant.types.resources

BaseResourceCollectionWrapper

public abstract class BaseResourceCollectionWrapper extends org.apache.tools.ant.types.DataType implements Cloneable, org.apache.tools.ant.types.ResourceCollection
Base class for a ResourceCollection that wraps a single nested ResourceCollection.
since
Ant 1.7

Fields Summary
private static final String
ONE_NESTED_MESSAGE
private org.apache.tools.ant.types.ResourceCollection
rc
private Collection
coll
private boolean
cache
Constructors Summary
Methods Summary
public synchronized voidadd(org.apache.tools.ant.types.ResourceCollection c)
Add a ResourceCollection to the container.

param
c the ResourceCollection to add.
throws
BuildException on error.

        if (isReference()) {
            throw noChildrenAllowed();
        }
        if (c == null) {
            return;
        }
        if (rc != null) {
            throw oneNested();
        }
        rc = c;
        setChecked(false);
    
private synchronized java.util.CollectioncacheCollection()

        if (coll == null || !isCache()) {
            coll = getCollection();
        }
        return coll;
    
protected synchronized voiddieOnCircularReference(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.

param
stk the stack of data types to use (recursively).
param
p the project to use to dereference the references.
throws
BuildException on error.

        if (isChecked()) {
            return;
        }
        if (isReference()) {
            super.dieOnCircularReference(stk, p);
        } else {
            if (rc instanceof DataType) {
                stk.push(rc);
                invokeCircularReferenceCheck((DataType) rc, stk, p);
                stk.pop();
            }
            setChecked(true);
        }
    
protected abstract java.util.CollectiongetCollection()
Template method for subclasses to return a Collection of Resources.

return
Collection.

protected final synchronized org.apache.tools.ant.types.ResourceCollectiongetResourceCollection()
Get the nested ResourceCollection.

return
a ResourceCollection.
throws
BuildException if no nested ResourceCollection has been provided.

        dieOnCircularReference();
        if (rc == null) {
            throw oneNested();
        }
        return rc;
    
public synchronized booleanisCache()
Learn whether to cache collections. Default is true.

return
boolean cache flag.

        return cache;
    
public synchronized booleanisFilesystemOnly()
Fulfill the ResourceCollection contract.

return
whether this is a filesystem-only resource collection.

        if (isReference()) {
            return ((BaseResourceCollectionContainer) getCheckedRef()).isFilesystemOnly();
        }
        dieOnCircularReference();

        if (rc == null || rc.isFilesystemOnly()) {
            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.Iteratoriterator()
Fulfill the ResourceCollection contract.

return
an Iterator of Resources.

        if (isReference()) {
            return ((BaseResourceCollectionWrapper) getCheckedRef()).iterator();
        }
        dieOnCircularReference();
        return new FailFast(this, cacheCollection().iterator());
    
private org.apache.tools.ant.BuildExceptiononeNested()

        return new BuildException(super.toString() + ONE_NESTED_MESSAGE);
    
public synchronized voidsetCache(boolean b)
Set whether to cache collections.

param
b boolean cache flag.


                   
         
        cache = b;
    
public synchronized intsize()
Fulfill the ResourceCollection contract.

return
number of elements as int.

        if (isReference()) {
            return ((BaseResourceCollectionWrapper) getCheckedRef()).size();
        }
        dieOnCircularReference();
        return cacheCollection().size();
    
public synchronized java.lang.StringtoString()
Format this BaseResourceCollectionWrapper as a String.

return
a descriptive 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();