[jboss-cvs] JBossAS SVN: r73220 - 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:37:15 EDT 2008


Author: kabir.khan at jboss.com
Date: 2008-05-09 12:37:15 -0400 (Fri, 09 May 2008)
New Revision: 73220

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-1351] exclude-class-interceptors was being 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 16:27:24 UTC (rev 73219)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/metadata/BeanInterceptorMetaDataBridge.java	2008-05-09 16:37:15 UTC (rev 73220)
@@ -87,6 +87,7 @@
    private Map<Signature, Interceptors> methodInterceptors = new HashMap<Signature, Interceptors>(); 
    private Map<Signature, InterceptorOrder> methodInterceptorOrders = new HashMap<Signature, InterceptorOrder>();
    private Map<Signature, ExcludeDefaultInterceptors> methodExcludeDefaultInterceptors = new HashMap<Signature, ExcludeDefaultInterceptors>();
+   private Map<Signature, ExcludeClassInterceptors> methodExcludeClassInterceptors = new HashMap<Signature, ExcludeClassInterceptors>();
    
    
    //Bean class methods
@@ -347,6 +348,15 @@
       {
          methodExcludeDefaultInterceptors.put(sig, exDefaultInterceptors);
       }
+      if (binding.isExcludeClassInterceptors())
+      {
+         methodExcludeClassInterceptors.put(sig, new ExcludeClassInterceptors() {
+
+            public Class<? extends Annotation> annotationType()
+            {
+               return ExcludeClassInterceptors.class;
+            }});
+      }
    }
    
    private void initialiseMethodInterceptors(Map<String, List<Method>> methodMap, MethodSignatures methodSignatures, List<InterceptorBindingMetaData> bindings)
@@ -568,6 +578,11 @@
          MethodSignature signature = new MethodSignature(methodName, parameterNames);
          return annotationClass.cast(methodExcludeDefaultInterceptors.get(signature));
       }
+      else if (annotationClass == ExcludeClassInterceptors.class)
+      {
+         MethodSignature signature = new MethodSignature(methodName, parameterNames);
+         return annotationClass.cast(methodExcludeClassInterceptors.get(signature));
+      }
       else if(annotationClass == PostActivate.class)
       {
          if(beanMetaData instanceof JBossSessionBeanMetaData && parameterNames.length == 0 && postActivates != null) 

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 16:27:24 UTC (rev 73219)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/exclude/unit/ExcludeInterceptorsTestCase.java	2008-05-09 16:37:15 UTC (rev 73220)
@@ -47,6 +47,7 @@
 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.XmlExcludeClassBean;
 import org.jboss.ejb3.test.interceptors.exclude.XmlExcludeDefaultBean;
 import org.jboss.ejb3.test.interceptors.exclude.XmlExcludeDefaultForMethodBean;
 import org.jboss.logging.Logger;
@@ -586,4 +587,55 @@
       log.info("======= Done");
    }
    
+   public void testXmlExcludeClassInterceptors() throws Throwable
+   {
+     AspectManager.verbose = true;
+      
+      // To make surefire happy
+      Thread.currentThread().setContextClassLoader(XmlExcludeClassBean.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("XmlExcludeClassBean");
+      assertNotNull(beanMetaData);
+      MyContainer<XmlExcludeClassBean> container = new MyContainer<XmlExcludeClassBean>("XmlExcludeClassBean", "Test", XmlExcludeClassBean.class, beanMetaData);
+      container.testAdvisor();
+
+      Interceptions.clear();
+      ArrayList<Class<?>> interceptions = Interceptions.getInterceptions();
+      assertEquals(0, interceptions.size());
+      BeanContext<XmlExcludeClassBean> bean = container.construct();
+      assertEquals(3,  interceptions.size());
+      assertEquals(DefaultInterceptor.class, interceptions.get(0));
+      assertEquals(ClassInterceptor.class, interceptions.get(1));
+      assertEquals(XmlExcludeClassBean.class, interceptions.get(2));
+ 
+      Interceptions.clear();
+      interceptions = Interceptions.getInterceptions();
+      assertEquals(0, interceptions.size());
+      
+      String ret = container.invoke(bean, "method");
+      assertEquals(XmlExcludeClassBean.class.getName(), ret);
+      assertEquals(3,  interceptions.size());
+      assertEquals(DefaultInterceptor.class, interceptions.get(0));
+      assertEquals(MethodInterceptor.class, interceptions.get(1));
+      assertEquals(XmlExcludeClassBean.class, interceptions.get(2));
+      
+      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(XmlExcludeClassBean.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 16:27:24 UTC (rev 73219)
+++ projects/ejb3/trunk/interceptors/src/test/resources/exclude/META-INF/ejb-jar.xml	2008-05-09 16:37:15 UTC (rev 73220)
@@ -144,5 +144,18 @@
          </method>
       </interceptor-binding>
 
+      <interceptor-binding>
+         <ejb-name>XmlExcludeClassBean</ejb-name>
+         <interceptor-class>org.jboss.ejb3.test.interceptors.exclude.ClassInterceptor</interceptor-class>
+      </interceptor-binding>
+      <interceptor-binding>
+         <ejb-name>XmlExcludeClassBean</ejb-name>
+         <interceptor-class>org.jboss.ejb3.test.interceptors.exclude.MethodInterceptor</interceptor-class>
+         <exclude-class-interceptors>true</exclude-class-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