You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/12/24 14:34:38 UTC

svn commit: r1425644 - in /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi: BeansDeployer.java CdiInterceptor.java OpenEJBLifecycle.java

Author: rmannibucau
Date: Mon Dec 24 13:34:37 2012
New Revision: 1425644

URL: http://svn.apache.org/viewvc?rev=1425644&view=rev
Log:
TOMEE-677 no need to create a CreationalContext for each invocation + no need to create one DefinitionUtil each time we need it + (the real fix) setting the ProcessAnnotatedType in the CdiEjbBean to be able to get updates from CDI extensions when creating interceptors etc...

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/BeansDeployer.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/BeansDeployer.java?rev=1425644&r1=1425643&r2=1425644&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/BeansDeployer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/BeansDeployer.java Mon Dec 24 13:34:37 2012
@@ -247,12 +247,12 @@ public class BeansDeployer {
                     if (!(bean instanceof Decorator) &&
                             !(bean instanceof javax.enterprise.inject.spi.Interceptor) &&
                             !(bean instanceof NewBean)) {
-                        new DefinitionUtil(webBeansContext).defineDecoratorStack((AbstractInjectionTargetBean<Object>) bean);
+                        webBeansContext.getDefinitionUtil().defineDecoratorStack((AbstractInjectionTargetBean<Object>) bean);
                     }
 
                     //If intercepted marker
                     if (bean instanceof InterceptedMarker) {
-                    	new DefinitionUtil(webBeansContext).defineBeanInterceptorStack((AbstractInjectionTargetBean<Object>) bean);
+                    	webBeansContext.getDefinitionUtil().defineBeanInterceptorStack((AbstractInjectionTargetBean<Object>) bean);
                     }
                 }
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java?rev=1425644&r1=1425643&r2=1425644&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java Mon Dec 24 13:34:37 2012
@@ -16,7 +16,6 @@
  */
 package org.apache.openejb.cdi;
 
-import javassist.util.proxy.ProxyObject;
 import org.apache.openejb.core.ivm.IntraVmArtifact;
 import org.apache.webbeans.component.InjectionTargetBean;
 import org.apache.webbeans.config.WebBeansContext;
@@ -101,11 +100,10 @@ public class CdiInterceptor implements S
     }
 
     private Object invoke(InvocationContext ejbContext) throws Exception {
-        final CreationalContext<?> context = getCreationalContext();
-
         Object instance = ejbContext.getTarget();
 
         if (bean.getDecoratorStack().size() > 0) {
+            final CreationalContext<?> context = getCreationalContext();
 
             final ProxyFactory proxyFactory = webBeansContext.getProxyFactory();
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java?rev=1425644&r1=1425643&r2=1425644&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java Mon Dec 24 13:34:37 2012
@@ -223,10 +223,10 @@ public class OpenEJBLifecycle implements
                         final Class implClass = beanContext.getManagedClass();
 
                         //Define annotation type
-                        AnnotatedType<?> annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass);
+                        final AnnotatedType<Object> annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass);
 
                         //Fires ProcessAnnotatedType
-                        ProcessAnnotatedTypeImpl<?> processAnnotatedEvent = webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
+                        final ProcessAnnotatedTypeImpl<?> processAnnotatedEvent = webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
 
                         // TODO Can you really veto an EJB?
                         //if veto() is called
@@ -234,7 +234,8 @@ public class OpenEJBLifecycle implements
                             continue;
                         }
 
-                        CdiEjbBean<Object> bean = new CdiEjbBean<Object>(beanContext, webBeansContext);
+                        final CdiEjbBean<Object> bean = new CdiEjbBean<Object>(beanContext, webBeansContext);
+                        bean.setAnnotatedType((AnnotatedType<Object>) processAnnotatedEvent.getAnnotatedType()); // update AnnotatedType -- can be updated in extensions
 
                         beanContext.set(CdiEjbBean.class, bean);
                         beanContext.set(CurrentCreationalContext.class, new CurrentCreationalContext());