[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