diff --git a/src/main/org/apache/tools/ant/IntrospectionHelper.java b/src/main/org/apache/tools/ant/IntrospectionHelper.java index 21e5dcba7..61ffddce1 100644 --- a/src/main/org/apache/tools/ant/IntrospectionHelper.java +++ b/src/main/org/apache/tools/ant/IntrospectionHelper.java @@ -55,7 +55,6 @@ package org.apache.tools.ant; import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.types.DataType; import org.apache.tools.ant.types.EnumeratedAttribute; import java.lang.reflect.Method; @@ -328,8 +327,8 @@ public class IntrospectionHelper implements BuildListener { } try { Object nestedElement = nc.create(element); - if (nestedElement instanceof DataType) { - ((DataType)nestedElement).setProject(project); + if (nestedElement instanceof ProjectComponent) { + ((ProjectComponent) nestedElement).setProject(project); } return nestedElement; } catch (IllegalAccessException ie) { @@ -575,8 +574,8 @@ public class IntrospectionHelper implements BuildListener { throws InvocationTargetException, IllegalAccessException, BuildException { try { Object attribute = c.newInstance(new String[] {value}); - if (attribute instanceof DataType) { - ((DataType)attribute).setProject(p); + if (attribute instanceof ProjectComponent) { + ((ProjectComponent) attribute).setProject(p); } m.invoke(parent, new Object[] {attribute}); } catch (InstantiationException ie) { diff --git a/src/main/org/apache/tools/ant/ProjectHelper.java b/src/main/org/apache/tools/ant/ProjectHelper.java index 907404c7a..c0e55cc67 100644 --- a/src/main/org/apache/tools/ant/ProjectHelper.java +++ b/src/main/org/apache/tools/ant/ProjectHelper.java @@ -561,8 +561,10 @@ public class ProjectHelper { try { String elementName = propType.toLowerCase(Locale.US); if (parent instanceof UnknownElement) { - child = new UnknownElement(elementName); - ((UnknownElement) parent).addChild((UnknownElement) child); + UnknownElement uc = new UnknownElement(elementName); + uc.setProject(project); + ((UnknownElement) parent).addChild(uc); + child = uc; } else { child = ih.createElement(project, parent, elementName); } diff --git a/src/main/org/apache/tools/ant/taskdefs/Ant.java b/src/main/org/apache/tools/ant/taskdefs/Ant.java index 341c639b8..c0b272993 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Ant.java +++ b/src/main/org/apache/tools/ant/taskdefs/Ant.java @@ -260,6 +260,7 @@ public class Ant extends Task { Enumeration e = properties.elements(); while (e.hasMoreElements()) { Property p=(Property) e.nextElement(); + p.setProject(newProject); p.execute(); }