On Mar 9, 2012, at 1:46 AM, Romain Manni-Bucau wrote: > Hi David, > > it was not managed by CDI and injections was not working so well.
Sounds like we need a JIRA for this titled "@Inject support for @Proxy bean handlers" A unit test might be great for that as well. The loop that recreates all the injections looks a little fishy and could probably be improved, but I don't breaking the untested code. > i added too a way to inject the interface because when you are doing a > little bit generic handler you often need it. Are we reusing @Resource for that? How do we identify the field to do the injection upon? > Do you see any issue with this change? Nope. Just trying to understand. With the volume of commits, there's no possible way I can fully digest them all in a short period of time, so asking questions :) -David > 2012/3/9 David Blevins <[email protected]> > >> I thought we already supported injection on the handler. What problem is >> this aimed at? >> >> -David >> >> On Mar 5, 2012, at 6:02 PM, [email protected] wrote: >> >>> Author: rmannibucau >>> Date: Tue Mar 6 00:02:21 2012 >>> New Revision: 1297301 >>> >>> URL: http://svn.apache.org/viewvc?rev=1297301&view=rev >>> Log: >>> ability to get injection in dynamic proxy handler + implicit injection >> of the proxies interface >>> >>> Modified: >>> >> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java >>> >>> Modified: >> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java >>> URL: >> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1297301&r1=1297300&r2=1297301&view=diff >>> >> ============================================================================== >>> --- >> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java >> (original) >>> +++ >> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java >> Tue Mar 6 00:02:21 2012 >>> @@ -1279,11 +1279,27 @@ public class BeanContext extends Deploym >>> >>> // Create bean instance >>> final Object beanInstance; >>> - final InjectionProcessor injectionProcessor = new >> InjectionProcessor(beanConstructor.create(creationalContext), >> this.getInjections(), InjectionProcessor.unwrap(ctx)); >>> + final InjectionProcessor injectionProcessor; >>> if (!isDynamicallyImplemented()) { >>> + injectionProcessor = new >> InjectionProcessor(beanConstructor.create(creationalContext), >> getInjections(), InjectionProcessor.unwrap(ctx)); >>> beanInstance = injectionProcessor.createInstance(); >>> inject(beanInstance, creationalContext); >>> } else { >>> + // update target >>> + final List<Injection> newInjections = new >> ArrayList<Injection>(); >>> + for (Injection injection : getInjections()) { >>> + if (beanClass.equals(injection.getTarget())) { >>> + final Injection updated = new >> Injection(injection.getJndiName(), injection.getName(), >> beanDefinition.getBeanClass()); >>> + newInjections.add(updated); >>> + } else { >>> + newInjections.add(injection); >>> + } >>> + } >>> + injections.clear(); >>> + injections.addAll(newInjections); >>> + >>> + injectionProcessor = new >> InjectionProcessor(beanConstructor.create(creationalContext), injections, >> InjectionProcessor.unwrap(ctx)); >>> + >> injectionProcessor.setProperty("implementingInterfaceClass", beanClass); >>> InvocationHandler handler = (InvocationHandler) >> injectionProcessor.createInstance(); >>> beanInstance = DynamicProxyImplFactory.newProxy(this, >> handler); >>> inject(handler, creationalContext); >>> >>> >>> >> >>
