This probably isn't your whole problem, but right off the bat you generally need to make your inner types static.
HTH, Matt --- Kevin Jackson <[EMAIL PROTECTED]> wrote: > 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] > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]