diff --git a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java index 212c5de65..a28d41425 100644 --- a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java +++ b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java @@ -28,6 +28,7 @@ import java.util.Collections; import org.apache.tools.ant.Project; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.types.DataType; +import org.apache.tools.ant.types.Resource; import org.apache.tools.ant.types.ResourceCollection; /** @@ -173,7 +174,8 @@ public abstract class BaseResourceCollectionContainer /* 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 FileProvider)) { + Resource r = (Resource) i.next(); + if (r.as(FileProvider.class) == null) { return false; } } @@ -198,9 +200,7 @@ public abstract class BaseResourceCollectionContainer 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(); + pushAndInvokeCircularReferenceCheck((DataType) o, stk, p); } } setChecked(true); 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 424c99ab5..f285616db 100644 --- a/src/main/org/apache/tools/ant/types/resources/Resources.java +++ b/src/main/org/apache/tools/ant/types/resources/Resources.java @@ -115,6 +115,7 @@ public class Resources extends DataType implements ResourceCollection { /** * Create a new Resources. + * @since Ant 1.8 */ public Resources(Project project) { setProject(project); @@ -221,7 +222,7 @@ public class Resources extends DataType implements ResourceCollection { for (Iterator i = getNested().iterator(); i.hasNext();) { Object o = i.next(); if (o instanceof DataType) { - invokeCircularReferenceCheck((DataType) o, stk, p); + pushAndInvokeCircularReferenceCheck((DataType) o, stk, p); } } setChecked(true);