[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