> From: Peter Reilly [mailto:[EMAIL PROTECTED]
>
> Ah, I see, you are trying to
> use the contents of "sources" in javc and also in bm:lsync.
>
> This is indeed XML NS hell!
>
> The problem is that the ns uri and local name of the Unknown elements
> are given to the elements in the calling macro.
>
> In ant 1.6.0+, the namespace of elements discovered by reflection take
> the namespace uri of type/task that contains the element (Note this is the
> uri and not the localname).
>
> The enclosed patch will allow the namespace of nested elements to be
> either the ant uri or the namespace of the containing type/task.
I see this is a two liner, that even puts back in commented out code...
What's the problem with checking it in?
When Ant 1.6.2 being built with it ;-)
> The following then works:
>
> <project xmlns:bm="some uri or other">
>
> <scripttypedef name="lsync" language="beanshell"
> uri="some uri or other">
> import org.apache.tools.ant.taskdefs.MatchingTask;
> public class LSync extends MatchingTask {
> public void execute() {}
> }
> </scripttypedef>
>
> <macrodef name="compile">
> <element name="sources"/>
> <sequential>
> <javac destdir="classes" srcdir="src">
> <sources/>
> </javac>
> <bm:lsync>
> <sources/>
> </bm:lsync>
> </sequential>
> </macrodef>
>
> <compile>
> <sources>
> <include name="**/*.java"/>
> </sources>
> </compile>
> </project>
Man, were you born with innate XML and Ant knowledge? This is too clever.
> Another solution would be to modify lsync to use the fileset type:
> lsync -> void add(FileSet fs) { .. }
> Then one can do:
>
> <bm:lsync>
> <bm:fileset dir="x"/> <!-- fileset is the nested addFileSet(Fileset fs)
> method -->
> <fileset dir="x"> <!-- fileset is the nested add(FileSet fs) using the
> "fileset" type
> in the ant core uri. -->
> <include name="**/*.java"/>
> </fileset>
> </bm:lsync>
I'll have to see. Thanks for the alternative fix, which I could put to use
waiting for Ant 1.6.2.
Why am I the one always falling in the XML NS traps :-( --DD
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]