Marius Bogoevici wrote: > 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. >
Then there needs to be an explicit test for that behavior. Not an implicit one buried in another test. -- Scott > >> -- 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
