Hi all, I've just spent a hugely frustrating 2 hours or so trying to get a simple nested element to work within a task.
-addElementName(ObjectType t) fails (task doesn't support nested element) -addConfiguredElementName(ObjectType t) fails -createElementName works Here's pretty much the exact code from the ant manual import org.apache.tools.ant.Task; import org.apache.tools.ant.BuildException; import java.util.Vector; import java.util.Enumeration; /* from http://ant.apache.org/manual/develop.html#nested-elements * & http://ant.apache.org/manual/tutorial-writing-tasks.html */ public class EchoTest extends Task { private Vector messages = new Vector(); public void execute() throws BuildException { for(Enumeration e = messages.elements(); e.hasMoreElements();) { getProject().log("MSG: "+((Message)e.nextElement()).getMessage()); } } // works // public Message createMessage() { // Message m = new Message(); // messages.add(m); // return m; // } //doesn't public void addMessage(Message m) { messages.add(m); } public class Message { private String message; public Message() {} public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } } and my build.xml: <?xml version="1.0"?> <project name="test-dpkg" basedir="."> <target name="init"> <taskdef name="my-echo" classname="org.apache.tools.ant.taskdefs.optional.dpkg.EchoTest" /> </target> <target name="test" depends="init"> <my-echo> <message message="1"/> <message message="2"/> </my-echo> </target> </project> output: [EMAIL PROTECTED]:~/IdeaProjects/ant-core-trunk$ ant -debug -f test-control-file.xml test Apache Ant version 1.7.1alpha compiled on May 9 2007 Buildfile: test-control-file.xml Adding reference: ant.PropertyHelper Detected Java version: 1.6 in: /usr/lib/jvm/java-6-sun-1.6.0.00/jre Detected OS: Linux Adding reference: ant.ComponentHelper Setting ro project property: ant.file -> /home/kev/IdeaProjects/ant-core-trunk/test-control-file.xml Adding reference: ant.projectHelper Adding reference: ant.parsing.context Adding reference: ant.targets parsing buildfile /home/kev/IdeaProjects/ant-core-trunk/test-control-file.xml with URI = file:/home/kev/IdeaProjects/ant-core-trunk/test-control-file.xml Setting ro project property: ant.project.name -> test-dpkg Adding reference: test-dpkg Setting ro project property: ant.file.test-dpkg -> /home/kev/IdeaProjects/ant-core-trunk/test-control-file.xml Project base dir set to: /home/kev/IdeaProjects/ant-core-trunk +Target: +Target: init +Target: test Attempting to create object of type org.apache.tools.ant.helper.DefaultExecutor Adding reference: ant.executor Build sequence for target(s) `test' is [init, test] Complete build sequence is [init, test, ] init: [antlib:org.apache.tools.ant] Could not load definitions from resource org/apache/tools/ant/antlib.xml. It could not be found. Class org.apache.tools.ant.taskdefs.optional.dpkg.ControlFileTask loaded from parent loader (parentFirst) +Datatype control org.apache.tools.ant.taskdefs.optional.dpkg.ControlFileTask Class org.apache.tools.ant.taskdefs.optional.dpkg.EchoTest loaded from parent loader (parentFirst) +Datatype my-echo org.apache.tools.ant.taskdefs.optional.dpkg.EchoTest test: BUILD FAILED /home/kev/IdeaProjects/ant-core-trunk/test-control-file.xml:18: my-echo doesn't support the nested "message" element. at org.apache.tools.ant.UnknownElement.handleChildren(UnknownElement.java:356) at org.apache.tools.ant.UnknownElement.configure(UnknownElement.java:198) at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160) at org.apache.tools.ant.Task.perform(Task.java:347) at org.apache.tools.ant.Target.execute(Target.java:357) at org.apache.tools.ant.Target.performTasks(Target.java:385) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1331) at org.apache.tools.ant.Project.executeTarget(Project.java:1300) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1183) at org.apache.tools.ant.Main.runBuild(Main.java:758) at org.apache.tools.ant.Main.startAnt(Main.java:217) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) Caused by: The <my-echo> type doesn't support the nested "message" element. at org.apache.tools.ant.IntrospectionHelper.throwNotSupported(IntrospectionHelper.java:480) at org.apache.tools.ant.IntrospectionHelper.getNestedCreator(IntrospectionHelper.java:545) at org.apache.tools.ant.IntrospectionHelper.getElementCreator(IntrospectionHelper.java:608) at org.apache.tools.ant.UnknownElement.handleChild(UnknownElement.java:543) at org.apache.tools.ant.UnknownElement.handleChildren(UnknownElement.java:343) ... 13 more --- Nested Exception --- The <my-echo> type doesn't support the nested "message" element. at org.apache.tools.ant.IntrospectionHelper.throwNotSupported(IntrospectionHelper.java:480) at org.apache.tools.ant.IntrospectionHelper.getNestedCreator(IntrospectionHelper.java:545) at org.apache.tools.ant.IntrospectionHelper.getElementCreator(IntrospectionHelper.java:608) at org.apache.tools.ant.UnknownElement.handleChild(UnknownElement.java:543) at org.apache.tools.ant.UnknownElement.handleChildren(UnknownElement.java:343) at org.apache.tools.ant.UnknownElement.configure(UnknownElement.java:198) at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160) at org.apache.tools.ant.Task.perform(Task.java:347) at org.apache.tools.ant.Target.execute(Target.java:357) at org.apache.tools.ant.Target.performTasks(Target.java:385) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1331) at org.apache.tools.ant.Project.executeTarget(Project.java:1300) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1183) at org.apache.tools.ant.Main.runBuild(Main.java:758) at org.apache.tools.ant.Main.startAnt(Main.java:217) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) I've been working on something more complex than this and couldn't get the nested elements to work, so I went back to the most basic task I could think of - the addElementName methods don't seem to work on svn trunk - which is obviously not true as this code is used throughout the codebase. Can anyone see what I'm doing wrong here, or indeed reproduce what I'm seeing (and really not being able to believe right now). I know I'm dumb, but this shouldn't be that hard :( Kev --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]