Main problem was having the nested classes as 'static.
Jan
import
java.util.ArrayList;
import
java.util.List;
import
org.apache.tools.ant.Project;
import
org.apache.tools.ant.Task;
import
org.apache.tools.ant.types.DataType;
public class MyTask extends Task {
// Hold a list of real Things-Objects. Not just Strings.
private List<Things> things = new ArrayList<Things>();
public void execute() {
System.out.println("MyTask");
for (Things t : things) {
t.print();
}
}
public void addThings(Things things) {
this.things.add(things);
}
// Class must be marked as static for being accessible by the Runtime
public static class Things extends DataType {
private List<Thing> things = new ArrayList<Thing>();
public List<Thing> getThings() {
return things;
}
public void addThing (Thing f) {
things.add(f);
}
private String language;
public void setLanguage(String l) {
language = l;
}
public String getLanguage() {
return language;
}
public void print() {
System.out.println("- Things: language=" + getLanguage());
for(Thing t : things) {
t.print();
}
}
}
public static class Thing extends DataType {
private String name = "";
public void addText(String name) {
Project p = getProject();
// All nested elements can occur multiple times. So be prepared.
this.name += p.replaceProperties(name);
}
public String getName() {
return name;
}
public void print() {
System.out.println(" -- Thing: text=" + getName());
}
}
}
<project default="all">
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="build">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="true" debug="true"/>
</target>
<target name="test">
<taskdef name="mytask" classname="MyTask" classpath="${classes.dir}"/>
<mytask>
<things language="english">
<thing>one</thing>
<thing>two</thing>
</things>
<things language="german">
<thing>eins</thing>
<thing>zwei</thing>
</things>
</mytask>
</target>
<target name="all" depends="clean,build,test"/>
</project>
>-----Ursprüngliche Nachricht-----
>Von: scabbage [mailto:guanshan@(protected)]
>Gesendet: Samstag, 6. Februar 2010 00:41
>An: user@(protected)
>Betreff: Re: Question about simple nested text elements
>
>
>Sorry, the code i posted above has some typos. Here's the correct one:
>
>
>import
java.util.ArrayList;
>import
java.util.List;
>
>import
org.apache.tools.ant.Project;
>import
org.apache.tools.ant.Task;
>import
org.apache.tools.ant.types.DataType;
>
>public class MyTask extends Task {
> private List<String> things = new ArrayList<String>();
>
> public void execute() {
> for (String t : things)
> System.out.println (t);
> }
> public void addThings(Things things) {
> for (Thing t : things.getThings())
> this.things.add(t.getName());
> }
> public class Things extends DataType {
> private List<Thing> things = new ArrayList<Thing>();
>
> public List<Thing> getThings() {
> return things;
> }
> public void addThing (Thing f) {
> things.add(f);
> }
> }
> public class Thing extends DataType {
> private String name;
> public void addText(String name) {
> Project p = getProject();
> this.name = p.replaceProperties(name);
> }
>
> public String getName() {
> return name;
> }
> }
>
>}
>
>Thanks.
>
>David
>
>
>scabbage wrote:
>>
>> I'm trying to create my own customized task in Ant 1.7.1. I
>would like to
>> use my task this way:
>>
>> <mytask a="blah" b="foo">
>> <things>
>> <thing>xxx</thing>
>> <thing>yyy</thing>
>> <thing>zzz</thing>
>> </things>
>> </mytask>
>>
>> My class looks like:
>>
>> public class MyTask extends Task {
>> private String a;
>> private String b;
>> private List<String> things = new ArrayList<String>();
>>
>> // setting and gettings for a and b ...
>>
>> public void execute() {
>> // loop through things
>> }
>>
>> }
>>
>> Now can anyone tell me how I should write the setter for
>"things"? The Ant
>> doc is very vague about simple nested text elements.
>>
>> Thanks.
>>
>> David
>>
>
>--
>View this message in context:
>http://old.nabble.com/Question-about-simple-nested-text-element
>s-tp27460186p27475534.html
>Sent from the Ant - Users mailing list archive at Nabble.com.
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: user-unsubscribe@(protected)
>For additional commands, e-mail: user-help@(protected)
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)