[jboss-cvs] JBossAS SVN: r73194 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri May 9 03:09:24 EDT 2008
Author: scott.stark at jboss.org
Date: 2008-05-09 03:09:24 -0400 (Fri, 09 May 2008)
New Revision: 73194
Modified:
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/EjbDeploymentSummary.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java
Log:
JBMETA-37, Expand determineResolvedJndiName behavior to handle targeted business interfaces
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java 2008-05-09 06:44:05 UTC (rev 73193)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java 2008-05-09 07:09:24 UTC (rev 73194)
@@ -39,6 +39,8 @@
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DeploymentSummary;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces;
+import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
+import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
import org.jboss.metadata.ejb.spec.ContainerTransactionsMetaData;
import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
@@ -570,8 +572,24 @@
abstract public String determineJndiName();
/**
+ * Determine the jndi name for the proxy associated with iface. This calls
+ * {@link #determineResolvedJndiName(String, null)}
+ *
+ * @param iface - the fully qualified class name of the interface, or one
+ * of the {@linkplain KnownInterfaces}. May be null in which case the base
+ * name as determined by {@link #getMappedName()} or
+ * {@link #determineJndiName()} is used.
+ * @return the resolved jndi name
+ */
+ @XmlTransient
+ public String determineResolvedJndiName(String iface)
+ {
+ return determineResolvedJndiName(iface, null);
+ }
+ /**
* Determine the jndi name for the proxy associated with iface. This uses
- * the bean DefaultJndiBindingPolicy. This will be one of:
+ * the bean DefaultJndiBindingPolicy. This will be one of in the following
+ * order:
* - {@link #getJndiBindingPolicy()} the metadata policy
* - the argument defaultPolicy
* - BasicJndiBindingPolicy(base-jndi-name)
@@ -584,8 +602,8 @@
* {@link #getJndiBindingPolicy()} is null.
* @return the resolved jndi name
*/
- @XmlTransient
- public String determineResolvedJndiName(String iface, DefaultJndiBindingPolicy defaultPolicy)
+ public String determineResolvedJndiName(String iface,
+ DefaultJndiBindingPolicy defaultPolicy)
{
String baseJndiName = getMappedName();
if(baseJndiName == null)
@@ -593,7 +611,7 @@
String resolvedJndiName = baseJndiName;
if(getJBossMetaData().getDeploymentSummary() != null)
{
- // Use
+ // Use summary info to create the metadata policy if it exists
DeploymentSummary dsummary = getJBossMetaData().getDeploymentSummary();
DefaultJndiBindingPolicy policy = null;
try
@@ -606,34 +624,74 @@
if(policy == null)
policy = defaultPolicy;
if(policy == null)
+ {
+ // Use the metadata default binding policy
policy = new BasicJndiBindingPolicy(baseJndiName);
+ }
+
+ // Derive the summary info from this metadata and deployment summary
EjbDeploymentSummary ejbSummary = new EjbDeploymentSummary(this, dsummary);
- // Need to compare iface against the metadata local/local-home/home/remote
+ // The targeted business interface to append to the jndi name
+ String ifaceToAppend = null;
+ // Need to compare iface against the metadata local-home/home & business locals/remotes
if(this.isSession())
{
JBossSessionBeanMetaData sbeanMD = (JBossSessionBeanMetaData) this;
- if(sbeanMD.getLocal() != null && sbeanMD.getLocal().equals(iface))
- iface = KnownInterfaces.LOCAL;
- else if(sbeanMD.getLocalHome() != null && sbeanMD.getLocalHome().equals(iface))
+ // Map local/remote home
+ if(sbeanMD.getLocalHome() != null && sbeanMD.getLocalHome().equals(iface))
iface = KnownInterfaces.LOCAL_HOME;
else if(sbeanMD.getHome() != null && sbeanMD.getHome().equals(iface))
iface = KnownInterfaces.HOME;
- else if(sbeanMD.getRemote() != null && sbeanMD.getRemote().equals(iface))
- iface = KnownInterfaces.REMOTE;
+ else
+ {
+ // Check business locals
+ BusinessLocalsMetaData locals = sbeanMD.getBusinessLocals();
+ if(locals != null)
+ {
+ for(String local : locals)
+ {
+ if(local.equals(iface))
+ {
+ ifaceToAppend = iface;
+ iface = KnownInterfaces.LOCAL;
+ break;
+ }
+ }
+ }
+ if(ifaceToAppend == null)
+ {
+ // Check business remotes
+ BusinessRemotesMetaData remotes = sbeanMD.getBusinessRemotes();
+ if(remotes != null)
+ {
+ for(String remote : remotes)
+ {
+ if(remote.equals(iface))
+ {
+ ifaceToAppend = iface;
+ iface = KnownInterfaces.REMOTE;
+ break;
+ }
+ }
+ }
+ }
+ }
}
else if(this.isEntity())
{
JBossEntityBeanMetaData ebeanMD = (JBossEntityBeanMetaData) this;
- if(ebeanMD.getLocal() != null && ebeanMD.getLocal().equals(iface))
- iface = KnownInterfaces.LOCAL;
- else if(ebeanMD.getLocalHome() != null && ebeanMD.getLocalHome().equals(iface))
+ if(ebeanMD.getLocalHome() != null && ebeanMD.getLocalHome().equals(iface))
iface = KnownInterfaces.LOCAL_HOME;
else if(ebeanMD.getHome() != null && ebeanMD.getHome().equals(iface))
iface = KnownInterfaces.HOME;
- else if(ebeanMD.getRemote() != null && ebeanMD.getRemote().equals(iface))
- iface = KnownInterfaces.REMOTE;
}
+
+ // Have the policy
resolvedJndiName = policy.getJndiName(ejbSummary, iface);
+ if(ifaceToAppend != null)
+ {
+ resolvedJndiName += "-" + ifaceToAppend;
+ }
}
return resolvedJndiName;
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java 2008-05-09 06:44:05 UTC (rev 73193)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java 2008-05-09 07:09:24 UTC (rev 73194)
@@ -93,7 +93,14 @@
jndiName = getJndiName(summary);
else if(KnownInterfaces.isKnownInterface(iface))
{
- jndiName = baseJndiName + "/" + iface;
+ // Don't append the iface for ejb2.x homes
+ boolean is3x = summary.getBeanMD().getJBossMetaData().isEJB3x();
+ if(is3x)
+ jndiName = baseJndiName + "/" + iface;
+ else if(KnownInterfaces.LOCAL_HOME.equalsIgnoreCase(iface))
+ jndiName = summary.getBeanMD().determineLocalJndiName();
+ else
+ jndiName = baseJndiName;
}
else
{
@@ -102,5 +109,4 @@
return jndiName;
}
-
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/EjbDeploymentSummary.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/EjbDeploymentSummary.java 2008-05-09 06:44:05 UTC (rev 73193)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/EjbDeploymentSummary.java 2008-05-09 07:09:24 UTC (rev 73194)
@@ -71,6 +71,7 @@
this.setLocal(true);
// Is a local-home also a home?
}
+ this.beanMD = beanMD;
}
// Accessors / Mutators
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java 2008-05-09 06:44:05 UTC (rev 73193)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java 2008-05-09 07:09:24 UTC (rev 73194)
@@ -23,11 +23,14 @@
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.ejb.jboss.jndipolicy.plugins.EjbNameJndiBindingPolicy;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DeploymentSummary;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces;
+import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
+import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
import junit.framework.TestCase;
@@ -71,9 +74,9 @@
assertEquals("testResolvedJndiNames-jndi-name/org.jboss.test.some.IFace", resolvedJndiNameIface);
}
/**
- * JBMETA-36
+ * JBMETA-36, JBMETA-37
*/
- public void testResolvedJndiNamesWithKnowIfaces()
+ public void testResolvedJndiNamesWithKnownIfaces()
{
JBossEnterpriseBeanMetaData beanMD = getEjbMetaData();
JBossSessionBeanMetaData sbeanMD = (JBossSessionBeanMetaData) beanMD;
@@ -81,20 +84,70 @@
sbeanMD.setLocalHome("org.jboss.ifaces.LocalHomeIF");
sbeanMD.setHome("org.jboss.ifaces.HomeIF");
sbeanMD.setRemote("org.jboss.ifaces.RemoteIF");
+ BusinessLocalsMetaData locals = new BusinessLocalsMetaData();
+ locals.add("org.jboss.ifaces.LocalIF");
+ locals.add("org.jboss.ifaces.LocalIF2");
+ sbeanMD.setBusinessLocals(locals);
+ BusinessRemotesMetaData remotes = new BusinessRemotesMetaData();
+ remotes.add("org.jboss.ifaces.RemoteIF");
+ remotes.add("org.jboss.ifaces.RemoteIF2");
+ sbeanMD.setBusinessRemotes(remotes);
String resolvedJndiName = beanMD.determineResolvedJndiName(null, null);
- assertEquals("testResolvedJndiNamesWithKnowIfaces-jndi-name", resolvedJndiName);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces-jndi-name", resolvedJndiName);
String resolvedJndiNameRemote = beanMD.determineResolvedJndiName("org.jboss.ifaces.RemoteIF", null);
- assertEquals("testResolvedJndiNamesWithKnowIfaces-jndi-name/remote", resolvedJndiNameRemote);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces-jndi-name/remote-org.jboss.ifaces.RemoteIF", resolvedJndiNameRemote);
+ String resolvedJndiNameRemote2 = beanMD.determineResolvedJndiName("org.jboss.ifaces.RemoteIF2", null);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces-jndi-name/remote-org.jboss.ifaces.RemoteIF2", resolvedJndiNameRemote2);
String resolvedJndiNameHome = beanMD.determineResolvedJndiName("org.jboss.ifaces.HomeIF", null);
- assertEquals("testResolvedJndiNamesWithKnowIfaces-jndi-name/remoteHome", resolvedJndiNameHome);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces-jndi-name/remoteHome", resolvedJndiNameHome);
String resolvedJndiNameLocal = beanMD.determineResolvedJndiName("org.jboss.ifaces.LocalIF", null);
- assertEquals("testResolvedJndiNamesWithKnowIfaces-jndi-name/local", resolvedJndiNameLocal);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces-jndi-name/local-org.jboss.ifaces.LocalIF", resolvedJndiNameLocal);
+ String resolvedJndiNameLocal2 = beanMD.determineResolvedJndiName("org.jboss.ifaces.LocalIF2", null);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces-jndi-name/local-org.jboss.ifaces.LocalIF2", resolvedJndiNameLocal2);
String resolvedJndiNameLocalHome = beanMD.determineResolvedJndiName("org.jboss.ifaces.LocalHomeIF", null);
- assertEquals("testResolvedJndiNamesWithKnowIfaces-jndi-name/localHome", resolvedJndiNameLocalHome);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces-jndi-name/localHome", resolvedJndiNameLocalHome);
String resolvedJndiNameIface = beanMD.determineResolvedJndiName("org.jboss.test.some.IFace", null);
- assertEquals("testResolvedJndiNamesWithKnowIfaces-jndi-name/org.jboss.test.some.IFace", resolvedJndiNameIface);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces-jndi-name/org.jboss.test.some.IFace", resolvedJndiNameIface);
}
+ public void testResolvedJndiNamesWithKnownIfaces2x()
+ {
+ JBossEnterpriseBeanMetaData beanMD = getEjbMetaData();
+ beanMD.getJBossMetaData().setVersion("2.1");
+ JBossSessionBeanMetaData sbeanMD = (JBossSessionBeanMetaData) beanMD;
+ sbeanMD.setLocal("org.jboss.ifaces.LocalIF");
+ sbeanMD.setLocalHome("org.jboss.ifaces.LocalHomeIF");
+ sbeanMD.setHome("org.jboss.ifaces.HomeIF");
+ sbeanMD.setRemote("org.jboss.ifaces.RemoteIF");
+
+
+ String resolvedJndiName = beanMD.determineResolvedJndiName(null, null);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces2x-jndi-name", resolvedJndiName);
+ String resolvedJndiNameHome = beanMD.determineResolvedJndiName("org.jboss.ifaces.HomeIF", null);
+ assertEquals("testResolvedJndiNamesWithKnownIfaces2x-jndi-name", resolvedJndiNameHome);
+ String resolvedJndiNameLocalHome = beanMD.determineResolvedJndiName("org.jboss.ifaces.LocalHomeIF", null);
+ assertEquals(sbeanMD.determineLocalJndiName(), resolvedJndiNameLocalHome);
+ }
+
+ public void testResolvedJndiNamesWithKnownIfacesEntity()
+ {
+ JBossEnterpriseBeanMetaData beanMD = getEntityMetaData();
+ JBossEntityBeanMetaData sbeanMD = (JBossEntityBeanMetaData) beanMD;
+ sbeanMD.setLocal("org.jboss.ifaces.LocalIF");
+ sbeanMD.setLocalHome("org.jboss.ifaces.LocalHomeIF");
+ sbeanMD.setHome("org.jboss.ifaces.HomeIF");
+ sbeanMD.setRemote("org.jboss.ifaces.RemoteIF");
+
+ String resolvedJndiName = beanMD.determineResolvedJndiName(null, null);
+ assertEquals("testResolvedJndiNamesWithKnownIfacesEntity-jndi-name", resolvedJndiName);
+ String resolvedJndiNameHome = beanMD.determineResolvedJndiName("org.jboss.ifaces.HomeIF", null);
+ assertEquals("testResolvedJndiNamesWithKnownIfacesEntity-jndi-name/remoteHome", resolvedJndiNameHome);
+ String resolvedJndiNameLocalHome = beanMD.determineResolvedJndiName("org.jboss.ifaces.LocalHomeIF", null);
+ assertEquals("testResolvedJndiNamesWithKnownIfacesEntity-jndi-name/localHome", resolvedJndiNameLocalHome);
+ String resolvedJndiNameIface = beanMD.determineResolvedJndiName("org.jboss.test.some.IFace", null);
+ assertEquals("testResolvedJndiNamesWithKnownIfacesEntity-jndi-name/org.jboss.test.some.IFace", resolvedJndiNameIface);
+ }
+
/**
* Test the determineResolvedJndiName with a jndiBindingPolicy on the
* JBossEnterpriseBeanMetaData
@@ -161,8 +214,35 @@
sbeanMD.setEjbClass("org.jboss.ejb."+name);
sbeanMD.setJndiName(name+"-jndi-name");
JBossEnterpriseBeansMetaData beans = new JBossEnterpriseBeansMetaData();
+ beans.setEjbJarMetaData(jbossMetaData);
beans.add(sbeanMD);
jbossMetaData.setEnterpriseBeans(beans);
return sbeanMD;
}
+ /**
+ * Creates a JBossEntityBeanMetaData with associated JBossMetaData with:
+ * ejbName = getName() + "-ejb"
+ * ejbClass = "org.jboss.ejb."+ getName()
+ * jndiName = getName() + "-jndi-name"
+ * @return JBossEntityBeanMetaData
+ */
+ protected JBossEnterpriseBeanMetaData getEntityMetaData()
+ {
+ String name = super.getName();
+ JBossMetaData jbossMetaData = new JBossMetaData();
+ DeploymentSummary deploymentSummary = new DeploymentSummary();
+ deploymentSummary.setDeploymentName(name);
+ deploymentSummary.setDeploymentScopeBaseName("base");
+ deploymentSummary.setLoader(getClass().getClassLoader());
+ jbossMetaData.setDeploymentSummary(deploymentSummary);
+ JBossEntityBeanMetaData sbeanMD = new JBossEntityBeanMetaData();
+ sbeanMD.setEjbName(name+"-ejb");
+ sbeanMD.setEjbClass("org.jboss.ejb."+name);
+ sbeanMD.setJndiName(name+"-jndi-name");
+ JBossEnterpriseBeansMetaData beans = new JBossEnterpriseBeansMetaData();
+ beans.setEjbJarMetaData(jbossMetaData);
+ beans.add(sbeanMD);
+ jbossMetaData.setEnterpriseBeans(beans);
+ return sbeanMD;
+ }
}
More information about the jboss-cvs-commits
mailing list