[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