On 2011-01-07, at 12:17 PM, Scott Ferguson wrote:

> Marius Bogoevici wrote:
>> I don't see a particular issue with the test. The rules on what business 
>> method invocations are and aren't should make it clear that invocations on 
>> the instance acquired via getTarget() are intercepted, or, for that matter, 
>> decorated.  Those are *not* business method invocations (in the same way as 
>> calls to 'this' are not business method invocations).
> 
> That behavior is not defined by any specification, unless you can find the 
> section and cite it.

Section 7.2 of the CDI specification. 

> 
> -- Scott
> 
>> 
>> Weld implements interception/decoration via subclassing and observes this 
>> exact rule (invocations on this and instances acquired by getTarget() are 
>> not intercepted/decorated).
>> 
>> Also, this has been previously discussed here (a couple of links from an 
>> older weld-dev thread)
>> http://lists.jboss.org/pipermail/weld-dev/2010-May/002517.html
>> http://lists.jboss.org/pipermail/weld-dev/2010-May/002519.html
>> 
>> On 2011-01-06, at 12:34 PM, Scott Ferguson wrote:
>> 
>>> Jozef Hartinger wrote:
>>>> Could you file a CDITCK issue and assign it to me? Thanks.
>>>> 
>>> 
>>> Thanks Jozef,
>>> 
>>> It's at https://issues.jboss.org/browse/CDITCK-203.
>>> 
>>> I'm pretty sure I don't have permission to assign you tasks, though. :)
>>> 
>>> -- Scott
>>> 
>>>> On 01/06/2011 03:24 AM, Scott Ferguson wrote:
>>>>> This test has a implementation-dependency on how interception is
>>>>> implemented (requires proxy implementation), but the proxy
>>>>> implementation is not mandated by the spec (and the EJB spec has always
>>>>> allowed both implementation methods.)
>>>>> 
>>>>> The test calls SimpleBean.getId(), which is intercepted by Interceptor1.
>>>>> 
>>>>> Interceptor1's aroundInvoke calls target.getId(), which is a circular
>>>>> reference for extension and only works for proxy-based interception:
>>>>> 
>>>>> class SimpleBean {
>>>>>   @Interceptors(Interceptor1.class)
>>>>>   public int getId()
>>>>>   {
>>>>>      return id;
>>>>>   }
>>>>>   ...
>>>>> }
>>>>> 
>>>>> class Interceptor1 {
>>>>>   @AroundInvoke
>>>>>   public Object aroundInvoke(InvocationContext ctx) throws Exception
>>>>>   {
>>>>>      SimpleBean target = (SimpleBean) ctx.getTarget();
>>>>>      int id1 = target.getId();
>>>>>      ...
>>>>>    }
>>>>> }
>>>>> 
>>>>> The only change needed to the test is to create a SimpleBean.getBareId()
>>>>> which is not an intercepted method.
>>>>> 
>>>>> (Or, if the spec is re-interpreted to require a proxy implementation,
>>>>> there should be an explicit test for it, not an implicit dependency like
>>>>> this test.)
>>>>> 
>>>>> -- Scott
>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> weld-dev mailing list
>>>>> [email protected] <mailto:[email protected]>
>>>>> https://lists.jboss.org/mailman/listinfo/weld-dev
>>>> 
>>>> 
>>>> 
>>> 
>>> _______________________________________________
>>> weld-dev mailing list
>>> [email protected] <mailto:[email protected]>
>>> https://lists.jboss.org/mailman/listinfo/weld-dev
>> 
> 


_______________________________________________
weld-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-dev

Reply via email to