[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