[jboss-cvs] jboss-seam/src/main/org/jboss/seam/interceptors ...
Gavin King
gavin.king at jboss.com
Thu Sep 7 20:13:40 EDT 2006
User: gavin
Date: 06/09/07 20:13:40
Modified: src/main/org/jboss/seam/interceptors
BijectionInterceptor.java
Log:
JBSEAM-327 don't enforce required=true during lifecycle callbacks
Revision Changes Path
1.16 +17 -3 jboss-seam/src/main/org/jboss/seam/interceptors/BijectionInterceptor.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: BijectionInterceptor.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/interceptors/BijectionInterceptor.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- BijectionInterceptor.java 30 Jun 2006 10:03:51 -0000 1.15
+++ BijectionInterceptor.java 8 Sep 2006 00:13:40 -0000 1.16
@@ -1,15 +1,21 @@
-//$Id: BijectionInterceptor.java,v 1.15 2006/06/30 10:03:51 gavin Exp $
+//$Id: BijectionInterceptor.java,v 1.16 2006/09/08 00:13:40 gavin Exp $
package org.jboss.seam.interceptors;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.ejb.PostActivate;
+import javax.ejb.PrePassivate;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.seam.Component;
+import org.jboss.seam.annotations.Create;
+import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.RequestParameter;
@@ -24,6 +30,14 @@
private static final Log log = LogFactory.getLog(BijectionInterceptor.class);
+ private static boolean isLifecycleMethod(Method method)
+ {
+ return method==null || //EJB 3 JavaDoc says InvocationContext.getMethod() returns null for lifecycle callbacks!
+ method.isAnnotationPresent(Create.class) || method.isAnnotationPresent(Destroy.class) ||
+ method.isAnnotationPresent(PostConstruct.class) || method.isAnnotationPresent(PreDestroy.class) ||
+ method.isAnnotationPresent(PrePassivate.class) || method.isAnnotationPresent(PostActivate.class);
+ }
+
@AroundInvoke
public Object bijectTargetComponent(InvocationContext invocation) throws Exception
{
@@ -33,7 +47,7 @@
{
log.trace("injecting dependencies of: " + component.getName());
}
- component.inject(invocation.getTarget());
+ component.inject( invocation.getTarget(), isLifecycleMethod( invocation.getMethod() ) );
}
Object result = invocation.proceed();
@@ -44,7 +58,7 @@
{
log.trace("outjecting dependencies of: " + component.getName());
}
- component.outject( invocation.getTarget() );
+ component.outject( invocation.getTarget(), isLifecycleMethod( invocation.getMethod() ) );
}
//method parameter injection?
More information about the jboss-cvs-commits
mailing list