diff --git a/src/main/org/apache/tools/ant/IntrospectionHelper.java b/src/main/org/apache/tools/ant/IntrospectionHelper.java index b7662afd6..d68c5dde5 100644 --- a/src/main/org/apache/tools/ant/IntrospectionHelper.java +++ b/src/main/org/apache/tools/ant/IntrospectionHelper.java @@ -603,45 +603,6 @@ public final class IntrospectionHelper implements BuildListener { throw new BuildException(msg); } - private NestedCreator getNestedCreator(Project project, Object parent, - String elementName) throws BuildException { - - NestedCreator nc = (NestedCreator) nestedCreators.get( - elementName.toLowerCase(Locale.US)); - if (nc == null) { - nc = createAddTypeCreator(project, parent, elementName); - } - if (nc == null && parent instanceof DynamicConfigurator) { - DynamicConfigurator dc = (DynamicConfigurator) parent; - final Object nestedElement = dc.createDynamicElement(elementName); - if (nestedElement != null) { - nc = new NestedCreator() { - public boolean isPolyMorphic() { - return false; - } - public Class getElementClass() { - return null; - } - - public Object getRealObject() { - return null; - } - - public Object create( - Project project, Object parent, Object ignore) { - return nestedElement; - } - public void store(Object parent, Object child) { - } - }; - } - } - if (nc == null) { - throwNotSupported(project, parent, elementName); - } - return nc; - } - private NestedCreator getNestedCreator( Project project, String parentUri, Object parent, String elementName) throws BuildException { @@ -705,6 +666,7 @@ public final class IntrospectionHelper implements BuildListener { * Must not be null. * * @return an instance of the specified element type + * @deprecated This is not a namespace aware method. * * @exception BuildException if no method is available to create the * element instance, or if the creating method @@ -712,7 +674,7 @@ public final class IntrospectionHelper implements BuildListener { */ public Object createElement(Project project, Object parent, String elementName) throws BuildException { - NestedCreator nc = getNestedCreator(project, parent, elementName); + NestedCreator nc = getNestedCreator(project, "", parent, elementName); try { Object nestedElement = nc.create(project, parent, null); if (project != null) { @@ -743,11 +705,13 @@ public final class IntrospectionHelper implements BuildListener { * @param parent Parent object used to create the creator object to * create and store and instance of a subelement. * @param elementName Name of the element to create an instance of. + * @param ue The unknown element associated with the element. * @return a creator object to create and store the element instance. */ public Creator getElementCreator( - Project project, String parentUri, Object parent, String elementName) { + Project project, String parentUri, Object parent, String elementName, + UnknownElement ue) { NestedCreator nc = getNestedCreator( project, parentUri, parent, elementName); return new Creator(project, parent, nc); diff --git a/src/main/org/apache/tools/ant/UnknownElement.java b/src/main/org/apache/tools/ant/UnknownElement.java index 82dca758b..671429aef 100644 --- a/src/main/org/apache/tools/ant/UnknownElement.java +++ b/src/main/org/apache/tools/ant/UnknownElement.java @@ -564,7 +564,8 @@ public class UnknownElement extends Task { child.getNamespace(), child.getTag()); if (ih.supportsNestedElement(parentUri, childName)) { IntrospectionHelper.Creator creator = - ih.getElementCreator(getProject(), parentUri, parent, childName); + ih.getElementCreator( + getProject(), parentUri, parent, childName, child); creator.setPolyType(childWrapper.getPolyType()); Object realChild = creator.create(); if (realChild instanceof PreSetDef.PreSetDefinition) { diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java index 169e1d3f3..4e95a67c4 100644 --- a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java +++ b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java @@ -272,7 +272,7 @@ public class ProjectHelper2 extends ProjectHelper { + buildFileName + " is invalid.", exc); } catch (IOException exc) { - throw new BuildException("Error reading project file " + throw new BuildException("Error reading project file " + buildFileName + ": " + exc.getMessage(), exc); } finally { @@ -484,9 +484,6 @@ public class ProjectHelper2 extends ProjectHelper { */ public void startElement(String uri, String tag, String qname, Attributes attrs) throws SAXParseException { - if (uri.equals(ANT_CORE_URI)) { - uri = ""; - } AntHandler next = currentHandler.onStartChild(uri, tag, qname, attrs, context); antHandlers.push(currentHandler); @@ -519,9 +516,6 @@ public class ProjectHelper2 extends ProjectHelper { * */ public void endElement(String uri, String name, String qName) throws SAXException { - if (uri.equals(ANT_CORE_URI)) { - uri = ""; - } currentHandler.onEndElement(uri, name, context); AntHandler prev = (AntHandler) antHandlers.pop(); currentHandler = prev; @@ -585,7 +579,8 @@ public class ProjectHelper2 extends ProjectHelper { Attributes attrs, AntXMLContext context) throws SAXParseException { - if (name.equals("project") && uri.equals("")) { + if (name.equals("project") + && (uri.equals("") || uri.equals(ANT_CORE_URI))) { return ProjectHelper2.projectHandler; } else { // if (context.importlevel > 0) { @@ -653,7 +648,7 @@ public class ProjectHelper2 extends ProjectHelper { } String key = attrs.getLocalName(i); String value = attrs.getValue(i); - + if (key.equals("default")) { if (value != null && !value.equals("")) { if (!context.isIgnoringProjectTag()) { @@ -756,7 +751,8 @@ public class ProjectHelper2 extends ProjectHelper { Attributes attrs, AntXMLContext context) throws SAXParseException { - if (name.equals("target") && uri.equals("")) { + if (name.equals("target") + && (uri.equals("") || uri.equals(ANT_CORE_URI))) { return ProjectHelper2.targetHandler; } else { return ProjectHelper2.elementHandler;