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