What I was thinking was on generalizing what we have on ComponentHelper.
Right now it keeps two tables, one for tasks and one for typedefs; instead
I would like to have a more generic setting, something like:

        boolean ComponentHelper.addComponentDefinition(Class realm, String 
typeName, Object typeDefinition)

Ok first the "realm" thing (just a big name to scare everyone), this will be 
just a key to the kind
of storage service being requested: Task.class -- for TaskDefinitions; 
DataType.class -- Typesdefs;
and in the case of the script I would use ScriptDefBase.class for example.

This guy would do all the generic part of the manging definition of components 
living very little
extra for the specialized calls:

        ComponentHelper.addTaskDefinition(String typeName, Class 
typeDefinition) {
                if (addComponentDefinition(Task.class, typeName, 
typeDefinition)) {
                        // Previous definiton overriden
                        // do any additional stuff that is needed (invalidate 
usages, etc.)
                }
        }

We may need some other method to declare the need for the table and to pass how 
to
detect redefinitions (this is now done in the code of each method)

        void ComponentHelper.addComponentRealm(Class realm, OverrideValidator 
validator);

where this validator thing will be passed to the AntTaskTable definition so 
that it 
knows how to do things (I am not too clear here because our current code is 
quite convoluted
due to all the backward compatibility).

In any case, I think you can get what I mean, for ScriptDef the usage is like:

        String source = ....;
        
ComponentHelper.getComponentHelper(getProject()).addComponentDefinition(ScriptDefBase.class,
 name, source);

You will need something like:

        Object ComponentHelper.getComponentDefinition(Class realm, String 
typeName);

which will be used by ComponentHelper.createComponent(String typeName) in the 
current code. Also here,
we may be able to get something better.

Jose Alberto


> -----Original Message-----
> From: Conor MacNeill [mailto:[EMAIL PROTECTED]
> Sent: 09 June 2003 15:40
> To: Ant Developers List
> Subject: Re: Embedded dynamic ANT tasks.
> 
> 
> On Mon, 9 Jun 2003 08:42 pm, Jose Alberto Fernandez wrote:
> > You could do the following, which will require no changes to code:
> >
> 
> Funnily enough, this approach is pretty close to what I was 
> working on for 
> <scriptdef>. It doesn't use DynamicConfigurator, however, as 
> that doesn't 
> really allow for deferred creation of nested elements.
> 
> > The only problem with this solution is that the 
> implementation needs to
> > provide its own symbol-table which may be problematic when 
> using <import/>
> > and <ant/>. It would be nicer if ANT were willing to manage 
> this kind of
> > use symbol-table as some sort of generic service.
> 
> <ant/>, <import/> may indeed be problems. I'm not sure yet - 
> I want to see how 
> that works out and do some more testing. What sort of generic 
> service do you 
> have in mind?
> 
> Conor
> 
> 
> ---------------------------------------------------------------------
> 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]

Reply via email to