[jboss-cvs] JBossAS SVN: r73213 - in projects/ejb3/trunk/interceptors/src: test/java/org/jboss/ejb3/test/interceptors/exclude/unit and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri May 9 12:03:16 EDT 2008
Author: kabir.khan at jboss.com
Date: 2008-05-09 12:03:16 -0400 (Fri, 09 May 2008)
New Revision: 73213
Modified:
projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/metadata/BeanInterceptorMetaDataBridge.java
projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/exclude/unit/ExcludeInterceptorsTestCase.java
projects/ejb3/trunk/interceptors/src/test/resources/exclude/META-INF/ejb-jar.xml
Log:
[EJBTHREE-1349] exclude-default-interceptors on a class level binding is ignored
Modified: projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/metadata/BeanInterceptorMetaDataBridge.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/metadata/BeanInterceptorMetaDataBridge.java 2008-05-09 15:54:57 UTC (rev 73212)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/metadata/BeanInterceptorMetaDataBridge.java 2008-05-09 16:03:16 UTC (rev 73213)
@@ -34,6 +34,7 @@
import javax.ejb.PostActivate;
import javax.ejb.PrePassivate;
import javax.interceptor.AroundInvoke;
+import javax.interceptor.ExcludeDefaultInterceptors;
import javax.interceptor.Interceptors;
import javax.interceptor.InvocationContext;
@@ -79,6 +80,7 @@
private DefaultInterceptors defaultInterceptors;
private Interceptors interceptors;
private InterceptorOrder interceptorOrder;
+ private ExcludeDefaultInterceptors excludeDefaultInterceptors;
//Method-level things
private Map<Signature, Interceptors> methodInterceptors = new HashMap<Signature, Interceptors>();
@@ -291,6 +293,7 @@
for (InterceptorBindingMetaData binding : bindings)
{
add(interceptors, classLoader, binding);
+ checkExcludeDefaultInterceptors(binding);
}
if(!interceptors.isEmpty())
this.interceptors = interceptors;
@@ -305,12 +308,26 @@
for (InterceptorBindingMetaData binding : bindings)
{
add(interceptors, classLoader, binding);
+ checkExcludeDefaultInterceptors(binding);
}
if(!interceptors.isEmpty())
this.interceptorOrder = interceptors;
}
}
+ private void checkExcludeDefaultInterceptors(InterceptorBindingMetaData binding)
+ {
+ if (binding.isExcludeDefaultInterceptors())
+ {
+ excludeDefaultInterceptors = new ExcludeDefaultInterceptors() {
+
+ public Class<? extends Annotation> annotationType()
+ {
+ return ExcludeDefaultInterceptors.class;
+ }};
+ }
+ }
+
private void initialiseMethodInterceptors(Map<String, List<Method>> methodMap, MethodSignatures methodSignatures, List<InterceptorBindingMetaData> bindings)
{
if (bindings != null && bindings.size() > 0)
@@ -488,6 +505,10 @@
{
return annotationClass.cast(interceptors);
}
+ else if (annotationClass == ExcludeDefaultInterceptors.class)
+ {
+ return annotationClass.cast(excludeDefaultInterceptors);
+ }
return super.retrieveAnnotation(annotationClass, beanMetaData, classLoader);
}
Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/exclude/unit/ExcludeInterceptorsTestCase.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/exclude/unit/ExcludeInterceptorsTestCase.java 2008-05-09 15:54:57 UTC (rev 73212)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/exclude/unit/ExcludeInterceptorsTestCase.java 2008-05-09 16:03:16 UTC (rev 73213)
@@ -46,6 +46,9 @@
import org.jboss.ejb3.test.interceptors.exclude.DefaultInterceptor;
import org.jboss.ejb3.test.interceptors.exclude.Interceptions;
import org.jboss.ejb3.test.interceptors.exclude.MethodInterceptor;
+import org.jboss.ejb3.test.interceptors.exclude.XmlAllInterceptorsBean;
+import org.jboss.ejb3.test.interceptors.exclude.XmlExcludeDefaultBean;
+import org.jboss.ejb3.test.interceptors.exclude.XmlExcludeDefaultForMethodBean;
import org.jboss.logging.Logger;
import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
@@ -432,12 +435,112 @@
log.info("======= Done");
}
-// public void testXmlAllInterceptors() throws Throwable
+ public void testXmlAllInterceptors() throws Throwable
+ {
+ AspectManager.verbose = true;
+
+ // To make surefire happy
+ Thread.currentThread().setContextClassLoader(AnnotatedAllInterceptorsBean.class.getClassLoader());
+
+ // Bootstrap metadata
+ UnmarshallerFactory unmarshallerFactory = UnmarshallerFactory.newInstance();
+ Unmarshaller unmarshaller = unmarshallerFactory.newUnmarshaller();
+ URL url = Thread.currentThread().getContextClassLoader().getResource("exclude/META-INF/ejb-jar.xml");
+ EjbJar30MetaData metaData = (EjbJar30MetaData) unmarshaller.unmarshal(url.toString(), schemaResolverForClass(EjbJar30MetaData.class));
+ JBoss50MetaData jbossMetaData = new JBoss50MetaData();
+ jbossMetaData.merge(null, metaData);
+
+ JBossEnterpriseBeanMetaData beanMetaData = jbossMetaData.getEnterpriseBean("XmlAllInterceptorsBean");
+ assertNotNull(beanMetaData);
+ MyContainer<XmlAllInterceptorsBean> container = new MyContainer<XmlAllInterceptorsBean>("XmlAllInterceptorsBean", "Test", XmlAllInterceptorsBean.class, beanMetaData);
+ container.testAdvisor();
+
+ Interceptions.clear();
+ ArrayList<Class<?>> interceptions = Interceptions.getInterceptions();
+ assertEquals(0, interceptions.size());
+ BeanContext<XmlAllInterceptorsBean> bean = container.construct();
+ assertEquals(3, interceptions.size());
+ assertEquals(DefaultInterceptor.class, interceptions.get(0));
+ assertEquals(ClassInterceptor.class, interceptions.get(1));
+ assertEquals(XmlAllInterceptorsBean.class, interceptions.get(2));
+
+ Interceptions.clear();
+ assertEquals(0, interceptions.size());
+
+ String ret = container.invoke(bean, "method");
+ assertEquals(XmlAllInterceptorsBean.class.getName(), ret);
+ assertEquals(4, interceptions.size());
+ assertEquals(DefaultInterceptor.class, interceptions.get(0));
+ assertEquals(ClassInterceptor.class, interceptions.get(1));
+ assertEquals(MethodInterceptor.class, interceptions.get(2));
+ assertEquals(XmlAllInterceptorsBean.class, interceptions.get(3));
+
+ Interceptions.clear();
+ assertEquals(0, interceptions.size());
+ container.destroy(bean);
+ assertEquals(3, interceptions.size());
+ assertEquals(DefaultInterceptor.class, interceptions.get(0));
+ assertEquals(ClassInterceptor.class, interceptions.get(1));
+ assertEquals(XmlAllInterceptorsBean.class, interceptions.get(2));
+
+ log.info("======= Done");
+ }
+
+ public void testXmlExcludeDefaultInterceptors() throws Throwable
+ {
+ AspectManager.verbose = true;
+
+ // To make surefire happy
+ Thread.currentThread().setContextClassLoader(XmlExcludeDefaultBean.class.getClassLoader());
+
+ // Bootstrap metadata
+ UnmarshallerFactory unmarshallerFactory = UnmarshallerFactory.newInstance();
+ Unmarshaller unmarshaller = unmarshallerFactory.newUnmarshaller();
+ URL url = Thread.currentThread().getContextClassLoader().getResource("exclude/META-INF/ejb-jar.xml");
+ EjbJar30MetaData metaData = (EjbJar30MetaData) unmarshaller.unmarshal(url.toString(), schemaResolverForClass(EjbJar30MetaData.class));
+ JBoss50MetaData jbossMetaData = new JBoss50MetaData();
+ jbossMetaData.merge(null, metaData);
+
+ JBossEnterpriseBeanMetaData beanMetaData = jbossMetaData.getEnterpriseBean("XmlExcludeDefaultBean");
+ assertNotNull(beanMetaData);
+ MyContainer<XmlExcludeDefaultBean> container = new MyContainer<XmlExcludeDefaultBean>("XmlExcludeDefaultBean", "Test", XmlExcludeDefaultBean.class, beanMetaData);
+ container.testAdvisor();
+
+ Interceptions.clear();
+ ArrayList<Class<?>> interceptions = Interceptions.getInterceptions();
+ assertEquals(0, interceptions.size());
+ BeanContext<XmlExcludeDefaultBean> bean = container.construct();
+ assertEquals(2, interceptions.size());
+ assertEquals(ClassInterceptor.class, interceptions.get(0));
+ assertEquals(XmlExcludeDefaultBean.class, interceptions.get(1));
+
+ Interceptions.clear();
+ interceptions = Interceptions.getInterceptions();
+ assertEquals(0, interceptions.size());
+
+ String ret = container.invoke(bean, "method");
+ assertEquals(XmlExcludeDefaultBean.class.getName(), ret);
+ assertEquals(3, interceptions.size());
+ assertEquals(ClassInterceptor.class, interceptions.get(0));
+ assertEquals(MethodInterceptor.class, interceptions.get(1));
+ assertEquals(XmlExcludeDefaultBean.class, interceptions.get(2));
+
+ Interceptions.clear();
+ assertEquals(0, interceptions.size());
+ container.destroy(bean);
+ assertEquals(2, interceptions.size());
+ assertEquals(ClassInterceptor.class, interceptions.get(0));
+ assertEquals(XmlExcludeDefaultBean.class, interceptions.get(1));
+
+ log.info("======= Done");
+ }
+
+// public void testXmlExcludeDefaultInterceptorsForMethod() throws Throwable
// {
// AspectManager.verbose = true;
//
// // To make surefire happy
-// Thread.currentThread().setContextClassLoader(AnnotatedAllInterceptorsBean.class.getClassLoader());
+// Thread.currentThread().setContextClassLoader(XmlExcludeDefaultForMethodBean.class.getClassLoader());
//
// // Bootstrap metadata
// UnmarshallerFactory unmarshallerFactory = UnmarshallerFactory.newInstance();
@@ -447,89 +550,40 @@
// JBoss50MetaData jbossMetaData = new JBoss50MetaData();
// jbossMetaData.merge(null, metaData);
//
-// JBossEnterpriseBeanMetaData beanMetaData = jbossMetaData.getEnterpriseBean("XmlAllInterceptorsBean");
+// JBossEnterpriseBeanMetaData beanMetaData = jbossMetaData.getEnterpriseBean("XmlExcludeDefaultForMethodBean");
// assertNotNull(beanMetaData);
-// MyContainer<XmlAllInterceptorsBean> container = new MyContainer<XmlAllInterceptorsBean>("XmlAllInterceptorsBean", "Test", XmlAllInterceptorsBean.class, beanMetaData);
+// MyContainer<XmlExcludeDefaultForMethodBean> container = new MyContainer<XmlExcludeDefaultForMethodBean>("XmlExcludeDefaultForMethodBean", "Test", XmlExcludeDefaultForMethodBean.class, beanMetaData);
// container.testAdvisor();
//
// Interceptions.clear();
// ArrayList<Class<?>> interceptions = Interceptions.getInterceptions();
// assertEquals(0, interceptions.size());
-// BeanContext<XmlAllInterceptorsBean> bean = container.construct();
+// BeanContext<XmlExcludeDefaultForMethodBean> bean = container.construct();
// assertEquals(3, interceptions.size());
// assertEquals(DefaultInterceptor.class, interceptions.get(0));
// assertEquals(ClassInterceptor.class, interceptions.get(1));
-// assertEquals(XmlAllInterceptorsBean.class, interceptions.get(2));
+// assertEquals(XmlExcludeDefaultForMethodBean.class, interceptions.get(2));
//
// Interceptions.clear();
-// assertEquals(0, interceptions.size());
-//
-// String ret = container.invoke(bean, "method");
-// assertEquals(XmlAllInterceptorsBean.class.getName(), ret);
-// assertEquals(4, interceptions.size());
-// assertEquals(DefaultInterceptor.class, interceptions.get(0));
-// assertEquals(ClassInterceptor.class, interceptions.get(1));
-// assertEquals(MethodInterceptor.class, interceptions.get(2));
-// assertEquals(XmlAllInterceptorsBean.class, interceptions.get(3));
-//
-// Interceptions.clear();
-// assertEquals(0, interceptions.size());
-// container.destroy(bean);
-// assertEquals(3, interceptions.size());
-// assertEquals(DefaultInterceptor.class, interceptions.get(0));
-// assertEquals(ClassInterceptor.class, interceptions.get(1));
-// assertEquals(XmlAllInterceptorsBean.class, interceptions.get(2));
-//
-// log.info("======= Done");
-// }
-//
-// public void testXmlExcludeDefaultInterceptors() throws Throwable
-// {
-// AspectManager.verbose = true;
-//
-// // To make surefire happy
-// Thread.currentThread().setContextClassLoader(XmlExcludeDefaultBean.class.getClassLoader());
-//
-// // Bootstrap metadata
-// UnmarshallerFactory unmarshallerFactory = UnmarshallerFactory.newInstance();
-// Unmarshaller unmarshaller = unmarshallerFactory.newUnmarshaller();
-// URL url = Thread.currentThread().getContextClassLoader().getResource("exclude/META-INF/ejb-jar.xml");
-// EjbJar30MetaData metaData = (EjbJar30MetaData) unmarshaller.unmarshal(url.toString(), schemaResolverForClass(EjbJar30MetaData.class));
-// JBoss50MetaData jbossMetaData = new JBoss50MetaData();
-// jbossMetaData.merge(null, metaData);
-//
-// JBossEnterpriseBeanMetaData beanMetaData = jbossMetaData.getEnterpriseBean("XmlExcludeDefaultBean");
-// assertNotNull(beanMetaData);
-// MyContainer<XmlExcludeDefaultBean> container = new MyContainer<XmlExcludeDefaultBean>("XmlExcludeDefaultBean", "Test", XmlExcludeDefaultBean.class, beanMetaData);
-// container.testAdvisor();
-//
-// Interceptions.clear();
-// ArrayList<Class<?>> interceptions = Interceptions.getInterceptions();
-// assertEquals(0, interceptions.size());
-// BeanContext<XmlExcludeDefaultBean> bean = container.construct();
-// assertEquals(2, interceptions.size());
-// assertEquals(ClassInterceptor.class, interceptions.get(0));
-// assertEquals(XmlExcludeDefaultBean.class, interceptions.get(1));
-//
-// Interceptions.clear();
// interceptions = Interceptions.getInterceptions();
// assertEquals(0, interceptions.size());
//
// String ret = container.invoke(bean, "method");
-// assertEquals(XmlExcludeDefaultBean.class.getName(), ret);
+// assertEquals(XmlExcludeDefaultForMethodBean.class.getName(), ret);
// assertEquals(3, interceptions.size());
// assertEquals(ClassInterceptor.class, interceptions.get(0));
// assertEquals(MethodInterceptor.class, interceptions.get(1));
-// assertEquals(XmlExcludeDefaultBean.class, interceptions.get(2));
+// assertEquals(XmlExcludeDefaultForMethodBean.class, interceptions.get(2));
//
// Interceptions.clear();
// assertEquals(0, interceptions.size());
// container.destroy(bean);
-// assertEquals(2, interceptions.size());
-// assertEquals(ClassInterceptor.class, interceptions.get(0));
-// assertEquals(XmlExcludeDefaultBean.class, interceptions.get(1));
+// assertEquals(3, interceptions.size());
+// assertEquals(DefaultInterceptor.class, interceptions.get(0));
+// assertEquals(ClassInterceptor.class, interceptions.get(1));
+// assertEquals(XmlExcludeDefaultForMethodBean.class, interceptions.get(2));
//
// log.info("======= Done");
// }
-
+
}
Modified: projects/ejb3/trunk/interceptors/src/test/resources/exclude/META-INF/ejb-jar.xml
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/resources/exclude/META-INF/ejb-jar.xml 2008-05-09 15:54:57 UTC (rev 73212)
+++ projects/ejb3/trunk/interceptors/src/test/resources/exclude/META-INF/ejb-jar.xml 2008-05-09 16:03:16 UTC (rev 73213)
@@ -27,7 +27,6 @@
<session>
<ejb-name>AnnotatedExcludeClassAndDefaultForMethodBean</ejb-name>
</session>
-<!--
<session>
<ejb-name>XmlAllInterceptorsBean</ejb-name>
<around-invoke>
@@ -100,14 +99,13 @@
<lifecycle-callback-method>lifecycle</lifecycle-callback-method>
</pre-destroy>
</session>
--->
</enterprise-beans>
<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>org.jboss.ejb3.test.interceptors.exclude.DefaultInterceptor</interceptor-class>
</interceptor-binding>
-<!--
+
<interceptor-binding>
<ejb-name>XmlAllInterceptorsBean</ejb-name>
<interceptor-class>org.jboss.ejb3.test.interceptors.exclude.ClassInterceptor</interceptor-class>
@@ -119,6 +117,7 @@
<method-name>method</method-name>
</method>
</interceptor-binding>
+
<interceptor-binding>
<ejb-name>XmlExcludeDefaultBean</ejb-name>
<interceptor-class>org.jboss.ejb3.test.interceptors.exclude.ClassInterceptor</interceptor-class>
@@ -131,6 +130,19 @@
<method-name>method</method-name>
</method>
</interceptor-binding>
--->
+
+ <interceptor-binding>
+ <ejb-name>XmlExcludeDefaultForMethodBean</ejb-name>
+ <interceptor-class>org.jboss.ejb3.test.interceptors.exclude.ClassInterceptor</interceptor-class>
+ </interceptor-binding>
+ <interceptor-binding>
+ <ejb-name>XmlExcludeDefaultForMethodBean</ejb-name>
+ <interceptor-class>org.jboss.ejb3.test.interceptors.exclude.MethodInterceptor</interceptor-class>
+ <exclude-default-interceptors>true</exclude-default-interceptors>
+ <method>
+ <method-name>method</method-name>
+ </method>
+ </interceptor-binding>
+
</assembly-descriptor>
</ejb-jar>
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list