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());


Reply via email to