Gavin King wrote:
Nono, that's wrong. I think what should really happen is this:
= Abstract method annotated @Inject, @PostConstruct or @PreDestroy
results in a DE
That's pretty much what I thought as well - but I missed @PostConstruct
and @PreDestroy.
= Other abstract methods have a generated impl that simply calls the
same method on the delegate (and returns the result)
Actually, we could just ignore the method (as if it wasn't defined at
all) if it is abstract and think the whole problem in terms of
decorating method *implementations*. I don't know why exactly would
someone add something like this (hence my original thought that we could
just signal this as an error), but perhaps if one uses a Decorator
hierarchy it makes sense (then there's the question why you would want
to do that, but I think we're just looking for closure wrt spec
consistency, not best practices).
Does that make sense?
So after what I wrote above, a *no* at this point would be insane :D
On Fri, Nov 20, 2009 at 9:30 AM, Gavin King
<gavin.king(a)gmail.com> wrote:
> We could say that annotating an abstract method of a decorator with
> @Inject is a DE. Same for @PostConstruct and @PreDestroy.
> Alternatively, we could just say that the container ignores them,
> which seems to be more or less what happens if they are declared on an
> abstract bean.
>
> What the spec definitely needs to do is say that if an abstract method
> of a decorator is called at runtime, an UnsupportedOperationException
> results. This is a big oversight.
>
> On Fri, Nov 20, 2009 at 3:19 AM, Marius Bogoevici <mariusb(a)redhat.com> wrote:
>
>> The specification allows for decorators to be abstract classes, but this
>> is currently not supported in Weld (defect WELD-298).
>>
>> Since allowing decorator classes to be abstract is the only stated
>> requirement, here are the general lines I think we should follow for
>> supporting this:
>>
>> - abstract decorator classes can have injected fields, injected
>> constructor parameters and concrete initializer methods, but abstract
>> initializer methods should be forbidden (DefinitionException), or at the
>> very least be non-portable.
>> - abstract decorator classes cannot have abstract decorating methods
>> (DefinitionException)
>>
>> WDYT?
>>
>> Marius
>>
>> _______________________________________________
>> weld-dev mailing list
>> weld-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/weld-dev
>>
>>
>
> --
> Gavin King
> gavin.king(a)gmail.com
>
http://in.relation.to/Bloggers/Gavin
>
http://hibernate.org
>
http://seamframework.org
>
>