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 252619b54..aae28aa5a 100644 --- a/src/main/org/apache/tools/ant/types/resources/Resources.java +++ b/src/main/org/apache/tools/ant/types/resources/Resources.java @@ -19,10 +19,12 @@ package org.apache.tools.ant.types.resources; import java.io.File; +import java.util.List; import java.util.Stack; import java.util.Vector; import java.util.Iterator; import java.util.Collection; +import java.util.Collections; import java.util.AbstractCollection; import java.util.NoSuchElementException; @@ -65,7 +67,7 @@ public class Resources extends DataType implements ResourceCollection { MyCollection() { size = 0; - for (Iterator rci = rc.iterator(); rci.hasNext();) { + for (Iterator rci = getNested().iterator(); rci.hasNext();) { size += ((ResourceCollection) rci.next()).size(); } } @@ -76,7 +78,7 @@ public class Resources extends DataType implements ResourceCollection { return new MyIterator(); } private class MyIterator implements Iterator { - private Iterator rci = rc.iterator(); + private Iterator rci = getNested().iterator(); private Iterator ri = null; public boolean hasNext() { @@ -99,8 +101,8 @@ public class Resources extends DataType implements ResourceCollection { } } - private Vector rc = new Vector(); - private Collection coll = null; + private Vector rc; + private Collection coll; /** * Add a ResourceCollection. @@ -113,6 +115,9 @@ public class Resources extends DataType implements ResourceCollection { if (c == null) { return; } + if (rc == null) { + rc = new Vector(); + } rc.add(c); FailFast.invalidate(this); coll = null; @@ -153,7 +158,7 @@ public class Resources extends DataType implements ResourceCollection { } validate(); - for (Iterator i = rc.iterator(); i.hasNext();) { + for (Iterator i = getNested().iterator(); i.hasNext();) { if ((!((ResourceCollection) i.next()).isFilesystemOnly())) { return false; } @@ -161,6 +166,27 @@ public class Resources extends DataType implements ResourceCollection { return true; } + /** + * Format this BaseResourceCollectionContainer as a String. + * @return a descriptive String. + */ + public synchronized String toString() { + if (isReference()) { + return getCheckedRef().toString(); + } + if (coll == null || coll.isEmpty()) { + 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(); + } + /** * Overrides the version of DataType to recurse on all DataType * child elements that may have been added. @@ -176,7 +202,7 @@ public class Resources extends DataType implements ResourceCollection { if (isReference()) { super.dieOnCircularReference(stk, p); } else { - for (Iterator i = rc.iterator(); i.hasNext();) { + for (Iterator i = getNested().iterator(); i.hasNext();) { Object o = i.next(); if (o instanceof DataType) { invokeCircularReferenceCheck((DataType) o, stk, p); @@ -200,25 +226,7 @@ public class Resources extends DataType implements ResourceCollection { coll = (coll == null) ? new MyCollection() : coll; } - /** - * Format this BaseResourceCollectionContainer as a String. - * @return a descriptive String. - */ - public synchronized String toString() { - if (isReference()) { - return getCheckedRef().toString(); - } - if (coll == null || coll.isEmpty()) { - 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(); + private synchronized List getNested() { + return rc == null ? Collections.EMPTY_LIST : rc; } - }