On Wednesday 17 September 2003 12:22, Stefan Bodewig wrote:
> On Wed, 17 Sep 2003, peter reilly <[EMAIL PROTECTED]> wrote:
>
>
> > I have done some more investigation. The reason why using defined
> > definitions do not work unless antlib is an taskcontainer is
> > UnknownElement#handleChildren. This loops tru the all unknown
> > elements and checks if the parent can handle them. After
> > handleChildren is called, the maybeConfigure is called which invokes
> > the defines if addConfigured(AntlibInterface) is used in antLib.
>
> So you need to supress/delay the invocation? I'm not sure I follow
> you, sorry.
Sorry my description was a little incoherent.
I wrote an Antlib with:
public void addConfigured(AntlibInterface nestedTask) {
System.out.println("Antlib: addConfigured");
if (nestedTask instanceof Task) {
setLocation(((Task) nestedTask).getLocation());
}
nestedTask.setURI(uri);
nestedTask.setAntlibClassLoader(getClassLoader());
if (nestedTask instanceof Task) {
((Task) nestedTask).perform();
}
}
and tested it with an antlib:
<antlib xmlns:c="ant:current">
<presetdef name="define.with.echo">
<typedef classtype="org.apache.tools.ant.taskdefs.Echo"/>
</presetdef>
<c:define.with.echo name="define.test"/>
</antlib>
The <c:define.with.echo> element gets rejected in
UnknownElement#handleChildren() before
Antlib#addConfigured() is called for the <presetdef> element
of the antlib.
Peter
>
> > A fix could be to keep antlib being a task container, but check
> > if the type of task/type is a AntlibInterface, and if not, to
> > reject the task/type.
>
> I don't think so. To me it seems that it should be possible for
> <antlib> to accept arbitrary AntlibInterface instances as children
> without resorting to TaskContainer. If Antlib can't do that, it feels
> as if something was not right ATM.
>
> Stefan
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]