On Thursday 14 August 2003 18:50, Jose Alberto Fernandez wrote:
> I think this is fantastic work.
Thanks.
>
> One thing you could do here is redefine <javac> itself
> by doing something like:
>
>    <taskdef name="orig.javac" classname="org.ant.....Javac"/>
>    <presetdef name="javac">
>       <orig.javac debug="${debug}" deprecation="${deprecation}"/>
>    </presetdef>
>
> which would realize your desired effect. This could be done internally
> by <presetdef/> when for example no name attribute is given.

This could also be done by:

    <presetdef name="javac">
        <javac debug="${debug}" deprecation="${deprecation}"/>
    </presetdef>

You will however get a warning that the previous definition
of javac has been overridden.

I am thinking of adding an override attribute to allow suppressing
this warning.

>
> > Finally, <presetdef>, in term of functionality and not
> > implementation, is
> > just a subset of <macrodef> in my opinion, and doesn't
> > deserve Task status.
>
> I disagree here, IIUC, <macrodef>'s templates must have ALL the
> content and parameters of the tasks inside, while <presetdef/>
> only sites some sort of default values.
>
> It would be interesting to know what would happen if I write:
>
>    <my.javac debug="true"> ... </my.javac>
>
> would it use the value given in <presetdef> or that given in the actual
> task? If the later, it means that the values given in <presetdef> would be
> default values for the task, which sounds much better.
> Maybe we could rename it <defaultdef/>. :-)

In this case what will happen is that javac#setDebug() gets called twice.
First with the default value and second with "true". The effect
this has depends on the task/type in question. Some tasks set a flag
when an attribute is set and do not allow it to be set again.

Peter

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to