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. -- 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
