[jboss-cvs] JBossAS SVN: r69232 - in projects/ejb3/trunk/interceptors/src: test/java/org/jboss/ejb3/test/interceptors/direct and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jan 23 06:01:03 EST 2008
Author: wolfc
Date: 2008-01-23 06:01:02 -0500 (Wed, 23 Jan 2008)
New Revision: 69232
Modified:
projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/InterceptorsFactory.java
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/LifecycleCallbackInterceptorMethodInterceptor.java
projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/direct/DirectBean.java
projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/direct/unit/DirectTestCase.java
Log:
Fixed bean life cycle callback
Modified: projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/InterceptorsFactory.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/InterceptorsFactory.java 2008-01-23 09:07:42 UTC (rev 69231)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/InterceptorsFactory.java 2008-01-23 11:01:02 UTC (rev 69232)
@@ -70,7 +70,7 @@
@SuppressWarnings("unchecked")
private static final Class<? extends Annotation> lifeCycleAnnotationClasses[] = (Class<? extends Annotation>[]) new Class<?>[] { PostActivate.class, PostConstruct.class, PreDestroy.class, PrePassivate.class };
- private List<? extends Interceptor> createInterceptors(Advisor advisor, InterceptorFactory interceptorFactory, Class<?>[] interceptorClasses, List<BusinessMethodInterceptorMethodInterceptor> interceptors, Map<Class<?>, Object> existingInterceptors, Map<Class<? extends Annotation>, List<LifecycleCallbackInterceptorMethodInterceptor>> lifeCycleInterceptors) throws InstantiationException, IllegalAccessException
+ private List<? extends Interceptor> createInterceptors(Advisor advisor, InterceptorFactory interceptorFactory, Class<?>[] interceptorClasses, List<BusinessMethodInterceptorMethodInterceptor> interceptors, Map<Class<?>, Object> existingInterceptors, Map<Class<? extends Annotation>, List<Interceptor>> lifeCycleInterceptors) throws InstantiationException, IllegalAccessException
{
if(interceptorClasses != null)
{
@@ -128,10 +128,10 @@
Map<Class<?>, Object> interceptors = new HashMap<Class<?>, Object>();
- Map<Class<? extends Annotation>, List<LifecycleCallbackInterceptorMethodInterceptor>> lifeCycleInterceptors = new HashMap<Class<? extends Annotation>, List<LifecycleCallbackInterceptorMethodInterceptor>>();
+ Map<Class<? extends Annotation>, List<Interceptor>> lifeCycleInterceptors = new HashMap<Class<? extends Annotation>, List<Interceptor>>();
for(Class<? extends Annotation> lifeCycleAnnotationClass : lifeCycleAnnotationClasses)
{
- List<LifecycleCallbackInterceptorMethodInterceptor> list = new ArrayList<LifecycleCallbackInterceptorMethodInterceptor>();
+ List<Interceptor> list = new ArrayList<Interceptor>();
lifeCycleInterceptors.put(lifeCycleAnnotationClass, list);
}
@@ -194,6 +194,13 @@
{
beanInterceptors.add(new BusinessMethodBeanMethodInterceptor(beanMethod));
}
+ for(Class<? extends Annotation> lifeCycleAnnotationClass : lifeCycleAnnotationClasses)
+ {
+ if(advisor.hasAnnotation(beanMethod, lifeCycleAnnotationClass))
+ {
+ lifeCycleInterceptors.get(lifeCycleAnnotationClass).add(new LifecycleCallbackBeanMethodInterceptor(beanMethod));
+ }
+ }
}
log.debug("Found bean interceptors " + beanInterceptors);
instanceAdvisor.getMetaData().addMetaData(InterceptorsFactory.class, "beanInterceptors", beanInterceptors);
@@ -261,12 +268,12 @@
}
@SuppressWarnings("unchecked")
- private static Map<Class<? extends Annotation>, List<LifecycleCallbackInterceptorMethodInterceptor>> getLifeCycleInterceptors(InstanceAdvisor instanceAdvisor)
+ private static Map<Class<? extends Annotation>, List<Interceptor>> getLifeCycleInterceptors(InstanceAdvisor instanceAdvisor)
{
- return (Map<Class<? extends Annotation>, List<LifecycleCallbackInterceptorMethodInterceptor>>) instanceAdvisor.getMetaData().getMetaData(InterceptorsFactory.class, "lifeCycleInterceptors");
+ return (Map<Class<? extends Annotation>, List<Interceptor>>) instanceAdvisor.getMetaData().getMetaData(InterceptorsFactory.class, "lifeCycleInterceptors");
}
- public static List<? extends Interceptor> getLifeCycleInterceptors(InstanceAdvisor instanceAdvisor, Class<? extends Annotation> lifeCycleAnnotationClass)
+ public static List<Interceptor> getLifeCycleInterceptors(InstanceAdvisor instanceAdvisor, Class<? extends Annotation> lifeCycleAnnotationClass)
{
return getLifeCycleInterceptors(instanceAdvisor).get(lifeCycleAnnotationClass);
}
@@ -277,7 +284,7 @@
* @return
*/
@Deprecated
- public static List<? extends Interceptor> getPreDestroys(InstanceAdvisor instanceAdvisor)
+ public static List<Interceptor> getPreDestroys(InstanceAdvisor instanceAdvisor)
{
return getLifeCycleInterceptors(instanceAdvisor, PreDestroy.class);
}
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-01-23 09:07:42 UTC (rev 69231)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/LifecycleCallbackBeanMethodInterceptor.java 2008-01-23 11:01:02 UTC (rev 69232)
@@ -34,45 +34,50 @@
* void <METHOD>()
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
+ * @version $Revision$
*/
public class LifecycleCallbackBeanMethodInterceptor implements Interceptor
{
- private Object interceptor;
private Method method;
/**
*
- * @param interceptor an spec interceptor
- * @param lifecycleCallbackMethod a lifecycle callback on the spec interceptor
+ * @param lifecycleCallbackMethod a lifecycle callback on the bean
*/
- public LifecycleCallbackBeanMethodInterceptor(Object interceptor, Method lifecycleCallbackMethod)
+ public LifecycleCallbackBeanMethodInterceptor(Method lifecycleCallbackMethod)
{
- assert interceptor != null : "interceptor is null";
assert lifecycleCallbackMethod != null : "lifecycleCallbackMethod is null";
assert lifecycleCallbackMethod.getReturnType() == Void.TYPE : "return type must be void";
assert lifecycleCallbackMethod.getParameterTypes().length == 0 : "wrong parameter signature";
- this.interceptor = interceptor;
this.method = lifecycleCallbackMethod;
}
public String getName()
{
- return "LifecycleCallbackBeanMethodInterceptor";
+ return getClass().getName();
}
public Object invoke(final Invocation invocation) throws Throwable
{
try
{
- method.invoke(interceptor);
- // TODO: return null or invokeTarget?
- return invocation.invokeNext();
+ boolean accessible = method.isAccessible();
+ method.setAccessible(true);
+ try
+ {
+ method.invoke(invocation.getTargetObject());
+ }
+ finally
+ {
+ method.setAccessible(accessible);
+ }
+ return null;
}
catch(InvocationTargetException e)
{
throw e.getCause();
}
}
+
}
Modified: projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/LifecycleCallbackInterceptorMethodInterceptor.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/LifecycleCallbackInterceptorMethodInterceptor.java 2008-01-23 09:07:42 UTC (rev 69231)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/aop/LifecycleCallbackInterceptorMethodInterceptor.java 2008-01-23 11:01:02 UTC (rev 69232)
@@ -37,7 +37,7 @@
* void <METHOD> (InvocationContext)
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
+ * @version $Revision$
*/
public class LifecycleCallbackInterceptorMethodInterceptor implements Interceptor
{
@@ -83,8 +83,7 @@
{
method.setAccessible(accessible);
}
- // TODO: return null or invokeTarget?
- return invocation.invokeNext();
+ return null;
}
catch(InvocationTargetException e)
{
Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/direct/DirectBean.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/direct/DirectBean.java 2008-01-23 09:07:42 UTC (rev 69231)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/direct/DirectBean.java 2008-01-23 11:01:02 UTC (rev 69232)
@@ -21,6 +21,7 @@
*/
package org.jboss.ejb3.test.interceptors.direct;
+import javax.annotation.PostConstruct;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptors;
import javax.interceptor.InvocationContext;
@@ -35,14 +36,14 @@
* And it has bean method interceptors: aroundInvoke
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
+ * @version $Revision$
*/
@Interceptors(DirectInterceptor.class)
public class DirectBean
{
private static final Logger log = Logger.getLogger(DirectBean.class);
- public static int constructors = 0, aroundInvokes = 0;
+ public static int constructors = 0, aroundInvokes = 0, postConstructs = 0;
public DirectBean()
{
@@ -73,4 +74,10 @@
{
log.debug("intercept");
}
+
+ @PostConstruct
+ public void postConstruct()
+ {
+ postConstructs++;
+ }
}
Modified: projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/direct/unit/DirectTestCase.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/direct/unit/DirectTestCase.java 2008-01-23 09:07:42 UTC (rev 69231)
+++ projects/ejb3/trunk/interceptors/src/test/java/org/jboss/ejb3/test/interceptors/direct/unit/DirectTestCase.java 2008-01-23 11:01:02 UTC (rev 69232)
@@ -42,7 +42,7 @@
* are routed through the direct container.
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
+ * @version $Revision$
*/
public class DirectTestCase extends TestCase
{
@@ -83,6 +83,7 @@
DirectBean bean = container.construct();
assertEquals("DirectInterceptor postConstruct must have been called once", 1, DirectInterceptor.postConstructs);
+ assertEquals("DirectBean postConstruct must have been called once", 1, DirectBean.postConstructs);
System.out.println(bean.getClass() + " " + bean.getClass().getClassLoader());
System.out.println(" " + Arrays.toString(bean.getClass().getInterfaces()));
More information about the jboss-cvs-commits
mailing list