[jboss-cvs] JBossAS SVN: r72581 - in projects/ejb3/trunk/interceptors/src: main/java/org/jboss/ejb3/interceptors/metadata and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 22 13:40:50 EDT 2008


Author: kabir.khan at jboss.com
Date: 2008-04-22 13:40:50 -0400 (Tue, 22 Apr 2008)
New Revision: 72581

Modified:
   projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/LifecycleCallbackBeanMethodInterceptor.java
   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/inheritance/ClassBaseInterceptor.java
   projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/ClassInterceptor.java
   projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlBase.java
   projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlBean.java
   projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlClassBaseInterceptor.java
   projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlClassInterceptor.java
   projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/unit/InheritanceTestCase.java
   projects/ejb3/trunk/interceptors/src/test/resources/inheritance/META-INF/ejb-jar.xml
Log:
EJBTHREE-1313] If bean has lifecycle methods and lifecycle methods (with a different name) also exist on the super-class, make sure that all the methods are called

Modified: projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/LifecycleCallbackBeanMethodInterceptor.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/LifecycleCallbackBeanMethodInterceptor.java	2008-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/LifecycleCallbackBeanMethodInterceptor.java	2008-04-22 17:40:50 UTC (rev 72581)
@@ -72,6 +72,9 @@
          {
             method.setAccessible(accessible);
          }
+         //Call invocation.invokeNext() since bean class callback methods don't call 
+         //InvocationContext.proceed(), and there may be sub-class methods
+         invocation.invokeNext();
          return null;
       }
       catch(InvocationTargetException e)

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-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/metadata/BeanInterceptorMetaDataBridge.java	2008-04-22 17:40:50 UTC (rev 72581)
@@ -50,7 +50,6 @@
 import org.jboss.ejb3.interceptors.util.InterceptorCollection;
 import org.jboss.ejb3.metadata.MetaDataBridge;
 import org.jboss.logging.Logger;
-import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;

Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/ClassBaseInterceptor.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/ClassBaseInterceptor.java	2008-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/ClassBaseInterceptor.java	2008-04-22 17:40:50 UTC (rev 72581)
@@ -35,7 +35,7 @@
 public class ClassBaseInterceptor
 {
    @PostConstruct
-   public static void basePostConstruct(InvocationContext ctx)
+   public void basePostConstruct(InvocationContext ctx)
    {
       try
       {
@@ -49,7 +49,7 @@
    }
    
    @PreDestroy
-   public static void basePreDestroy(InvocationContext ctx)
+   public void basePreDestroy(InvocationContext ctx)
    {
       try
       {

Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/ClassInterceptor.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/ClassInterceptor.java	2008-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/ClassInterceptor.java	2008-04-22 17:40:50 UTC (rev 72581)
@@ -42,7 +42,7 @@
    }
 
    @PostConstruct
-   public static void postConstruct(InvocationContext ctx)
+   public void postConstruct(InvocationContext ctx)
    {
       try
       {
@@ -56,7 +56,7 @@
    }
    
    @PreDestroy
-   public static void preDestroy(InvocationContext ctx)
+   public void preDestroy(InvocationContext ctx)
    {
       try
       {
@@ -68,4 +68,4 @@
          throw new RuntimeException(e);
       }
    }
-   }
+}
\ No newline at end of file

Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlBase.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlBase.java	2008-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlBase.java	2008-04-22 17:40:50 UTC (rev 72581)
@@ -36,4 +36,14 @@
       Interceptions.addAroundInvoke(XmlBase.class);
       return ctx.proceed();
    }
-}
+   
+   public void basePreDestroy()
+   {
+      Interceptions.addPreDestroy(XmlBase.class);
+   }
+   
+   public void basePostConstruct()
+   {
+      Interceptions.addPostConstruct(XmlBase.class);
+   }
+   }

Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlBean.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlBean.java	2008-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlBean.java	2008-04-22 17:40:50 UTC (rev 72581)
@@ -41,4 +41,14 @@
       Interceptions.addAroundInvoke(XmlBean.class);
       return ctx.proceed();
    }
+
+   public void postConstruct()
+   {
+      Interceptions.addPostConstruct(XmlBean.class);
+   }
+   
+   public void preDestroy()
+   {
+      Interceptions.addPreDestroy(XmlBean.class);
+   }
 }

Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlClassBaseInterceptor.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlClassBaseInterceptor.java	2008-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlClassBaseInterceptor.java	2008-04-22 17:40:50 UTC (rev 72581)
@@ -37,4 +37,29 @@
       return ctx.proceed();
    }
 
+   public void basePostConstruct(InvocationContext ctx)
+   {
+      try
+      {
+         Interceptions.addPostConstruct(XmlClassBaseInterceptor.class);
+         ctx.proceed();
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
+   
+   public void basePreDestroy(InvocationContext ctx)
+   {
+      try
+      {
+         Interceptions.addPreDestroy(XmlClassBaseInterceptor.class);
+         ctx.proceed();
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
 }

Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlClassInterceptor.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlClassInterceptor.java	2008-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/XmlClassInterceptor.java	2008-04-22 17:40:50 UTC (rev 72581)
@@ -37,4 +37,29 @@
       return ctx.proceed();
    }
 
+   public void postConstruct(InvocationContext ctx)
+   {
+      try
+      {
+         Interceptions.addPostConstruct(XmlClassInterceptor.class);
+         ctx.proceed();
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
+   
+   public void preDestroy(InvocationContext ctx)
+   {
+      try
+      {
+         Interceptions.addPreDestroy(XmlClassInterceptor.class);
+         ctx.proceed();
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
 }

Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/unit/InheritanceTestCase.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/unit/InheritanceTestCase.java	2008-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/inheritance/unit/InheritanceTestCase.java	2008-04-22 17:40:50 UTC (rev 72581)
@@ -137,7 +137,6 @@
       log.info(deployer.undeploy());
    }
    
-   
    public void testAnnotatedInheritanceAroundInvoke() throws Throwable
    {
       Thread.currentThread().setContextClassLoader(MyInterface.class.getClassLoader());
@@ -188,68 +187,69 @@
       assertEquals(XmlBase.class, interceptions.get(4));
       assertEquals(XmlBean.class, interceptions.get(5));            
    }
+
+   public void testAnnotatedInheritanceLifecycle() throws Throwable
+   {
+      Thread.currentThread().setContextClassLoader(MyInterface.class.getClassLoader());
+      
+      JBossEnterpriseBeanMetaData beanMetaData = getJBossEnterpriseBeanMetaData("AnnotatedBean");
+      
+      MyContainer<AnnotatedBean> container = new MyContainer<AnnotatedBean>("AnnotatedBean", "Test", AnnotatedBean.class, beanMetaData);
+      container.testAdvisor();
+      
+      Interceptions.clear();
+
+      BeanContext<AnnotatedBean> bean = container.construct();
+      ArrayList<Class<?>> postConstructs = Interceptions.getPostConstructs();
+      assertEquals("Wrong number of interceptions " + postConstructs, 4, postConstructs.size());
+      assertEquals(ClassBaseInterceptor.class, postConstructs.get(0));
+      assertEquals(ClassInterceptor.class, postConstructs.get(1));
+      assertEquals(AnnotatedBase.class, postConstructs.get(2));
+      assertEquals(AnnotatedBean.class, postConstructs.get(3));
+      
+      container.invoke(bean, "method");
+      
+      container.destroy(bean);
+      ArrayList<Class<?>> preDestroy = Interceptions.getPreDestroys();
+      assertEquals("Wrong number of interceptions " + preDestroy, 4, preDestroy.size());
+      assertEquals(ClassBaseInterceptor.class, preDestroy.get(0));
+      assertEquals(ClassInterceptor.class, preDestroy.get(1));
+      assertEquals(AnnotatedBase.class, preDestroy.get(2));
+      assertEquals(AnnotatedBean.class, preDestroy.get(3));
+   }
    
-//
-//   public void testAnnotatedInheritanceLifecycle() throws Throwable
-//   {
-//      Thread.currentThread().setContextClassLoader(MyInterface.class.getClassLoader());
-//      
-//      JBossEnterpriseBeanMetaData beanMetaData = getJBossEnterpriseBeanMetaData("AnnotatedBean");
-//      
-//      MyContainer<AnnotatedBean> container = new MyContainer<AnnotatedBean>("AnnotatedBean", "Test", AnnotatedBean.class, beanMetaData);
-//      container.testAdvisor();
-//      
-//      Interceptions.clear();
-//      BeanContext<AnnotatedBean> bean = container.construct();
-//
-//      
-//      ArrayList<Class<?>> postConstructs = Interceptions.getPostConstructs();
-//      assertEquals(4, postConstructs.size());
-//      
-//      ArrayList<Class<?>> interceptions = Interceptions.getAroundInvokes();
-//      assertEquals(0, interceptions.size());
-//      
-//      container.invoke(bean, "method");
-//      
-//      assertEquals("Wrong number of interceptions " + interceptions, 6,  interceptions.size());
-//      assertEquals(ClassBaseInterceptor.class, interceptions.get(0));
-//      assertEquals(ClassInterceptor.class, interceptions.get(1));
-//      assertEquals(MethodBaseInterceptor.class, interceptions.get(2));
-//      assertEquals(MethodInterceptor.class, interceptions.get(3));
-//      assertEquals(AnnotatedBase.class, interceptions.get(4));
-//      assertEquals(AnnotatedBean.class, interceptions.get(5));
-//
-//      container.destroy(bean);
-//   }
-//   
-//   public void testXmlInheritanceLifecycle() throws Throwable
-//   {
-//      AspectManager.verbose = true;
-//      
-//      // To make surefire happy
-//      Thread.currentThread().setContextClassLoader(MyInterface.class.getClassLoader());
-//      
-//      JBossEnterpriseBeanMetaData beanMetaData = getJBossEnterpriseBeanMetaData("XmlBean");
-//      
-//      MyContainer<XmlBean> container = new MyContainer<XmlBean>("XmlBean", "Test", XmlBean.class, beanMetaData);
-//      container.testAdvisor();
-//      
-//      BeanContext<XmlBean> bean = container.construct();
-//      
-//      Interceptions.clear();
-//      container.invoke(bean, "method");
-//      
-//      ArrayList<Class<?>> interceptions = Interceptions.getAroundInvokes();
-//      assertEquals("Wrong number of interceptions " + interceptions, 6,  interceptions.size());  
-//      assertEquals(XmlClassBaseInterceptor.class, interceptions.get(0));
-//      assertEquals(XmlClassInterceptor.class, interceptions.get(1));
-//      assertEquals(XmlMethodBaseInterceptor.class, interceptions.get(2));
-//      assertEquals(XmlMethodInterceptor.class, interceptions.get(3));
-//      assertEquals(XmlBase.class, interceptions.get(4));
-//      assertEquals(XmlBean.class, interceptions.get(5));          
-//      
-//      container.destroy(bean);
-//   }
+   public void testXmlInheritanceLifecycle() throws Throwable
+   {
+      AspectManager.verbose = true;
+      
+      // To make surefire happy
+      Thread.currentThread().setContextClassLoader(MyInterface.class.getClassLoader());
+      
+      JBossEnterpriseBeanMetaData beanMetaData = getJBossEnterpriseBeanMetaData("XmlBean");
+      
+      MyContainer<XmlBean> container = new MyContainer<XmlBean>("XmlBean", "Test", XmlBean.class, beanMetaData);
+      container.testAdvisor();
+      
+      Interceptions.clear();
+      
+      BeanContext<XmlBean> bean = container.construct();
+      ArrayList<Class<?>> postConstructs = Interceptions.getPostConstructs();
+      assertEquals("Wrong number of interceptions " + postConstructs, 4, postConstructs.size());
+      assertEquals(XmlClassBaseInterceptor.class, postConstructs.get(0));
+      assertEquals(XmlClassInterceptor.class, postConstructs.get(1));
+      assertEquals(XmlBase.class, postConstructs.get(2));
+      assertEquals(XmlBean.class, postConstructs.get(3));
+ 
+      container.invoke(bean, "method");
+      
+      container.destroy(bean);
+      ArrayList<Class<?>> preDestroy = Interceptions.getPreDestroys();
+      assertEquals("Wrong number of interceptions " + preDestroy, 4, preDestroy.size());
+      assertEquals(XmlClassBaseInterceptor.class, preDestroy.get(0));
+      assertEquals(XmlClassInterceptor.class, preDestroy.get(1));
+      assertEquals(XmlBase.class, preDestroy.get(2));
+      assertEquals(XmlBean.class, preDestroy.get(3));
+   }
    
    private JBossEnterpriseBeanMetaData getJBossEnterpriseBeanMetaData(String name) throws JBossXBException
    {

Modified: projects/ejb3/trunk/interceptors/src/test/resources/inheritance/META-INF/ejb-jar.xml
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/resources/inheritance/META-INF/ejb-jar.xml	2008-04-22 16:46:06 UTC (rev 72580)
+++ projects/ejb3/trunk/interceptors/src/test/resources/inheritance/META-INF/ejb-jar.xml	2008-04-22 17:40:50 UTC (rev 72581)
@@ -20,6 +20,18 @@
          <around-invoke>
             <method-name>around</method-name>
          </around-invoke>
+         <post-construct>
+            <lifecycle-callback-method>postConstruct</lifecycle-callback-method>
+         </post-construct>
+         <post-construct>
+            <lifecycle-callback-method>basePostConstruct</lifecycle-callback-method>
+         </post-construct>
+         <pre-destroy>
+            <lifecycle-callback-method>basePreDestroy</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-method>preDestroy</lifecycle-callback-method>
+         </pre-destroy>
       </session>
     </enterprise-beans>
     <interceptors>
@@ -31,18 +43,18 @@
          <around-invoke>
             <method-name>around</method-name>
          </around-invoke>
-         <!--
          <post-construct>
-            <method-name>postConstruct</method-name>
+            <lifecycle-callback-method>postConstruct</lifecycle-callback-method>
          </post-construct>
          <post-construct>
-            <method-name>basePostConstruct</method-name>
+            <lifecycle-callback-method>basePostConstruct</lifecycle-callback-method>
          </post-construct>
-         <pre
-            basePreDestroy
-            
-            preDestroy            
-         -->
+         <pre-destroy>
+            <lifecycle-callback-method>basePreDestroy</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-method>preDestroy</lifecycle-callback-method>
+         </pre-destroy>
       </interceptor>    
       <interceptor>
          <interceptor-class>org.jboss.ejb3.test.interceptors.inheritance.XmlMethodInterceptor</interceptor-class>




More information about the jboss-cvs-commits mailing list