You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2013/01/13 22:31:55 UTC
svn commit: r1432749 - in /openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/config/
main/java/org/apache/webbeans/intercept/
test/java/org/apache/webbeans/newtests/interceptors/resolution/
Author: struberg
Date: Sun Jan 13 21:31:55 2013
New Revision: 1432749
URL: http://svn.apache.org/viewvc?rev=1432749&view=rev
Log:
OWB-344 create method for creating EJB interceptors in InterceptorsManager
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorComparator.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataComparator.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1432749&r1=1432748&r2=1432749&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java Sun Jan 13 21:31:55 2013
@@ -344,7 +344,7 @@ public class BeansDeployer
beans.clear();
//Adding interceptors to validate
- List<javax.enterprise.inject.spi.Interceptor<?>> interceptors = webBeansContext.getInterceptorsManager().getInterceptors();
+ List<javax.enterprise.inject.spi.Interceptor<?>> interceptors = webBeansContext.getInterceptorsManager().getCdiInterceptors();
for(javax.enterprise.inject.spi.Interceptor interceptor : interceptors)
{
WebBeansInterceptorBeanPleaseRemove wbInt = (WebBeansInterceptorBeanPleaseRemove)interceptor;
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorComparator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorComparator.java?rev=1432749&r1=1432748&r2=1432749&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorComparator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorComparator.java Sun Jan 13 21:31:55 2013
@@ -46,7 +46,7 @@ public class InterceptorComparator<T> im
Class<?> o1Clazz = o1.getBeanClass();
Class<?> o2Clazz = o2.getBeanClass();
- return interceptorsManager.compare(o1Clazz, o2Clazz);
+ return interceptorsManager.compareCdiInterceptors(o1Clazz, o2Clazz);
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataComparator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataComparator.java?rev=1432749&r1=1432748&r2=1432749&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataComparator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataComparator.java Sun Jan 13 21:31:55 2013
@@ -69,7 +69,7 @@ public class InterceptorDataComparator i
Class<?> o1Clazz = interceptorFirst.getClazz();
Class<?> o2Clazz = interceptorSecond.getClazz();
- return instance.getInterceptorsManager().compare(o1Clazz, o2Clazz);
+ return instance.getInterceptorsManager().compareCdiInterceptors(o1Clazz, o2Clazz);
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java?rev=1432749&r1=1432748&r2=1432749&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java Sun Jan 13 21:31:55 2013
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.enterprise.inject.spi.AnnotatedType;
@@ -33,6 +34,7 @@ import javax.enterprise.inject.spi.Inter
import javax.enterprise.inject.spi.PassivationCapable;
import org.apache.webbeans.component.OwbBean;
+import org.apache.webbeans.component.creation.EjbInterceptorBeanBuilder;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.exception.WebBeansConfigurationException;
@@ -56,6 +58,11 @@ public class InterceptorsManager
*/
private List<Interceptor<?>> cdiInterceptors = new ArrayList<Interceptor<?>>();
+ /**
+ * EJB-style Interceptor beans.
+ */
+ private ConcurrentHashMap<Class<?>, Interceptor<?>> ejbInterceptors = new ConcurrentHashMap<Class<?>, Interceptor<?>>();
+
/**Additional interceptor class*/
private List<Class<?>> additionalInterceptorClasses = new ArrayList<Class<?>>();
@@ -81,6 +88,8 @@ public class InterceptorsManager
additionalInterceptorBindingTypes.clear();
additionalInterceptorClasses.clear();
configuredInterceptorClasses.clear();
+ cdiInterceptors.clear();
+ ejbInterceptors.clear();
}
@@ -98,9 +107,34 @@ public class InterceptorsManager
}
/**
+ * get the EJB-style Interceptor
+ * @param interceptorClass
+ * @param <T>
+ * @return
+ */
+ public <T> Interceptor<T> getEjbInterceptorForClass(Class<T> interceptorClass)
+ {
+ Interceptor<T> interceptor = (Interceptor<T>) ejbInterceptors.get(interceptorClass);
+ if (interceptor == null)
+ {
+ AnnotatedType<T> annotatedType = webBeansContext.getBeanManagerImpl().createAnnotatedType(interceptorClass);
+ EjbInterceptorBeanBuilder<T> buildr = new EjbInterceptorBeanBuilder<T>(webBeansContext, annotatedType);
+ buildr.defineEjbInterceptorRules();
+ Interceptor<T> i = buildr.getBean();
+ interceptor = (Interceptor<T>) ejbInterceptors.putIfAbsent(interceptorClass, i);
+ if (interceptor == null)
+ {
+ interceptor = i;
+ }
+ }
+
+ return interceptor;
+ }
+
+ /**
* Helper to compare the order of different interceptor classes
*/
- public int compare(Class<?> src, Class<?> target)
+ public int compareCdiInterceptors(Class<?> src, Class<?> target)
{
Asserts.assertNotNull(src, "src parameter can not be null");
Asserts.assertNotNull(target, "target parameter can not be null");
@@ -163,7 +197,7 @@ public class InterceptorsManager
}
- public List<Interceptor<?>> getInterceptors()
+ public List<Interceptor<?>> getCdiInterceptors()
{
return cdiInterceptors;
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java?rev=1432749&r1=1432748&r2=1432749&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java Sun Jan 13 21:31:55 2013
@@ -402,7 +402,7 @@ public final class WebBeansInterceptorCo
{
Set<Interceptor<?>> set = new HashSet<Interceptor<?>>();
- Iterator<Interceptor<?>> it = webBeansContext.getInterceptorsManager().getInterceptors().iterator();
+ Iterator<Interceptor<?>> it = webBeansContext.getInterceptorsManager().getCdiInterceptors().iterator();
List<Class<? extends Annotation>> bindingTypes = new ArrayList<Class<? extends Annotation>>();
List<Annotation> listAnnot = new ArrayList<Annotation>();
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java?rev=1432749&r1=1432748&r2=1432749&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java Sun Jan 13 21:31:55 2013
@@ -20,6 +20,8 @@ package org.apache.webbeans.newtests.int
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.InterceptionType;
+import javax.enterprise.inject.spi.Interceptor;
import java.util.ArrayList;
import java.util.Collection;
@@ -65,4 +67,27 @@ public class EjbInterceptorBeanBuilderTe
shutDownContainer();
}
+ @Test
+ public void testInterceptorsManagerEjbBeanCreation()
+ {
+ Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+ beanClasses.add(UtilitySampleBean.class);
+ beanClasses.add(EjbInterceptor.class);
+ beanClasses.add(ManagedBeanWithEjbInterceptor.class);
+
+ startContainer(beanClasses, null);
+
+ Interceptor<EjbInterceptor> interceptor = getWebBeansContext().getInterceptorsManager().getEjbInterceptorForClass(EjbInterceptor.class);
+ Assert.assertNotNull(interceptor);
+ Assert.assertTrue(interceptor.intercepts(InterceptionType.AROUND_INVOKE));
+
+ Interceptor<EjbInterceptor> interceptor2 = getWebBeansContext().getInterceptorsManager().getEjbInterceptorForClass(EjbInterceptor.class);
+ Assert.assertNotNull(interceptor2);
+ Assert.assertTrue(interceptor2.intercepts(InterceptionType.AROUND_INVOKE));
+
+ Assert.assertTrue(interceptor == interceptor2); // should return previous instance
+
+ shutDownContainer();
+ }
+
}