[jboss-cvs] JBossAS SVN: r66638 - trunk/server/src/main/org/jboss/deployment.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Oct 31 20:33:26 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-10-31 20:33:26 -0400 (Wed, 31 Oct 2007)
New Revision: 66638

Modified:
   trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java
Log:
Another iteration

Modified: trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java	2007-10-31 23:06:49 UTC (rev 66637)
+++ trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java	2007-11-01 00:33:26 UTC (rev 66638)
@@ -23,8 +23,10 @@
 
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 import java.util.StringTokenizer;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -42,9 +44,15 @@
 import org.jboss.metadata.client.jboss.JBossClientMetaData;
 import org.jboss.metadata.ear.jboss.JBossAppMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEntityBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
+import org.jboss.metadata.javaee.spec.EJBLocalReferencesMetaData;
+import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
+import org.jboss.metadata.javaee.spec.EJBReferencesMetaData;
+import org.jboss.metadata.javaee.spec.Environment;
 import org.jboss.metadata.javaee.spec.MessageDestinationMetaData;
 import org.jboss.metadata.web.jboss.JBossWebMetaData;
 import org.jboss.system.metadata.ServiceDeployment;
@@ -61,15 +69,16 @@
    extends AbstractRealDeployer
 {
    private static Logger log = Logger.getLogger(ReferenceMetaDataResolverDeployer.class);
-   private ConcurrentHashMap referenceMap = new ConcurrentHashMap<String, String>();
+   /**
+    * A map of vfs paths to reference endpoint mappedNames
+    */
+   private ConcurrentHashMap<String, String> mappedNameMap = new ConcurrentHashMap<String, String>();
 
    public ReferenceMetaDataResolverDeployer()
    {
       setStage(DeploymentStages.DESCRIBE);
       HashSet<String> inputs = new HashSet<String>();
-      inputs.add(JBossAppMetaData.class.getName());
       inputs.add(JBossClientMetaData.class.getName());
-      inputs.add(ServiceDeployment.class.getName());
       inputs.add(JBossMetaData.class.getName());
       inputs.add(JBossWebMetaData.class.getName());
       super.setInputs(inputs);
@@ -77,28 +86,103 @@
 
    public void deploy(DeploymentUnit unit) throws DeploymentException
    {
-      JBossAppMetaData ear = unit.getAttachment(JBossAppMetaData.class);
-      
+      // Could have conflicts with multiple deploy directories
+      String vfsPath = unit.getRelativePath();
+      JBossMetaData ejbMetaData = unit.getAttachment(JBossMetaData.class);
+      JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
+      JBossClientMetaData clientMetaData = unit.getAttachment(JBossClientMetaData.class);
+      if(ejbMetaData == null && webMetaData == null && clientMetaData == null)
+         return;
+
+      if(ejbMetaData != null)
+      {
+         // First map the providers of resources
+         JBossEnterpriseBeansMetaData beans = ejbMetaData.getEnterpriseBeans();
+         mapEjbs(vfsPath, beans);
+         ejbMetaData.getAssemblyDescriptor();
+         // 
+         List<String> unresolvedPaths = resolve(unit, beans);
+      }
+      // Web app processed next
+      if(webMetaData != null)
+      {
+         List<String>  unresolvedPaths = resolve(unit, webMetaData.getJndiEnvironmentRefsGroup());         
+      }
+      // Client app is processed last
+      if(clientMetaData != null)
+      {
+         List<String>  unresolvedPaths = resolve(unit, clientMetaData.getJndiEnvironmentRefsGroup());
+      }
    }
 
    public void undeploy(DeploymentUnit unit)
    {
    }
 
-   protected void resolve(JBossAppMetaData ear)
-   {  
+   protected void mapEjbs(String vfsPath, JBossEnterpriseBeansMetaData beans)
+   {
+      if(beans == null || beans.size() == 0)
+         return;
+      for(JBossEnterpriseBeanMetaData bean : beans)
+      {
+         String ejbPath = vfsPath + "/" + bean.getEjbName();
+         // TODO: endpoints based on business interface, etc.
+         String mappedName = bean.getMappedName();
+         if(mappedName != null)
+            mappedNameMap.put(ejbPath, mappedName);
+      }
    }
-   protected void resolve(ServiceDeployment sar)
+
+   protected void resolve(JBossMetaData ejb)
    {  
    }
-   protected void resolve(JBossClientMetaData car)
-   {  
+   protected List<String> resolve(DeploymentUnit unit, Environment env)
+   {
+      if(env == null)
+         return null;
+
+      ArrayList<String> unresolvedRefs = new ArrayList<String>();
+      EJBLocalReferencesMetaData localRefs = env.getEjbLocalReferences();
+      resolveEjbLocalRefs(unit, localRefs, unresolvedRefs);
+      return unresolvedRefs;
    }
-   protected void resolve(JBossMetaData ejb)
-   {  
+   protected List<String> resolve(DeploymentUnit unit, JBossEnterpriseBeansMetaData beans)
+   {
+      ArrayList<String> unresolvedRefs = new ArrayList<String>();
+      if(beans == null || beans.size() == 0)
+         return unresolvedRefs;
+
+      for(JBossEnterpriseBeanMetaData bean : beans)
+      {
+         
+         EJBLocalReferencesMetaData localRefs = bean.getEjbLocalReferences();
+         resolveEjbLocalRefs(unit, localRefs, unresolvedRefs);
+         EJBReferencesMetaData ejbRefs = bean.getEjbReferences();
+         if(ejbRefs != null)
+         for(EJBReferenceMetaData ref : ejbRefs)
+         {
+            String link = ref.getLink();
+            String target = findEjbLink(null, unit, link);
+            ref.setMappedName(target);
+            if(target == null)
+               unresolvedRefs.add(ref.getEjbRefName()+"/ejb-ref/"+link);
+         }
+      }
+      return unresolvedRefs;
    }
-   protected void resolve(JBossWebMetaData war)
-   {  
+
+   protected void resolveEjbLocalRefs(DeploymentUnit unit, EJBLocalReferencesMetaData localRefs, ArrayList<String> unresolvedRefs)
+   {
+      if(localRefs != null)
+         for(EJBLocalReferenceMetaData ref : localRefs)
+         {
+            String link = ref.getLink();
+            String target = findLocalEjbLink(null, unit, link);
+            ref.setMappedName(target);
+            if(target == null)
+               unresolvedRefs.add(ref.getEjbRefName()+"/ejb-local-ref/"+link);
+         }
+      
    }
 
    /**




More information about the jboss-cvs-commits mailing list