[jboss-cvs] JBossAS SVN: r72382 - in trunk/ejb3/src: main/org/jboss/ejb3/deployers and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 17 16:01:39 EDT 2008


Author: scott.stark at jboss.org
Date: 2008-04-17 16:01:39 -0400 (Thu, 17 Apr 2008)
New Revision: 72382

Added:
   trunk/ejb3/src/main/org/jboss/ejb3/deployers/MergedJBossClientMetaDataDeployer.java
Modified:
   trunk/ejb3/src/main/org/jboss/ejb3/clientmodule/EJBRemoteHandler.java
   trunk/ejb3/src/resources/META-INF/ejb3-deployers-beans.xml
Log:
JBAS-5458, merged client deployer

Modified: trunk/ejb3/src/main/org/jboss/ejb3/clientmodule/EJBRemoteHandler.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/clientmodule/EJBRemoteHandler.java	2008-04-17 19:29:57 UTC (rev 72381)
+++ trunk/ejb3/src/main/org/jboss/ejb3/clientmodule/EJBRemoteHandler.java	2008-04-17 20:01:39 UTC (rev 72382)
@@ -41,6 +41,8 @@
 import org.jboss.injection.Injector;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.javaee.spec.AbstractEJBReferenceMetaData;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
 import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
 import org.jboss.metadata.javaee.spec.RemoteEnvironment;
 
@@ -116,7 +118,7 @@
       }
       else
       {
-         ejbRefEncInjector(mappedName, encName, refClass, link, errorType, container);
+         ejbRefEncInjector(mappedName, encName, null, refClass, link, errorType, container);
          if (ref.getIgnoreDependency() != null)
          {
             log.debug("IGNORING <ejb-ref> DEPENDENCY: " + encName);
@@ -157,10 +159,26 @@
       }
    }
 
-   protected void ejbRefEncInjector(String mappedName, String encName, Class refClass, String link, String errorType, InjectionContainer container)
+   protected void ejbRefEncInjector(String mappedName, String encName, String fieldName, Class refClass, String link, String errorType, InjectionContainer container)
    {
-      if (refClass != null && (refClass.equals(Object.class) || refClass.equals(void.class))) refClass = null;
-      if (mappedName != null && mappedName.trim().equals("")) mappedName = null;
+      if (refClass != null && (refClass.equals(Object.class) || refClass.equals(void.class)))
+         refClass = null;
+      if (mappedName != null && mappedName.trim().equals(""))
+         mappedName = null;
+      if (mappedName == null)
+      {
+         //
+         AnnotatedEJBReferencesMetaData amds = container.getEnvironmentRefGroup().getAnnotatedEjbReferences();
+         AnnotatedEJBReferenceMetaData amd = amds.get(encName);
+         if(amd == null)
+            amd = amds.get(fieldName);
+         if(amd != null)
+         {
+            mappedName = amd.getMappedName();
+            if(mappedName == null)
+               mappedName = amd.getResolvedJndiName();
+         }
+      }
 
       EncInjector injector = null;
       
@@ -284,7 +302,7 @@
       encName = "env/" + encName;
 
       if (container.getEncInjectors().containsKey(encName)) return;
-      ejbRefEncInjector(ejb.mappedName(), encName, ejb.beanInterface(), ejb.beanName(), "@EJB", container);
+      ejbRefEncInjector(ejb.mappedName(), encName, null, ejb.beanInterface(), ejb.beanName(), "@EJB", container);
 
       // handle dependencies
 
@@ -304,7 +322,7 @@
          String encName = getEncName(ref, method);
          if (!container.getEncInjectors().containsKey(encName))
          {
-            ejbRefEncInjector(ref.mappedName(), encName, method.getParameterTypes()[0], ref.beanName(), "@EJB", container);
+            ejbRefEncInjector(ref.mappedName(), encName, method.getName().substring(0), method.getParameterTypes()[0], ref.beanName(), "@EJB", container);
             
             if (container.getAnnotation(IgnoreDependency.class, method) == null)
             {
@@ -334,7 +352,7 @@
                else
                   ejbRefDependency(ref.mappedName(), ref.beanName(), container, field.getType(), "@EJB", encName);
             }
-            ejbRefEncInjector(ref.mappedName(), encName, field.getType(), ref.beanName(), "@EJB", container);
+            ejbRefEncInjector(ref.mappedName(), encName, field.getName(), field.getType(), ref.beanName(), "@EJB", container);
          }
          super.handleFieldAnnotations(field, container, injectors);
       }

Added: trunk/ejb3/src/main/org/jboss/ejb3/deployers/MergedJBossClientMetaDataDeployer.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/deployers/MergedJBossClientMetaDataDeployer.java	                        (rev 0)
+++ trunk/ejb3/src/main/org/jboss/ejb3/deployers/MergedJBossClientMetaDataDeployer.java	2008-04-17 20:01:39 UTC (rev 72382)
@@ -0,0 +1,94 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.deployers;
+
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployment.AnnotationMetaDataDeployer;
+import org.jboss.metadata.client.jboss.JBossClientMetaData;
+import org.jboss.metadata.client.spec.AnnotationMergedView;
+import org.jboss.metadata.client.spec.ApplicationClient5MetaData;
+import org.jboss.metadata.client.spec.ApplicationClientMetaData;
+
+
+/**
+ * A deployer that merges annotation metadata, xml metadata, and jboss metadata
+ * into a merged JBossClientMetaData.
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
+ */
+public class MergedJBossClientMetaDataDeployer extends AbstractDeployer
+{
+   public static final String CLIENT_MERGED_ATTACHMENT_NAME = "merged."+JBossClientMetaData.class.getName();
+
+   /**
+    * Create a new JBossEjbParsingDeployer.
+    */
+   public MergedJBossClientMetaDataDeployer()
+   {
+      setStage(DeploymentStages.POST_CLASSLOADER);
+      // application.xml metadata
+      addInput(ApplicationClientMetaData.class);
+      // jboss-client.xml metadata
+      addInput(JBossClientMetaData.class);
+      // annotated metadata view
+      addInput(AnnotationMetaDataDeployer.CLIENT_ANNOTATED_ATTACHMENT_NAME);
+      // Output is the merge JBossMetaData view
+      setOutput(JBossClientMetaData.class);
+      // Specify a separate merged name to distiguish this output from JBossClientMetaData
+      addOutput(CLIENT_MERGED_ATTACHMENT_NAME);
+   }
+
+   public void deploy(DeploymentUnit unit) throws DeploymentException
+   {
+      ApplicationClientMetaData specMetaData = unit.getAttachment(ApplicationClientMetaData.class);
+      JBossClientMetaData metaData = unit.getAttachment(JBossClientMetaData.class);
+      // Check for an annotated view
+      String key = AnnotationMetaDataDeployer.CLIENT_ANNOTATED_ATTACHMENT_NAME;
+      ApplicationClient5MetaData annotatedMetaData = unit.getAttachment(key, ApplicationClient5MetaData.class);
+      if(specMetaData == null && metaData == null && annotatedMetaData == null)
+         return;
+
+      if(annotatedMetaData != null)
+      {
+         if(specMetaData != null)
+         {
+            ApplicationClient5MetaData specMerged = new ApplicationClient5MetaData();
+            AnnotationMergedView.merge(specMerged, specMetaData, annotatedMetaData);
+            specMetaData = specMerged;
+         }
+         else
+            specMetaData = annotatedMetaData;
+      }
+
+      // Create a merged view
+      JBossClientMetaData mergedMetaData = new JBossClientMetaData();
+      mergedMetaData.merge(metaData, specMetaData, false);
+
+      // Output the merged JBossMetaData
+      unit.getTransientManagedObjects().addAttachment(JBossClientMetaData.class, mergedMetaData);
+      unit.addAttachment(CLIENT_MERGED_ATTACHMENT_NAME, mergedMetaData, JBossClientMetaData.class);
+   }
+}

Modified: trunk/ejb3/src/resources/META-INF/ejb3-deployers-beans.xml
===================================================================
--- trunk/ejb3/src/resources/META-INF/ejb3-deployers-beans.xml	2008-04-17 19:29:57 UTC (rev 72381)
+++ trunk/ejb3/src/resources/META-INF/ejb3-deployers-beans.xml	2008-04-17 20:01:39 UTC (rev 72382)
@@ -129,21 +129,18 @@
    </bean>
    
    <bean name="JBossClientParsingDeployer" class="org.jboss.ejb3.deployers.JBossClientParsingDeployer">
-      <property name="type">car</property>
       <depends>AppClientParsingDeployer</depends>
-   </bean>
-   
-   <bean name="AppClientScanningDeployer" class="org.jboss.ejb3.deployers.AppClientScanningDeployer">
-      <depends>JBossClientParsingDeployer</depends>
-   </bean>
-   
+   </bean>
+   <bean name="MergedJBossClientMetaDataDeployer" class="org.jboss.ejb3.deployers.MergedJBossClientMetaDataDeployer">
+      <depends>AppClientParsingDeployer</depends>
+   </bean>
+
    <bean name="Ejb3ClientDeployer" class="org.jboss.ejb3.deployers.Ejb3ClientDeployer">
       <property name="type">car</property>
       <property name="kernel"><inject bean="jboss.kernel:service=Kernel"/></property>
       <property name="mbeanServer"><inject bean="JMXKernel" property="mbeanServer"/></property>
       <!-- TODO: check depends -->
       <depends>AspectLibrary</depends>
-      <depends>AppClientScanningDeployer</depends>
    </bean>
    
    <!-- EJB3 Cache Factory Registry -->
@@ -255,7 +252,6 @@
    
    <!-- Persistence Unit deployers -->
    <bean name="PersistenceUnitParsingDeployer" class="org.jboss.ejb3.deployers.PersistenceUnitParsingDeployer">
-      <property name="type">car</property>
    </bean>
    
 </deployment>




More information about the jboss-cvs-commits mailing list