[jboss-cvs] JBossAS SVN: r68489 - trunk/server/src/main/org/jboss/deployment.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Dec 21 04:42:39 EST 2007
Author: scott.stark at jboss.org
Date: 2007-12-21 04:42:39 -0500 (Fri, 21 Dec 2007)
New Revision: 68489
Modified:
trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java
Log:
Initial support for MessageDestinationReferenceMetaData
Modified: trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java 2007-12-21 09:40:11 UTC (rev 68488)
+++ trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java 2007-12-21 09:42:39 UTC (rev 68489)
@@ -31,7 +31,6 @@
import org.jboss.deployers.spi.deployer.DeploymentStages;
import org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer;
import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.deployers.structure.spi.main.MainDeployerStructure;
import org.jboss.logging.Logger;
import org.jboss.metadata.client.jboss.JBossClientMetaData;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
@@ -48,6 +47,9 @@
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.javaee.spec.MessageDestinationReferenceMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
/**
@@ -108,19 +110,21 @@
// Process ejb references
List<String> unresolvedPaths = resolve(unit, beans);
if(unresolvedPaths != null && unresolvedPaths.size() > 0)
- log.warn("Unresolved references exist in JBossMetaData: "+unresolvedPaths);
+ log.warn("Unresolved references exist in JBossMetaData: "+unresolvedPaths);
}
if(webMetaData != null)
{
// Process web app references
- List<String> unresolvedPaths = resolve(unit, webMetaData.getJndiEnvironmentRefsGroup());
+ List<String> unresolvedPaths = new ArrayList<String>();
+ resolve(unit, webMetaData.getJndiEnvironmentRefsGroup(), unresolvedPaths);
if(unresolvedPaths != null && unresolvedPaths.size() > 0)
log.warn("Unresolved references exist in JBossWebMetaData: "+unresolvedPaths);
}
if(clientMetaData != null)
{
// Process client app references
- List<String> unresolvedPaths = resolve(unit, clientMetaData.getJndiEnvironmentRefsGroup());
+ List<String> unresolvedPaths = new ArrayList<String>();
+ resolve(unit, clientMetaData.getJndiEnvironmentRefsGroup(), unresolvedPaths);
if(unresolvedPaths != null && unresolvedPaths.size() > 0)
log.warn("Unresolved references exist in JBossClientMetaData: "+unresolvedPaths);
}
@@ -160,20 +164,20 @@
}
}
- protected List<String> resolve(DeploymentUnit unit, Environment env)
+ protected void resolve(DeploymentUnit unit, Environment env, List<String> unresolvedRefs)
{
if(env == null)
- return null;
+ return;
- ArrayList<String> unresolvedRefs = new ArrayList<String>();
AnnotatedEJBReferencesMetaData annotatedRefs = env.getAnnotatedEjbReferences();
EJBLocalReferencesMetaData localRefs = env.getEjbLocalReferences();
resolveEjbLocalRefs(unit, localRefs, unresolvedRefs);
EJBReferencesMetaData ejbRefs = env.getEjbReferences();
resolveEjbRefs(unit, ejbRefs, unresolvedRefs);
+ MessageDestinationReferencesMetaData msgRefs = env.getMessageDestinationReferences();
+ resolveMsgRefs(unit, msgRefs, unresolvedRefs);
// TODO, other references
- return unresolvedRefs;
}
protected List<String> resolve(DeploymentUnit unit, JBossEnterpriseBeansMetaData beans)
{
@@ -187,11 +191,13 @@
resolveEjbLocalRefs(unit, localRefs, unresolvedRefs);
EJBReferencesMetaData ejbRefs = bean.getEjbReferences();
resolveEjbRefs(unit, ejbRefs, unresolvedRefs);
+ Environment env = bean.getJndiEnvironmentRefsGroup();
+ resolve(unit, env, unresolvedRefs);
}
return unresolvedRefs;
}
- protected void resolveEjbLocalRefs(DeploymentUnit unit, EJBLocalReferencesMetaData localRefs, ArrayList<String> unresolvedRefs)
+ protected void resolveEjbLocalRefs(DeploymentUnit unit, EJBLocalReferencesMetaData localRefs, List<String> unresolvedRefs)
{
if(localRefs == null)
return;
@@ -206,7 +212,7 @@
ref.setMappedName(target);
}
}
- protected void resolveEjbRefs(DeploymentUnit unit, EJBReferencesMetaData ejbRefs, ArrayList<String> unresolvedRefs)
+ protected void resolveEjbRefs(DeploymentUnit unit, EJBReferencesMetaData ejbRefs, List<String> unresolvedRefs)
{
if(ejbRefs == null)
return;
@@ -227,6 +233,27 @@
}
}
}
+ protected void resolveMsgRefs(DeploymentUnit unit, MessageDestinationReferencesMetaData msgRefs, List<String> unresolvedRefs)
+ {
+ if(msgRefs == null)
+ return;
+ ArrayList<MessageDestinationMetaData> searched = new ArrayList<MessageDestinationMetaData>();
+ for(MessageDestinationReferenceMetaData ref : msgRefs)
+ {
+ String mappedName = ref.getMappedName();
+ if(mappedName == null || mappedName.length() == 0)
+ {
+ String link = ref.getLink();
+ MessageDestinationMetaData target = null;
+ if(link != null)
+ target = findMessageDestination(unit, link, searched);
+ if(target == null)
+ unresolvedRefs.add(ref.getMessageDestinationRefName()+"/message-destination-ref/"+link + " available: " + searched);
+ else
+ ref.setMappedName(target.getMappedName());
+ }
+ }
+ }
/**
* Resolves an <ejb-link> target for an <ejb-ref> entry and
@@ -264,16 +291,15 @@
* Resolves a <message-destination> target for a <message-destination-link>
* entry and returns the name of the target in the JNDI tree.
*
- * @param server the main deployer
* @param di DeploymentUnit
* @param link Content of the <message-driven-link> entry.
*
* @return The JNDI Entry of the target; <code>null</code> if
* no appropriate target could be found.
*/
- public static MessageDestinationMetaData findMessageDestination(MainDeployerStructure server, DeploymentUnit di, String link)
+ public static MessageDestinationMetaData findMessageDestination(DeploymentUnit di, String link, ArrayList<MessageDestinationMetaData> searched)
{
- return resolveMessageDestination(server, di, link);
+ return resolveMessageDestination(di, link, searched);
}
private static String resolveLink(DeploymentUnit di, String link, ArrayList<String> searched, boolean isLocal)
@@ -457,7 +483,7 @@
return jndiName;
}
- private static MessageDestinationMetaData resolveMessageDestination(MainDeployerStructure server, DeploymentUnit di, String link)
+ private static MessageDestinationMetaData resolveMessageDestination(DeploymentUnit di, String link, ArrayList<MessageDestinationMetaData> searched)
{
if (link == null)
return null;
@@ -471,16 +497,16 @@
if (link.indexOf('#') != -1)
// link is specified in the form path/file.jar#Bean
- return resolveRelativeMessageDestination(di, link);
+ return resolveRelativeMessageDestination(di, link, searched);
else
{
// link contains a Bean Name, scan the DeploymentUnit tree
DeploymentUnit top = di.getTopLevel();
- return resolveAbsoluteMessageDestination(top, link);
+ return resolveAbsoluteMessageDestination(top, link, searched);
}
}
- private static MessageDestinationMetaData resolveRelativeMessageDestination(DeploymentUnit unit, String link)
+ private static MessageDestinationMetaData resolveRelativeMessageDestination(DeploymentUnit unit, String link, ArrayList<MessageDestinationMetaData> searched)
{
String path = link.substring(0, link.indexOf('#'));
String destinationName = link.substring(link.indexOf('#') + 1);
@@ -500,40 +526,56 @@
if (log.isTraceEnabled())
log.trace("Found appropriate DeploymentUnit: " + targetUnit);
+ MessageDestinationMetaData md = null;
+ MessageDestinationsMetaData mds = null;
if (targetUnit.getAttachment(JBossMetaData.class) != null)
{
JBossMetaData appMD = targetUnit.getAttachment(JBossMetaData.class);
- return appMD.getAssemblyDescriptor().getMessageDestination(destinationName);
+ mds = appMD.getAssemblyDescriptor().getMessageDestinations();
+ md = mds.get(destinationName);
}
if (targetUnit.getAttachment(JBossWebMetaData.class) != null)
{
JBossWebMetaData webMD = targetUnit.getAttachment(JBossWebMetaData.class);
- return webMD.getMessageDestination(destinationName);
+ mds = webMD.getMessageDestinations();
+ md = mds.get(destinationName);
}
- else
+
+ if(md == null)
{
log.warn("DeploymentUnit " + targetUnit + " is not an EJB .jar " + "file!");
- return null;
+ if(mds != null)
+ searched.addAll(mds);
}
+ return md;
}
- private static MessageDestinationMetaData resolveAbsoluteMessageDestination(DeploymentUnit unit, String link)
+ private static MessageDestinationMetaData resolveAbsoluteMessageDestination(DeploymentUnit unit, String link, ArrayList<MessageDestinationMetaData> searched)
{
if (log.isTraceEnabled())
log.trace("Resolving absolute link, di: " + unit);
// Search current DeploymentUnit
+ MessageDestinationMetaData md = null;
+ MessageDestinationsMetaData mds = null;
if (unit.getAttachment(JBossMetaData.class) != null)
{
JBossMetaData appMD = unit.getAttachment(JBossMetaData.class);
- MessageDestinationMetaData mdMD = appMD.getAssemblyDescriptor().getMessageDestination(link);
- if (mdMD != null)
- return mdMD;
+ mds = appMD.getAssemblyDescriptor().getMessageDestinations();
+ searched.addAll(mds);
+ md = mds.get(link);
+ if (md != null)
+ return md;
}
+
if (unit.getAttachment(JBossWebMetaData.class) != null)
{
JBossWebMetaData webMD = unit.getAttachment(JBossWebMetaData.class);
- return webMD.getMessageDestination(link);
+ mds = webMD.getMessageDestinations();
+ searched.addAll(mds);
+ md = mds.get(link);
+ if(md != null)
+ return md;
}
// Search each subcontext
@@ -541,7 +583,7 @@
while (it.hasNext())
{
DeploymentUnit child = it.next();
- MessageDestinationMetaData mdMD = resolveAbsoluteMessageDestination(child, link);
+ MessageDestinationMetaData mdMD = resolveAbsoluteMessageDestination(child, link, searched);
if (mdMD != null)
return mdMD;
}
More information about the jboss-cvs-commits
mailing list