[weld-dev] Decorator question

Marius Bogoevici mariusb at redhat.com
Thu Dec 3 18:44:03 EST 2009


Are few thoughts:

a) You can still have (2), if AnotherBeanClass implements an interface 
AnInterface. It's just that the set of decorated methods is restricted 
to the ones defined in the interface.

b) I can see a few of wrinkles in (2), when combining @Decorator with 
inheritance from the delegate type (even in case a) ), as a @Decorator 
subclass will inherit methods implemented in the parent (which is also 
the delegate), which can mean that a method b() inherited from the 
parent class (but not overridden) will be automatically used to decorate 
method b() on the delegate ...

c) Not to be presumptuous, but wouldn't @Alternative be better suited to 
such use cases as (2) ?


Gavin King wrote:
> (2) is not supported in the spec. Decorators can't decorate concrete types.
>
> On Thu, Dec 3, 2009 at 4:42 PM, Mark Struberg <struberg at yahoo.de> wrote:
>   
>> Hi folks!
>>
>> I'm a bit unsure about the interpretation of the section 8 Decorators in the spec.
>>
>> There is a sentence which really confuses me:
>> "The set of decorated types of a decorator includes all bean types of the managed bean which are Java interfaces..."
>>
>> I always thought about 2 use cases:
>>
>> 1.)
>> @Decorator
>> public class MyDec1 implements AnInterface {
>>  @Inject @Delegate AnInterface1 theRealThing;
>>  ...
>> }
>>
>> which will decorate all beans which implement the AnInterface.
>>
>> 2.)
>> @Decorator
>> public class MyDec2 extends AnotherBeanClass {
>>  @Inject @Delegate AnotherBeanClass theRealThing;
>>  ...
>> }
>>
>> which will decorate all beans which are of Type (+subclasses) of AnotherBeanClass.
>>
>> This thoughts are basically backed by a few other paragraphs in the spec and also by the TCK (org.jboss.jsr299.tck.tests.lookup.injectionpoint.CatDecorator).
>>
>> But for 2) the AnotherBeanClass doesn't need to implement any Interface at all (at least from the practical point of view).
>>
>>
>> txs and LieGrue,
>> strub
>>
>> __________________________________________________
>> Do You Yahoo!?
>> Sie sind Spam leid? Yahoo! Mail verfügt über einen herausragenden Schutz gegen Massenmails.
>> http://mail.yahoo.com
>>
>> _______________________________________________
>> weld-dev mailing list
>> weld-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/weld-dev
>>
>>     
>
>
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/weld-dev/attachments/20091203/bb7f88b8/attachment.html 


More information about the weld-dev mailing list