[jboss-cvs] JBossAS SVN: r100062 - in projects/weld-int/trunk/deployer/src: test/java/org/jboss/test/deployers/test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jan 28 12:22:05 EST 2010


Author: pete.muir at jboss.org
Date: 2010-01-28 12:22:04 -0500 (Thu, 28 Jan 2010)
New Revision: 100062

Modified:
   projects/weld-int/trunk/deployer/src/main/java/org/jboss/weld/integration/deployer/metadata/WeldEjbInterceptorMetadataDeployer.java
   projects/weld-int/trunk/deployer/src/test/java/org/jboss/test/deployers/test/PostDeployersTestCase.java
Log:
WELD-15

Modified: projects/weld-int/trunk/deployer/src/main/java/org/jboss/weld/integration/deployer/metadata/WeldEjbInterceptorMetadataDeployer.java
===================================================================
--- projects/weld-int/trunk/deployer/src/main/java/org/jboss/weld/integration/deployer/metadata/WeldEjbInterceptorMetadataDeployer.java	2010-01-28 17:12:25 UTC (rev 100061)
+++ projects/weld-int/trunk/deployer/src/main/java/org/jboss/weld/integration/deployer/metadata/WeldEjbInterceptorMetadataDeployer.java	2010-01-28 17:22:04 UTC (rev 100062)
@@ -28,6 +28,8 @@
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.ejb.spec.AroundInvokeMetaData;
+import org.jboss.metadata.ejb.spec.AroundInvokesMetaData;
 import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
 import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
 import org.jboss.metadata.ejb.spec.InterceptorBindingMetaData;
@@ -40,40 +42,55 @@
 
 /**
  * Adds wb custom interceptor to ejb deployments.
- *
+ * 
  * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
  */
 @SuppressWarnings("deprecation")
 public class WeldEjbInterceptorMetadataDeployer extends WeldAwareMetadataDeployer<JBossMetaData>
 {
-   public static final String CONTEXT_INTERCEPTOR_CLASS_NAME = "org.jboss.weld.integration.ejb.SessionBeanInterceptor";
+   public static final String INJECTION_INTERCEPTOR_CLASS_NAME = "org.jboss.weld.integration.ejb.SessionBeanInterceptor";
+   public static final String CONTEXT_INTERCEPTOR_CLASS_NAME = "org.jboss.weld.ejb.SessionBeanInterceptor";
    public static final String BINDINGS_INTERCEPTOR_CLASS_NAME = "org.jboss.weld.integration.ejb.interceptor.Jsr299BindingsInterceptor";
 
-   private InterceptorMetaData SBI;
-   private InterceptorMetaData BIND;
-   private InterceptorBindingMetaData CONTEXT_IBMD;
-   private InterceptorBindingMetaData BINDINGS_IMDB;
+   private InterceptorMetaData injectionIMD;
+   private InterceptorMetaData bindingsIMD;
+   private InterceptorMetaData contextIMD;
+   private InterceptorBindingMetaData injectionIBMD;
+   private InterceptorBindingMetaData bindingsIBMD;
+   private InterceptorBindingMetaData contextIBMD;
 
-
    public WeldEjbInterceptorMetadataDeployer()
    {
       super(JBossMetaData.class, true);
-      
+
       addInput(DeployersUtils.WELD_FILES);
       addInput("merged." + JBossMetaData.class.getName());
       setStage(DeploymentStages.POST_CLASSLOADER);
 
       // create interceptor metadata instance for session beans
-      SBI = new InterceptorMetaData();
-      SBI.setInterceptorClass(CONTEXT_INTERCEPTOR_CLASS_NAME);
+      injectionIMD = new InterceptorMetaData();
+      injectionIMD.setInterceptorClass(INJECTION_INTERCEPTOR_CLASS_NAME);
 
+      contextIMD = new InterceptorMetaData();
+      contextIMD.setInterceptorClass(CONTEXT_INTERCEPTOR_CLASS_NAME);
+      
+      if (contextIMD.getAroundInvokes() == null)
+      {
+         contextIMD.setAroundInvokes(new AroundInvokesMetaData());
+      }
+      AroundInvokeMetaData aroundInvokeMetaData = new AroundInvokeMetaData();
+      aroundInvokeMetaData.setClassName(CONTEXT_INTERCEPTOR_CLASS_NAME);
+      aroundInvokeMetaData.setMethodName("aroundInvoke");
+      contextIMD.getAroundInvokes().add(aroundInvokeMetaData);
+
       // create interceptor metadata instance for JSR-299 specific bindings
-      BIND = new InterceptorMetaData();
-      BIND.setInterceptorClass(BINDINGS_INTERCEPTOR_CLASS_NAME);
+      bindingsIMD = new InterceptorMetaData();
+      bindingsIMD.setInterceptorClass(BINDINGS_INTERCEPTOR_CLASS_NAME);
 
       // create interceptor binding metadata instance
-      CONTEXT_IBMD = createInterceptorBindingMetadata(CONTEXT_INTERCEPTOR_CLASS_NAME);
-      BINDINGS_IMDB = createInterceptorBindingMetadata(BINDINGS_INTERCEPTOR_CLASS_NAME);
+      injectionIBMD = createInterceptorBindingMetadata(INJECTION_INTERCEPTOR_CLASS_NAME);
+      bindingsIBMD = createInterceptorBindingMetadata(BINDINGS_INTERCEPTOR_CLASS_NAME);
+      contextIBMD = createInterceptorBindingMetadata(CONTEXT_INTERCEPTOR_CLASS_NAME);
 
    }
 
@@ -87,24 +104,20 @@
       return ibmd;
    }
 
+   @Override
    protected void internalDeploy(VFSDeploymentUnit unit, JBossMetaData jbmd, VirtualFile wbXml) throws DeploymentException
    {
-      InterceptorsMetaData interceptors = jbmd.getInterceptors();
-      if (interceptors == null)
+      if (jbmd.getInterceptors() == null)
       {
          InterceptorsMetaData imd = new InterceptorsMetaData();
-         imd.add(SBI);
-         imd.add(BIND);
          EjbJar3xMetaData ejmd = new EjbJar30MetaData();
          ejmd.setInterceptors(imd);
-
          jbmd.merge(null, ejmd);
       }
-      else
-      {
-         interceptors.add(SBI); // clone?
-         interceptors.add(BIND);
-      }
+      InterceptorsMetaData interceptors = jbmd.getInterceptors();
+      interceptors.add(injectionIMD); // clone?
+      interceptors.add(bindingsIMD);
+      interceptors.add(contextIMD);
 
       JBossAssemblyDescriptorMetaData assemblyDescriptor = jbmd.getAssemblyDescriptor();
       if (assemblyDescriptor == null)
@@ -119,26 +132,30 @@
          assemblyDescriptor.setInterceptorBindings(interceptorBindings);
       }
       // Add this as the first binding in the list so that it is called first...
-      interceptorBindings.add(0, CONTEXT_IBMD); // clone?
+      interceptorBindings.add(contextIBMD);
+      interceptorBindings.add(0, injectionIBMD);
 
-      //Add JSR-299 binding interceptor as the last (all others have to be called first)
-      interceptorBindings.add(BINDINGS_IMDB);
+      // Add JSR-299 binding interceptor as the last (all others have to be
+      // called first)
+      interceptorBindings.add(bindingsIBMD);
 
       // Check to see there is a defined order; if we aren't first, warn
       for (InterceptorBindingMetaData interceptorBinding : interceptorBindings)
       {
-         if (interceptorBinding.getInterceptorOrder() != null && ! interceptorBinding.getInterceptorOrder().isEmpty())
+         if (interceptorBinding.getInterceptorOrder() != null && !interceptorBinding.getInterceptorOrder().isEmpty())
          {
-            if (!CONTEXT_INTERCEPTOR_CLASS_NAME.equals(interceptorBinding.getInterceptorOrder().iterator().next()))
+            if (!INJECTION_INTERCEPTOR_CLASS_NAME.equals(interceptorBinding.getInterceptorOrder().iterator().next()))
             {
-               log.warn("The Web Beans SessionnBeanInterceptor is not the inner most EJB interceptor in this deployment. JSR299 injection may not work correctly. Specify " + CONTEXT_INTERCEPTOR_CLASS_NAME + " as the first interceptor in the interceptor ordering for " + interceptorBinding.getEjbName());
+               log.warn("The Web Beans SessionnBeanInterceptor is not the inner most EJB interceptor in this deployment. JSR299 injection may not work correctly. Specify " + INJECTION_INTERCEPTOR_CLASS_NAME + " as the first interceptor in the interceptor ordering for " + interceptorBinding.getEjbName());
             }
             // TODO automagically make ours the first?
             Object lastInterceptorClassName;
             Iterator<String> iterator = interceptorBinding.getInterceptorOrder().iterator();
-            do {
+            do
+            {
                lastInterceptorClassName = iterator.next();
-            } while (iterator.hasNext());
+            }
+            while (iterator.hasNext());
             if (!BINDINGS_INTERCEPTOR_CLASS_NAME.equals(lastInterceptorClassName))
             {
                log.warn("The Web Beans Jsr299BindingsInterceptor is not the outer most EJB interceptor in this deployment. JSR299 requires that @InterceptorBinding-bound interceptors should execute after @Interceptors-registered interceptors. Specify " + BINDINGS_INTERCEPTOR_CLASS_NAME + " as the last interceptor in the interceptor ordering for " + interceptorBinding.getEjbName());

Modified: projects/weld-int/trunk/deployer/src/test/java/org/jboss/test/deployers/test/PostDeployersTestCase.java
===================================================================
--- projects/weld-int/trunk/deployer/src/test/java/org/jboss/test/deployers/test/PostDeployersTestCase.java	2010-01-28 17:12:25 UTC (rev 100061)
+++ projects/weld-int/trunk/deployer/src/test/java/org/jboss/test/deployers/test/PostDeployersTestCase.java	2010-01-28 17:22:04 UTC (rev 100062)
@@ -180,7 +180,7 @@
       assertNotNull(ejbmd);
       InterceptorsMetaData interceptors = ejbmd.getInterceptors();
       assertNotNull(interceptors);
-      InterceptorMetaData imd = interceptors.get(WeldEjbInterceptorMetadataDeployer.CONTEXT_INTERCEPTOR_CLASS_NAME);
+      InterceptorMetaData imd = interceptors.get(WeldEjbInterceptorMetadataDeployer.INJECTION_INTERCEPTOR_CLASS_NAME);
       assertNotNull(imd);
    }
 




More information about the jboss-cvs-commits mailing list