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]