[jboss-cvs] JBossAS SVN: r68805 - projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jan 10 04:26:21 EST 2008
Author: wolfc
Date: 2008-01-10 04:26:21 -0500 (Thu, 10 Jan 2008)
New Revision: 68805
Modified:
projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/InterceptorsFactory.java
Log:
Instantiate interceptors once
Modified: projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/InterceptorsFactory.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/InterceptorsFactory.java 2008-01-10 09:25:46 UTC (rev 68804)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/InterceptorsFactory.java 2008-01-10 09:26:21 UTC (rev 68805)
@@ -23,7 +23,9 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.annotation.PostConstruct;
import javax.interceptor.AroundInvoke;
@@ -61,11 +63,18 @@
Interceptors interceptorsAnnotation = (Interceptors) advisor.resolveAnnotation(Interceptors.class);
assert interceptorsAnnotation != null : "interceptors annotation not found"; // FIXME: not correct, bean can be without interceptors
+ Map<Class<?>, Object> interceptors = new HashMap<Class<?>, Object>();
List<Interceptor> postConstructs = new ArrayList<Interceptor>();
List<Interceptor> classInterceptors = new ArrayList<Interceptor>();
for(Class<?> interceptorClass : interceptorsAnnotation.value())
{
- Object interceptor = interceptorClass.newInstance();
+ // TODO: what if I've specified the same interceptor twice? (throw an Exception?)
+ Object interceptor = interceptors.get(interceptorClass);
+ if(interceptor == null)
+ {
+ interceptor = interceptorClass.newInstance();
+ interceptors.put(interceptorClass, interceptor);
+ }
//Advisor interceptorAdvisor = ((Advised) interceptor)._getAdvisor();
//Advisor interceptorAdvisor = advisor.getManager().getAdvisor(interceptorClass);
AnnotationAdvisor interceptorAdvisor = AnnotationAdvisorHelper.getAnnotationAdvisor(advisor, interceptor);
@@ -99,8 +108,12 @@
// TODO: use visitors?
for(Class<?> interceptorClass : interceptorsAnnotation.value())
{
- // FIXME: do not create perse, we might already have done that
- Object interceptor = interceptorClass.newInstance();
+ Object interceptor = interceptors.get(interceptorClass);
+ if(interceptor == null)
+ {
+ interceptor = interceptorClass.newInstance();
+ interceptors.put(interceptorClass, interceptor);
+ }
//Advisor interceptorAdvisor = ((Advised) interceptor)._getAdvisor();
//Advisor interceptorAdvisor = advisor.getManager().getAdvisor(interceptorClass);
AnnotationAdvisor interceptorAdvisor = AnnotationAdvisorHelper.getAnnotationAdvisor(advisor, interceptor);
More information about the jboss-cvs-commits
mailing list