Wonderful, thank you for your responses.
They resolve my current problem
... and also an old one for ant4hg project, where the main task class
contains many many attributes !

2010/9/7 <jan.mate...@rzf.fin-nrw.de>

> >> Is it possible to define attribute name with dash ?
> >
> >Not with Ant's built-in reflection logic.  Any attribute can only
> >consist of characters leagl inside a Java method name.
> >
> >You can define attributes with a dash when you implement
> >org.apache.tools.ant.DynamicAttribute or DynamicAttributeNS in which
> >case your setDynamicAttribute method will get invoked for any attribute
> >that does not directly map to a setter method.
>
> And a sample:
>
> <project>
>    <javac srcdir="." destdir="." includeantruntime="true"/>
>    <taskdef name="my" classname="MyTask" classpath="."/>
>    <my normal="normal" with-dash="with-dash" unknown="unknown"
> unknown2="two"/>
> </project>
>
> import org.apache.tools.ant.Task;
> import org.apache.tools.ant.DynamicAttribute;
> import java.util.*;
>
> public class MyTask extends Task implements DynamicAttribute {
>    String normal;
>    String withDash;
>    Map<String,String> otherData = new HashMap<String,String>();
>
>    public void setNormal(String s) {
>        this.normal = s;
>    }
>
>    public void setDynamicAttribute(String name, String value) {
>        if (name.equals("with-dash")) {
>            this.withDash = value;
>        } else {
>            otherData.put(name, value);
>        }
>    }
>
>    public void execute() {
>        log("normal   : " + normal);
>        log("with-dash: " + withDash);
>        if (!otherData.isEmpty()) {
>            for(String key : otherData.keySet()) {
>                log("- " + key + "=" + otherData.get(key));
>             }
>        }
>    }
> }
>
>
>
> Jan
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
> For additional commands, e-mail: dev-h...@ant.apache.org
>
>

Reply via email to