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 2013/05/09 23:19:44 UTC
svn commit: r1480777 - in
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb:
BeanContext.java core/interceptor/InterceptorData.java
Author: rmannibucau
Date: Thu May 9 21:19:44 2013
New Revision: 1480777
URL: http://svn.apache.org/r1480777
Log:
caching constructor injection bean for interceptors too
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1480777&r1=1480776&r2=1480777&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java Thu May 9 21:19:44 2013
@@ -1490,7 +1490,17 @@ public class BeanContext extends Deploym
final Class clazz = interceptorData.getInterceptorClass();
- final ConstructorInjectionBean interceptorConstructor = new ConstructorInjectionBean(webBeansContext, clazz, webBeansContext.getAnnotatedElementFactory().newAnnotatedType(clazz));
+ ConstructorInjectionBean interceptorConstructor = interceptorData.get(ConstructorInjectionBean.class);
+ if (interceptorConstructor == null) {
+ synchronized (this) {
+ interceptorConstructor = interceptorData.get(ConstructorInjectionBean.class);
+ if (interceptorConstructor == null) {
+ interceptorConstructor = new ConstructorInjectionBean(webBeansContext, clazz, webBeansContext.getAnnotatedElementFactory().newAnnotatedType(clazz));
+ interceptorData.set(ConstructorInjectionBean.class, interceptorConstructor);
+ }
+ }
+ }
+
final InjectionProcessor interceptorInjector = new InjectionProcessor(interceptorConstructor.create(creationalContext), this.getInjections(), org.apache.openejb.InjectionProcessor.unwrap(ctx));
try {
final Object interceptorInstance = interceptorInjector.createInstance();
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java?rev=1480777&r1=1480776&r2=1480777&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java Thu May 9 21:19:44 2013
@@ -19,22 +19,21 @@ package org.apache.openejb.core.intercep
import org.apache.openejb.core.Operation;
import org.apache.openejb.util.SetAccessible;
import org.apache.xbean.finder.ClassFinder;
-import serp.bytecode.Annotation;
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.AroundTimeout;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
-import javax.ejb.PostActivate;
-import javax.ejb.PrePassivate;
import javax.ejb.AfterBegin;
-import javax.ejb.BeforeCompletion;
import javax.ejb.AfterCompletion;
+import javax.ejb.BeforeCompletion;
+import javax.ejb.PostActivate;
+import javax.ejb.PrePassivate;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.AroundTimeout;
import java.lang.reflect.Method;
-import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -61,6 +60,8 @@ public class InterceptorData {
private final Set<Method> aroundTimeout = new LinkedHashSet<Method>();
+ private final Map<Class<?>, Object> data = new HashMap<Class<?>, Object>();
+
public InterceptorData(Class clazz) {
this.clazz = clazz;
}
@@ -182,6 +183,14 @@ public class InterceptorData {
}
}
+ public <T> void set(final Class<T> clazz, final T value) {
+ data.put(clazz, value);
+ }
+
+ public <T> T get(final Class<T> clazz) {
+ return clazz.cast(data.get(clazz));
+ }
+
@Override
public String toString() {
return "InterceptorData{" +