[jboss-cvs] JBossAS SVN: r73241 - 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 17:55:09 EDT 2008
Author: scott.stark at jboss.org
Date: 2008-05-09 17:55:09 -0400 (Fri, 09 May 2008)
New Revision: 73241
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/JBossMetaData.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/plugins/EjbNameJndiBindingPolicy.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/SessionJndiBindingPolicy.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/KnownInterfaces.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java
Log:
JBMETA-38, Expand determineResolvedJndiName behavior to accept iface + ifaceType
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 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java 2008-05-09 21:55:09 UTC (rev 73241)
@@ -39,6 +39,7 @@
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.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
@@ -92,7 +93,7 @@
*
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @author Scott.Stark at jboss.org
- * @version $Revision: 1.1 $
+ * @version $Revision$
*/
@JBossXmlModelGroup(
kind=JBossXmlConstants.MODEL_GROUP_CHOICE,
@@ -631,17 +632,16 @@
// Derive the summary info from this metadata and deployment summary
EjbDeploymentSummary ejbSummary = new EjbDeploymentSummary(this, dsummary);
- // The targeted business interface to append to the jndi name
- String ifaceToAppend = null;
+ KnownInterfaceType ifaceType = KnownInterfaces.classifyInterface(iface);
// Need to compare iface against the metadata local-home/home & business locals/remotes
- if(this.isSession())
+ if(this.isSession() && ifaceType == KnownInterfaceType.UNKNOWN)
{
JBossSessionBeanMetaData sbeanMD = (JBossSessionBeanMetaData) this;
- // Map local/remote home
+ // Figure out the interface type from the metadata
if(sbeanMD.getLocalHome() != null && sbeanMD.getLocalHome().equals(iface))
- iface = KnownInterfaces.LOCAL_HOME;
+ ifaceType = KnownInterfaceType.LOCAL_HOME;
else if(sbeanMD.getHome() != null && sbeanMD.getHome().equals(iface))
- iface = KnownInterfaces.HOME;
+ ifaceType = KnownInterfaceType.REMOTE_HOME;
else
{
// Check business locals
@@ -652,13 +652,12 @@
{
if(local.equals(iface))
{
- ifaceToAppend = iface;
- iface = KnownInterfaces.LOCAL;
+ ifaceType = KnownInterfaceType.BUSINESS_LOCAL;
break;
}
}
}
- if(ifaceToAppend == null)
+ if(ifaceType == KnownInterfaceType.UNKNOWN)
{
// Check business remotes
BusinessRemotesMetaData remotes = sbeanMD.getBusinessRemotes();
@@ -668,8 +667,7 @@
{
if(remote.equals(iface))
{
- ifaceToAppend = iface;
- iface = KnownInterfaces.REMOTE;
+ ifaceType = KnownInterfaceType.BUSINESS_REMOTE;
break;
}
}
@@ -677,21 +675,18 @@
}
}
}
- else if(this.isEntity())
+ else if(this.isEntity() && ifaceType == KnownInterfaceType.UNKNOWN)
{
JBossEntityBeanMetaData ebeanMD = (JBossEntityBeanMetaData) this;
+ // Figure out the interface type from the metadata
if(ebeanMD.getLocalHome() != null && ebeanMD.getLocalHome().equals(iface))
- iface = KnownInterfaces.LOCAL_HOME;
+ ifaceType = KnownInterfaceType.LOCAL_HOME;
else if(ebeanMD.getHome() != null && ebeanMD.getHome().equals(iface))
- iface = KnownInterfaces.HOME;
+ ifaceType = KnownInterfaceType.REMOTE_HOME;
}
- // Have the policy
- resolvedJndiName = policy.getJndiName(ejbSummary, iface);
- if(ifaceToAppend != null)
- {
- resolvedJndiName += "-" + ifaceToAppend;
- }
+ // Have the policy generate the actual name
+ resolvedJndiName = policy.getJndiName(ejbSummary, iface, ifaceType);
}
return resolvedJndiName;
}
Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java 2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java 2008-05-09 21:55:09 UTC (rev 73241)
@@ -218,6 +218,20 @@
this.ejbClientJar = ejbClientJar;
}
+ /**
+ * The spec metadata version information
+ * @return
+ */
+ @XmlTransient
+ public String getEjbVersion()
+ {
+ return ejbVersion;
+ }
+ public void setEjbVersion(String ejbVersion)
+ {
+ this.ejbVersion = ejbVersion;
+ }
+
public RelationsMetaData getRelationships()
{
return this.relationships;
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 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java 2008-05-09 21:55:09 UTC (rev 73241)
@@ -24,6 +24,7 @@
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
/**
* A basic implementation of DefaultJndiBindingPolicy that uses a base jndi
@@ -86,25 +87,59 @@
return baseJndiName;
}
- public String getJndiName(EjbDeploymentSummary summary, String iface)
+ public String getJndiName(EjbDeploymentSummary summary, String iface,
+ KnownInterfaceType ifaceType)
{
String jndiName = null;
- if(iface == null)
- jndiName = getJndiName(summary);
- else if(KnownInterfaces.isKnownInterface(iface))
+ if(KnownInterfaces.isKnownInterface(iface))
+ iface = null;
+
+ if(ifaceType == KnownInterfaceType.UNKNOWN)
{
- // Don't append the iface for ejb2.x homes
- boolean is3x = summary.getBeanMD().getJBossMetaData().isEJB3x();
- if(is3x)
+ if(iface == null)
+ jndiName = baseJndiName;
+ else
jndiName = baseJndiName + "/" + iface;
- else if(KnownInterfaces.LOCAL_HOME.equalsIgnoreCase(iface))
- jndiName = summary.getBeanMD().determineLocalJndiName();
- else
- jndiName = baseJndiName;
}
else
{
- jndiName = baseJndiName + "/" + iface;
+ boolean is3x = summary.getBeanMD().getJBossMetaData().isEJB3x();
+ switch(ifaceType)
+ {
+ // base-name / (local|remote) - iface
+ case BUSINESS_LOCAL:
+ case BUSINESS_REMOTE:
+ case UNKNOWN:
+ if(iface == null)
+ jndiName = baseJndiName + "/" + ifaceType.toSuffix();
+ else
+ jndiName = baseJndiName + "/" + ifaceType.toSuffix() + "-" + iface;
+ break;
+ case LOCAL_HOME:
+ if(is3x)
+ {
+ // base-name / (local|remote)Home
+ jndiName = baseJndiName + "/" + ifaceType.toSuffix();
+ }
+ else
+ {
+ // Use the bean local jndi name or generated name for ejb2.x local homes
+ jndiName = summary.getBeanMD().determineLocalJndiName();
+ }
+ break;
+ case REMOTE_HOME:
+ if(is3x)
+ {
+ // base-name / (local|remote)Home
+ jndiName = baseJndiName + "/" + ifaceType.toSuffix();
+ }
+ else
+ {
+ // Don't append the iface suffix for ejb2.x homes
+ jndiName = baseJndiName;
+ }
+ break;
+ }
}
return jndiName;
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/EjbNameJndiBindingPolicy.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/EjbNameJndiBindingPolicy.java 2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/EjbNameJndiBindingPolicy.java 2008-05-09 21:55:09 UTC (rev 73241)
@@ -24,6 +24,7 @@
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
/**
* A default jndi policy based on the ejb name.
@@ -73,7 +74,8 @@
/**
* @return ejb-name + "/" + iface
*/
- public String getJndiName(EjbDeploymentSummary summary, String iface)
+ public String getJndiName(EjbDeploymentSummary summary, String iface,
+ KnownInterfaceType ifaceType)
{
String jndiName = null;
if(iface == null)
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/SessionJndiBindingPolicy.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/SessionJndiBindingPolicy.java 2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/SessionJndiBindingPolicy.java 2008-05-09 21:55:09 UTC (rev 73241)
@@ -25,6 +25,7 @@
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
/**
* Default session bean jndi naming policy
@@ -134,7 +135,8 @@
/**
* @return ejb-name + "/" + iface
*/
- public String getJndiName(EjbDeploymentSummary summary, String iface)
+ public String getJndiName(EjbDeploymentSummary summary, String iface,
+ KnownInterfaceType ifaceType)
{
return summary.getEjbName() + "/" + iface;
}
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java 2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java 2008-05-09 21:55:09 UTC (rev 73241)
@@ -21,12 +21,14 @@
*/
package org.jboss.metadata.ejb.jboss.jndipolicy.spi;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
+
/**
* A jndi name policy spi for obtaining jndi names not specified in metadata.
*
* @author <a href="mailto:andrew.rubinger at redhat.com">ALR</a>
* @author Scott.Stark at jboss.org
- * @version $Revision:$
+ * @version $Revision$
*/
public interface DefaultJndiBindingPolicy
{
@@ -39,12 +41,16 @@
*/
String getJndiName(EjbDeploymentSummary summary);
/**
+ * Get the jndi name to use as the reference link target and proxy binding
+ * location for a given ejb interface.
*
- * @param summary
- * @param iface
+ * @param summary - the deployment summary information for the ejb in question.
+ * @param iface - the fully qualified name of the interface, may be null.
+ * @param ifaceType - the classification of iface to one of the known
+ * ejb interface types
* @return
*/
- String getJndiName(EjbDeploymentSummary summary, String iface);
+ String getJndiName(EjbDeploymentSummary summary, String iface, KnownInterfaceType ifaceType);
String getDefaultRemoteJndiName(EjbDeploymentSummary summary);
Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/KnownInterfaces.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/KnownInterfaces.java 2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/KnownInterfaces.java 2008-05-09 21:55:09 UTC (rev 73241)
@@ -30,10 +30,36 @@
*/
public final class KnownInterfaces
{
+ /**
+ * Enums for the standard types of ejb interfaces
+ */
+ public enum KnownInterfaceType {
+ BUSINESS_LOCAL(KnownInterfaces.LOCAL),
+ BUSINESS_REMOTE(KnownInterfaces.REMOTE),
+ LOCAL_HOME(KnownInterfaces.LOCAL_HOME),
+ REMOTE_HOME(KnownInterfaces.HOME),
+ UNKNOWN(KnownInterfaces.UNKNOWN);
+
+ /**
+ * Get the preferred jndi binding suffix
+ * @return the preferred jndi binding suffix for the interface type
+ */
+ public String toSuffix()
+ {
+ return suffix;
+ }
+
+ private final String suffix;
+ KnownInterfaceType(String suffix)
+ {
+ this.suffix = suffix;
+ }
+ }
public static final String LOCAL = "local";
public static final String LOCAL_HOME = "localHome";
public static final String REMOTE = "remote";
public static final String HOME = "remoteHome";
+ public static final String UNKNOWN = "unknown";
/**
* Is iface one of the KnownInterfaces
@@ -49,4 +75,23 @@
;
return isKnownInterface;
}
+ /**
+ * Utility method that compares iface to one of the KnownInterfaces constants
+ * and returns the corresponding enum.
+ * @param iface - a
+ * @return a KnownInterfaceType
+ */
+ public static KnownInterfaceType classifyInterface(String iface)
+ {
+ KnownInterfaceType ifaceType = KnownInterfaceType.UNKNOWN;
+ if(KnownInterfaces.HOME.equalsIgnoreCase(iface))
+ ifaceType = KnownInterfaceType.REMOTE_HOME;
+ else if(KnownInterfaces.LOCAL.equalsIgnoreCase(iface))
+ ifaceType = KnownInterfaceType.BUSINESS_LOCAL;
+ else if(KnownInterfaces.LOCAL_HOME.equalsIgnoreCase(iface))
+ ifaceType = KnownInterfaceType.LOCAL_HOME;
+ else if(KnownInterfaces.REMOTE.equalsIgnoreCase(iface))
+ ifaceType = KnownInterfaceType.BUSINESS_REMOTE;
+ return ifaceType;
+ }
}
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 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java 2008-05-09 21:55:09 UTC (rev 73241)
@@ -113,7 +113,8 @@
public void testResolvedJndiNamesWithKnownIfaces2x()
{
JBossEnterpriseBeanMetaData beanMD = getEjbMetaData();
- beanMD.getJBossMetaData().setVersion("2.1");
+ beanMD.getJBossMetaData().setEjbVersion("2.1");
+
JBossSessionBeanMetaData sbeanMD = (JBossSessionBeanMetaData) beanMD;
sbeanMD.setLocal("org.jboss.ifaces.LocalIF");
sbeanMD.setLocalHome("org.jboss.ifaces.LocalHomeIF");
@@ -204,6 +205,7 @@
{
String name = super.getName();
JBossMetaData jbossMetaData = new JBossMetaData();
+ jbossMetaData.setEjbVersion("3.0");
DeploymentSummary deploymentSummary = new DeploymentSummary();
deploymentSummary.setDeploymentName(name);
deploymentSummary.setDeploymentScopeBaseName("base");
@@ -230,6 +232,7 @@
{
String name = super.getName();
JBossMetaData jbossMetaData = new JBossMetaData();
+ jbossMetaData.setEjbVersion("3.0");
DeploymentSummary deploymentSummary = new DeploymentSummary();
deploymentSummary.setDeploymentName(name);
deploymentSummary.setDeploymentScopeBaseName("base");
More information about the jboss-cvs-commits
mailing list