Stefan Bodewig wrote:

> On Tue, 29 Apr 2003, Costin Manolache <[EMAIL PROTECTED]> wrote:
>> Stefan Bodewig wrote:
> 
>>>> - Should we use (<parent>, <child>) tuple to find the class?
>>>> Should we use (ParentClass, <parent>, <child>) tuple ?
>>> 
>>> I'm not sure what the difference is, here.
>> 
>> In the second case, the parent class is also used when constructing
>> the child - i.e. introspection or some other info could be used.
>>  
>> BTW, by <parent> I mean parent namespace + parent element name (
>> even if we don't use ns yet ).
> 
> OK.  I think we'll need ParentClass to apply proper interface
> resolution.  I'm somewhere on the fence, to be honest.

Same here :-)
 
> I don't see a need for separate namespaces depending on the
> interfaces, so only using the child's element name (and namespace)
> could be enough.  I'm not sure whether I'm overlooking a problem.

Not sure I understand. Namespaces are not required to solve the
polymorphism problem. 

My concern was the API used by ComponentHelper - I would rather 
add the "parent" parameter, even if it's not used now, if we expect
we'll find some use cases that will require it ( say in 1.7+ ).

 
> In a previous mail I said <child> alone would already break down
> today.  What I had in mind are things like the <fail> element nested
> into <sound> clashing with the <fail> task - all those things that
> make a DTD impossible to write for Ant.

Adding namespaces could reduce this problem. The fail inside
sound could use a different namespace than the core <fail> element.

Without namespaces - the context ( i.e. parent ) seems to be required.
In any case - making it available to the helpers that creates the components
can't hurt :-)



> But these existing name clashes only exist for the non-overloaded
> cases that we are still going to support.  I.e. they exist because
> SoundTask defines addFail(SomeObject) which is fine as it is not
> ambiguos at all.
> 
>> For overloaded methods - one way or another we'll need additional
>> info from the user. I'm fine with either syntax - I would preffer
>> the "type" attribute ( which could be an ant:type when we add
>> namespaces ), but I'm ok with either solution.
> 
> An alternative to a magic namespace would be magic attribute names.
> We can use attributes that contain dashes
> 
> <dependset>
>   <zipfileset use-as="srcfileset">
> </dependset>
> 
> use-as quite clearly states the user's intent and it is impossible to
> have an existing attribute for tasks or nested elements.

Sounds good ( not "use-as", but magic attribute ). Maybe "ant:type" would
be better ?

The attribute should be optional - i.e. required only for overloaded elements,
i.e. 2 methods with the same addXXX signature, and it should be matched 
against the method name. 
   use-as="srcfileset"  ->  addSrcfileset()

I'm +1 on this solution for the overloading problem, can't think of anything
better.



Costin

 

 


Reply via email to