diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java index 2e2f583db..f1da629aa 100644 --- a/src/main/org/apache/tools/ant/Project.java +++ b/src/main/org/apache/tools/ant/Project.java @@ -430,12 +430,12 @@ public class Project { Vector sortedTargets = topoSort(targetName, targets); int curidx = 0; - String curtarget; + Target curtarget; do { - curtarget = (String) sortedTargets.elementAt(curidx++); - runTarget(curtarget, targets); - } while (!curtarget.equals(targetName)); + curtarget = (Target) sortedTargets.elementAt(curidx++); + runTarget(curtarget); + } while (!curtarget.getName().equals(targetName)); } public File resolveFile(String fileName) { @@ -679,14 +679,10 @@ public class Project { // Given a string defining a target name, and a Hashtable // containing the "name to Target" mapping, pick out the // Target and execute it. - private final void runTarget(String target, Hashtable targets) + public void runTarget(Target target) throws BuildException { - currentTarget = (Target)targets.get(target); - if (currentTarget == null) { - throw new RuntimeException("Unexpected missing target `"+target+ - "' in this project."); - } + currentTarget = target; try { fireTargetStarted(); @@ -803,7 +799,7 @@ public class Project { throw new RuntimeException("Unexpected internal error: expected to pop "+root+" but got "+p); } state.put(root, VISITED); - ret.addElement(root); + ret.addElement(target); } private static BuildException makeCircularException(String end, Stack stk) { diff --git a/src/main/org/apache/tools/ant/ProjectHelper.java b/src/main/org/apache/tools/ant/ProjectHelper.java index 31909892d..b527f789b 100644 --- a/src/main/org/apache/tools/ant/ProjectHelper.java +++ b/src/main/org/apache/tools/ant/ProjectHelper.java @@ -327,9 +327,11 @@ public class ProjectHelper { public void init(String tag, AttributeList attrs) throws SAXParseException { task = project.createTask(tag); + project.currentTask = task; configure(task, attrs); task.setLocation(new Location(buildFile.toString(), locator.getLineNumber(), locator.getColumnNumber())); task.init(); + project.currentTask = null; // Top level tasks don't have associated targets if (target != null) { @@ -355,20 +357,20 @@ public class ProjectHelper { } public void startElement(String name, AttributeList attrs) throws SAXParseException { - new NestedPropertyHandler(this, task).init(name, attrs); + new NestedElementHandler(this, task).init(name, attrs); } } /** * Handler for all nested properties. */ - private class NestedPropertyHandler extends AbstractHandler { + private class NestedElementHandler extends AbstractHandler { private DocumentHandler parentHandler; private Object target; private Object child; - public NestedPropertyHandler(DocumentHandler parentHandler, Object target) { + public NestedElementHandler(DocumentHandler parentHandler, Object target) { super(parentHandler); this.target = target; @@ -393,7 +395,7 @@ public class ProjectHelper { } public void startElement(String name, AttributeList attrs) throws SAXParseException { - new NestedPropertyHandler(this, child).init(name, attrs); + new NestedElementHandler(this, child).init(name, attrs); } } diff --git a/src/main/org/apache/tools/ant/TaskOutputStream.java b/src/main/org/apache/tools/ant/taskdefs/TaskOutputStream.java similarity index 100% rename from src/main/org/apache/tools/ant/TaskOutputStream.java rename to src/main/org/apache/tools/ant/taskdefs/TaskOutputStream.java