[jboss-cvs] JBossAS SVN: r73126 - 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
Wed May 7 19:55:53 EDT 2008
Author: scott.stark at jboss.org
Date: 2008-05-07 19:55:52 -0400 (Wed, 07 May 2008)
New Revision: 73126
Added:
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/DeploymentSummary.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
Modified:
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossConsumerBeanMetaData.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossGenericBeanMetaData.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBeanMetaData.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/JBossSessionBeanMetaData.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/EjbDeploymentSummary.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EJBMetaDataTestSuite.java
Log:
JBMETA-35, add a determineResolvedJndiName method to the enterprise bean metadata base class
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossConsumerBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossConsumerBeanMetaData.java 2008-05-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossConsumerBeanMetaData.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -138,4 +138,11 @@
{
throw new RuntimeException("NYI");
}
+
+ @Override
+ public String determineJndiName()
+ {
+ return null;
+ }
+
}
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-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -34,7 +34,10 @@
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.jboss.metadata.common.ejb.IEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.jndipolicy.plugins.BasicJndiBindingPolicy;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DeploymentSummary;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
import org.jboss.metadata.ejb.spec.ContainerTransactionsMetaData;
import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
@@ -169,7 +172,7 @@
/** The cached container transactions */
private transient ContainerTransactionsMetaData cachedContainerTransactions;
-
+
/** The transaction type cache */
private transient ConcurrentHashMap<Method, TransactionAttributeType> methodTx;
/** The transaction type */
@@ -179,6 +182,7 @@
private String jndiBindingPolicy;
/** The runtime name of the ejb container as known to the 'kernel', what ever it is */
private String containerName;
+ /** A non-managed generated container name as known to the 'kernel', what ever it is */
private String generatedContainerName;
/**
@@ -556,6 +560,50 @@
}
/**
+ * Get the base jndi name for the bean if one exists. Not all ejbs have
+ * a jndi name notion.
+ *
+ * @return the base jndi name for the ejb it one exists, null otherwise.
+ */
+ @XmlTransient
+ abstract public String determineJndiName();
+
+ /**
+ *
+ * @param iface
+ * @param defaultPolicy
+ * @return
+ */
+ @XmlTransient
+ public String determineResolvedJndiName(String iface, DefaultJndiBindingPolicy defaultPolicy)
+ {
+ String baseJndiName = getMappedName();
+ if(baseJndiName == null)
+ baseJndiName = determineJndiName();
+ String resolvedJndiName = baseJndiName;
+ if(getJBossMetaData().getDeploymentSummary() != null)
+ {
+ // Use
+ DeploymentSummary dsummary = getJBossMetaData().getDeploymentSummary();
+ DefaultJndiBindingPolicy policy = null;
+ try
+ {
+ policy = createPolicy(dsummary.getLoader(), null);
+ }
+ catch(Exception e)
+ {
+ }
+ if(policy == null)
+ policy = defaultPolicy;
+ if(policy == null)
+ policy = new BasicJndiBindingPolicy(baseJndiName);
+ EjbDeploymentSummary ejbSummary = new EjbDeploymentSummary(this, dsummary);
+ resolvedJndiName = policy.getJndiName(ejbSummary, iface);
+ }
+ return resolvedJndiName;
+ }
+
+ /**
* Create the DefaultJndiBindingPolicy from the bean metadata.
*
* @param loader - the class loader used to load the policy class
@@ -571,7 +619,7 @@
{
Class<? extends DefaultJndiBindingPolicy> policyClass = defaultPolicyClass;
String policyClassName = getJndiBindingPolicy();
- if(policyClassName != null)
+ if(policyClassName != null && loader != null)
{
policyClass = (Class<? extends DefaultJndiBindingPolicy>)
loader.loadClass(policyClassName);
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java 2008-05-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -21,7 +21,6 @@
*/
package org.jboss.metadata.ejb.jboss;
-import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
import org.jboss.metadata.ejb.spec.CMPFieldsMetaData;
import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
import org.jboss.metadata.ejb.spec.EntityBeanMetaData;
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossGenericBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossGenericBeanMetaData.java 2008-05-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossGenericBeanMetaData.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -61,6 +61,12 @@
return null;
}
+ @Override
+ public String determineJndiName()
+ {
+ return getJndiName();
+ }
+
/**
* Get the jndiName.
*
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBeanMetaData.java 2008-05-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBeanMetaData.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -377,6 +377,12 @@
{
return getEjbName();
}
+
+ @Override
+ public String determineJndiName()
+ {
+ return null;
+ }
/**
* Get the destinationJndiName.
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-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -32,6 +32,7 @@
import org.jboss.logging.Logger;
import org.jboss.metadata.common.ejb.IEjbJarMetaData;
import org.jboss.metadata.common.jboss.LoaderRepositoryMetaData;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DeploymentSummary;
import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
import org.jboss.metadata.ejb.spec.EjbJarMetaData;
import org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData;
@@ -47,7 +48,7 @@
*
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @author Scott.Stark at jboss.org
- * @version $Revision: 1.1 $
+ * @version $Revision$
*/
public class JBossMetaData extends IdMetaDataImplWithDescriptionGroup
implements IEjbJarMetaData<JBossAssemblyDescriptorMetaData, JBossEnterpriseBeansMetaData, JBossEnterpriseBeanMetaData, JBossMetaData>
@@ -120,7 +121,9 @@
/** the class name that implements the default JNDI binding policy for this ejb unit*/
private String jndiBindingPolicy;
-
+ /** The ejb jar deployment summary information */
+ private DeploymentSummary deploymentSummary;
+
/**
* Create a new JBossMetaData.
*/
@@ -639,6 +642,21 @@
}
/**
+ * Get the ejb deployment summary information.
+ * @return the associated ejb deployment summary if a deployer has
+ * set it. May be null.
+ */
+ @XmlTransient
+ public DeploymentSummary getDeploymentSummary()
+ {
+ return deploymentSummary;
+ }
+ public void setDeploymentSummary(DeploymentSummary deploymentSummary)
+ {
+ this.deploymentSummary = deploymentSummary;
+ }
+
+ /**
* Merge the contents of override with original into this.
*
* @param override data which overrides original
Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java
___________________________________________________________________
Name: svn:keywords
+ Revision Id
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java 2008-05-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -23,7 +23,6 @@
import java.util.List;
-import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
import org.jboss.metadata.ejb.spec.AroundInvokesMetaData;
import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
Added: 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 (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -0,0 +1,106 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.ejb.jboss.jndipolicy.plugins;
+
+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;
+
+/**
+ * A basic implementation of DefaultJndiBindingPolicy that uses a base jndi
+ * name and generates the following from that:
+ * getDefaultLocalHomeJndiName : baseJndiName + "/" + KnownInterfaces.LOCAL_HOME
+ * getDefaultLocalJndiName : baseJndiName + "/" + KnownInterfaces.LOCAL
+ * getDefaultRemoteHomeJndiName : baseJndiName + "/" + KnownInterfaces.HOME
+ * getDefaultRemoteJndiName : baseJndiName + "/" + KnownInterfaces.REMOTE
+ * getJndiName : baseJndiName
+ * getJndiName(String iface) : baseJndiName + "/" + iface (if iface is not in KnownInterfaces)
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
+ */
+public class BasicJndiBindingPolicy implements DefaultJndiBindingPolicy
+{
+ private String baseJndiName;
+
+ public BasicJndiBindingPolicy()
+ {
+
+ }
+ public BasicJndiBindingPolicy(String baseJndiName)
+ {
+ this.baseJndiName = baseJndiName;
+ }
+
+
+ public String getBaseJndiName()
+ {
+ return baseJndiName;
+ }
+ public void setBaseJndiName(String baseJndiName)
+ {
+ this.baseJndiName = baseJndiName;
+ }
+
+ public String getDefaultLocalHomeJndiName(EjbDeploymentSummary summary)
+ {
+ return baseJndiName + "/" + KnownInterfaces.LOCAL_HOME;
+ }
+
+ public String getDefaultLocalJndiName(EjbDeploymentSummary summary)
+ {
+ return baseJndiName + "/" + KnownInterfaces.LOCAL;
+ }
+
+ public String getDefaultRemoteHomeJndiName(EjbDeploymentSummary summary)
+ {
+ return baseJndiName + "/" + KnownInterfaces.HOME;
+ }
+
+ public String getDefaultRemoteJndiName(EjbDeploymentSummary summary)
+ {
+ return baseJndiName + "/" + KnownInterfaces.REMOTE;
+ }
+
+ public String getJndiName(EjbDeploymentSummary summary)
+ {
+ return baseJndiName;
+ }
+
+ public String getJndiName(EjbDeploymentSummary summary, String iface)
+ {
+ String jndiName = null;
+ if(iface == null)
+ jndiName = getJndiName(summary);
+ else if(KnownInterfaces.isKnownInterface(iface))
+ {
+ jndiName = baseJndiName + "/" + iface.toLowerCase();
+ }
+ else
+ {
+ jndiName = baseJndiName + "/" + iface;
+ }
+ 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-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/EjbNameJndiBindingPolicy.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -23,6 +23,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;
/**
* A default jndi policy based on the ejb name.
@@ -34,44 +35,67 @@
implements DefaultJndiBindingPolicy
{
- /* (non-Javadoc)
- * @see org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy#getDefaultLocalHomeJndiName(org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary)
+ /**
+ * @return ejb-name + "LocalHome";
*/
public String getDefaultLocalHomeJndiName(EjbDeploymentSummary summary)
{
return summary.getEjbName() + "LocalHome";
}
-
- /* (non-Javadoc)
- * @see org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy#getDefaultLocalJndiName(org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary)
+ /**
+ * @return ejb-name + "Local"
*/
public String getDefaultLocalJndiName(EjbDeploymentSummary summary)
{
return summary.getEjbName() + "Local";
}
-
- /* (non-Javadoc)
- * @see org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy#getDefaultRemoteHomeJndiName(org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary)
+ /**
+ * @return ejb-name + "Home"
*/
public String getDefaultRemoteHomeJndiName(EjbDeploymentSummary summary)
{
return summary.getEjbName() + "Home";
}
-
- /* (non-Javadoc)
- * @see org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy#getDefaultRemoteJndiName(org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary)
+ /**
+ * @return ejb-name + "Remote"
*/
public String getDefaultRemoteJndiName(EjbDeploymentSummary summary)
{
return summary.getEjbName() + "Remote";
}
-
- /* (non-Javadoc)
- * @see org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy#getJndiName(org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary)
+ /**
+ * @return ejb-name
*/
public String getJndiName(EjbDeploymentSummary summary)
{
return summary.getEjbName();
}
+ /**
+ * @return ejb-name + "/" + iface
+ */
+ public String getJndiName(EjbDeploymentSummary summary, String iface)
+ {
+ String jndiName = null;
+ if(iface == null)
+ jndiName = getJndiName(summary);
+ else if(KnownInterfaces.isKnownInterface(iface))
+ {
+ if(KnownInterfaces.HOME.equalsIgnoreCase(iface))
+ jndiName = getDefaultRemoteHomeJndiName(summary);
+ else if(KnownInterfaces.LOCAL.equalsIgnoreCase(iface))
+ jndiName = getDefaultLocalJndiName(summary);
+ else if(KnownInterfaces.LOCAL_HOME.equalsIgnoreCase(iface))
+ jndiName = getDefaultLocalHomeJndiName(summary);
+ else if(KnownInterfaces.REMOTE.equalsIgnoreCase(iface))
+ jndiName = getDefaultRemoteJndiName(summary);
+ else
+ throw new IllegalStateException("Unknown iterface type: "+iface);
+ }
+ else
+ {
+ jndiName = summary.getEjbName() + "/" + iface;
+ }
+ return jndiName;
+ }
}
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-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/SessionJndiBindingPolicy.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -131,5 +131,12 @@
}
return name;
}
+ /**
+ * @return ejb-name + "/" + iface
+ */
+ public String getJndiName(EjbDeploymentSummary summary, String iface)
+ {
+ 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-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -38,6 +38,13 @@
* @return
*/
String getJndiName(EjbDeploymentSummary summary);
+ /**
+ *
+ * @param summary
+ * @param iface
+ * @return
+ */
+ String getJndiName(EjbDeploymentSummary summary, String iface);
String getDefaultRemoteJndiName(EjbDeploymentSummary summary);
@@ -46,4 +53,5 @@
String getDefaultLocalHomeJndiName(EjbDeploymentSummary summary);
String getDefaultLocalJndiName(EjbDeploymentSummary summary);
+
}
Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DeploymentSummary.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DeploymentSummary.java (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DeploymentSummary.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.ejb.jboss.jndipolicy.spi;
+
+/**
+ * A base class for deployment scope information.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
+ */
+public class DeploymentSummary
+{
+ private String deploymentName;
+
+ private String deploymentScopeBaseName;
+
+ private ClassLoader loader;
+
+ public DeploymentSummary()
+ {
+ }
+ public DeploymentSummary(DeploymentSummary summary)
+ {
+ setDeploymentName(summary.getDeploymentName());
+ setDeploymentScopeBaseName(summary.getDeploymentScopeBaseName());
+ setLoader(summary.getLoader());
+ }
+
+ public String getDeploymentName()
+ {
+ return deploymentName;
+ }
+ public void setDeploymentName(String deploymentName)
+ {
+ this.deploymentName = deploymentName;
+ }
+
+ public String getDeploymentScopeBaseName()
+ {
+ return deploymentScopeBaseName;
+ }
+ public void setDeploymentScopeBaseName(String deploymentScopeBaseName)
+ {
+ this.deploymentScopeBaseName = deploymentScopeBaseName;
+ }
+
+ public ClassLoader getLoader()
+ {
+ return loader;
+ }
+ public void setLoader(ClassLoader loader)
+ {
+ this.loader = loader;
+ }
+}
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-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/EjbDeploymentSummary.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -22,6 +22,7 @@
package org.jboss.metadata.ejb.jboss.jndipolicy.spi;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
/**
* Summary of an EJB deployment in flat properties; used in
@@ -31,14 +32,10 @@
* @author Scott.Stark at Jboss.org
* @version $Revision: $
*/
-public class EjbDeploymentSummary
+public class EjbDeploymentSummary extends DeploymentSummary
{
// Instance Members
- private String deploymentName;
-
- private String deploymentScopeBaseName;
-
private String ejbName;
private String beanClassName;
@@ -52,20 +49,32 @@
private boolean isService;
private JBossEnterpriseBeanMetaData beanMD;
- private ClassLoader loader;
-
- // Accessors / Mutators
-
- public String getDeploymentName()
+ public EjbDeploymentSummary()
{
- return deploymentName;
+
}
-
- public void setDeploymentName(String deploymentName)
+ public EjbDeploymentSummary(JBossEnterpriseBeanMetaData beanMD, DeploymentSummary dsummary)
{
- this.deploymentName = deploymentName;
+ super(dsummary);
+ //
+ this.setBeanClassName(beanMD.getEjbClass());
+ this.setEjbName(beanMD.getEjbName());
+ this.setService(beanMD.isService());
+
+ if(beanMD instanceof JBossSessionBeanMetaData)
+ {
+ JBossSessionBeanMetaData sbeanMD = (JBossSessionBeanMetaData) beanMD;
+ this.setStateful(sbeanMD.isStateful());
+ if(sbeanMD.getHome() != null && sbeanMD.getHome().length() > 0)
+ this.setHome(true);
+ if(sbeanMD.getLocal() != null && sbeanMD.getLocal().length() > 0)
+ this.setLocal(true);
+ // Is a local-home also a home?
+ }
}
+ // Accessors / Mutators
+
public String getEjbName()
{
return ejbName;
@@ -116,16 +125,7 @@
this.isService = isService;
}
- public String getDeploymentScopeBaseName()
- {
- return deploymentScopeBaseName;
- }
- public void setDeploymentScopeBaseName(String deploymentScopeBaseName)
- {
- this.deploymentScopeBaseName = deploymentScopeBaseName;
- }
-
public String getBeanClassName()
{
return beanClassName;
@@ -146,14 +146,4 @@
this.beanMD = beanMD;
}
- public ClassLoader getLoader()
- {
- return loader;
- }
-
- public void setLoader(ClassLoader loader)
- {
- this.loader = loader;
- }
-
}
Added: 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 (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/KnownInterfaces.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.ejb.jboss.jndipolicy.spi;
+
+/**
+ * Constants for known interfaces that may be passed to
+ * {@link DefaultJndiBindingPolicy#getJndiName(EjbDeploymentSummary, String)}
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
+ */
+public final class KnownInterfaces
+{
+ public static final String LOCAL = "local";
+ public static final String LOCAL_HOME = "local-home";
+ public static final String REMOTE = "remote";
+ public static final String HOME = "home";
+
+ /**
+ * Is iface one of the KnownInterfaces
+ * @param iface - the interface name to compare in a case insensitive manner.
+ * @return true if iface is one of the KnownInterfaces constants, false otherwise.
+ */
+ public static boolean isKnownInterface(String iface)
+ {
+ boolean isKnownInterface = KnownInterfaces.HOME.equalsIgnoreCase(iface)
+ || KnownInterfaces.LOCAL.equalsIgnoreCase(iface)
+ || KnownInterfaces.LOCAL_HOME.equalsIgnoreCase(iface)
+ || KnownInterfaces.REMOTE.equalsIgnoreCase(iface)
+ ;
+ return isKnownInterface;
+ }
+}
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EJBMetaDataTestSuite.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EJBMetaDataTestSuite.java 2008-05-07 21:59:24 UTC (rev 73125)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EJBMetaDataTestSuite.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -52,7 +52,8 @@
suite.addTest(EjbJarJBossMergeEverythingUnitTestCase.suite());
suite.addTest(JBoss42UnitTestCase.suite());
suite.addTest(EjbJarJBossMergeActivationConfigUnitTestCase.suite());
-
+ suite.addTestSuite(ResolvedJndiNameUnitTestCase.class);
+
//suite.addTest(JBossCMPUnitTestCase.suite());
//suite.addTest(JBossCMPMergeUnitTestCase.suite());
Added: 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 (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java 2008-05-07 23:55:52 UTC (rev 73126)
@@ -0,0 +1,142 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.metadata.ejb;
+
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
+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 junit.framework.TestCase;
+
+/**
+ * Tests of the JBossEnterpriseBeanMetaData.determineResolvedJndiName behavior
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
+ */
+public class ResolvedJndiNameUnitTestCase
+ extends TestCase
+{
+
+ public void testResolvedJndiName()
+ {
+ JBossEnterpriseBeanMetaData beanMD = getEjbMetaData();
+ String resolvedJndiName = beanMD.determineResolvedJndiName(null, null);
+ assertEquals("testResolvedJndiName-jndi-name", resolvedJndiName);
+ }
+ public void testResolvedJndiNameWithMappedName()
+ {
+ JBossEnterpriseBeanMetaData beanMD = getEjbMetaData();
+ beanMD.setMappedName("testResolvedJndiName-mapped-name");
+ String resolvedJndiName = beanMD.determineResolvedJndiName(null, null);
+ assertEquals("testResolvedJndiName-mapped-name", resolvedJndiName);
+ }
+ public void testResolvedJndiNames()
+ {
+ JBossEnterpriseBeanMetaData beanMD = getEjbMetaData();
+ String resolvedJndiName = beanMD.determineResolvedJndiName(null, null);
+ assertEquals("testResolvedJndiNames-jndi-name", resolvedJndiName);
+ String resolvedJndiNameRemote = beanMD.determineResolvedJndiName("remote", null);
+ assertEquals("testResolvedJndiNames-jndi-name/remote", resolvedJndiNameRemote);
+ String resolvedJndiNameHome = beanMD.determineResolvedJndiName("Home", null);
+ assertEquals("testResolvedJndiNames-jndi-name/home", resolvedJndiNameHome);
+ String resolvedJndiNameLocal = beanMD.determineResolvedJndiName("local", null);
+ assertEquals("testResolvedJndiNames-jndi-name/local", resolvedJndiNameLocal);
+ String resolvedJndiNameLocalHome = beanMD.determineResolvedJndiName("local-home", null);
+ assertEquals("testResolvedJndiNames-jndi-name/local-home", resolvedJndiNameLocalHome);
+ String resolvedJndiNameIface = beanMD.determineResolvedJndiName("org.jboss.test.some.IFace", null);
+ assertEquals("testResolvedJndiNames-jndi-name/org.jboss.test.some.IFace", resolvedJndiNameIface);
+ }
+ /**
+ * Test the determineResolvedJndiName with a jndiBindingPolicy on the
+ * JBossEnterpriseBeanMetaData
+ *
+ */
+ public void testResolvedJndiNamesWithMDPolicy()
+ {
+ JBossEnterpriseBeanMetaData beanMD = getEjbMetaData();
+ beanMD.setJndiBindingPolicy(EjbNameJndiBindingPolicy.class.getName());
+ String resolvedJndiName = beanMD.determineResolvedJndiName(null, null);
+ assertEquals("testResolvedJndiNamesWithMDPolicy-ejb", resolvedJndiName);
+ String resolvedJndiNameRemote = beanMD.determineResolvedJndiName("remote", null);
+ assertEquals("testResolvedJndiNamesWithMDPolicy-ejbRemote", resolvedJndiNameRemote);
+ String resolvedJndiNameHome = beanMD.determineResolvedJndiName("Home", null);
+ assertEquals("testResolvedJndiNamesWithMDPolicy-ejbHome", resolvedJndiNameHome);
+ String resolvedJndiNameLocal = beanMD.determineResolvedJndiName("local", null);
+ assertEquals("testResolvedJndiNamesWithMDPolicy-ejbLocal", resolvedJndiNameLocal);
+ String resolvedJndiNameLocalHome = beanMD.determineResolvedJndiName("local-home", null);
+ assertEquals("testResolvedJndiNamesWithMDPolicy-ejbLocalHome", resolvedJndiNameLocalHome);
+ String resolvedJndiNameIface = beanMD.determineResolvedJndiName("org.jboss.test.some.IFace", null);
+ assertEquals("testResolvedJndiNamesWithMDPolicy-ejb/org.jboss.test.some.IFace", resolvedJndiNameIface);
+ }
+ /**
+ * Test the determineResolvedJndiName with a jndiBindingPolicy passed into
+ * determineResolvedJndiName
+ *
+ */
+ public void testResolvedJndiNamesWithExternalPolicy()
+ {
+ JBossEnterpriseBeanMetaData beanMD = getEjbMetaData();
+ EjbNameJndiBindingPolicy policy = new EjbNameJndiBindingPolicy();
+ String resolvedJndiName = beanMD.determineResolvedJndiName(null, policy);
+ assertEquals("testResolvedJndiNamesWithExternalPolicy-ejb", resolvedJndiName);
+ String resolvedJndiNameRemote = beanMD.determineResolvedJndiName("remote", policy);
+ assertEquals("testResolvedJndiNamesWithExternalPolicy-ejbRemote", resolvedJndiNameRemote);
+ String resolvedJndiNameHome = beanMD.determineResolvedJndiName("Home", policy);
+ assertEquals("testResolvedJndiNamesWithExternalPolicy-ejbHome", resolvedJndiNameHome);
+ String resolvedJndiNameLocal = beanMD.determineResolvedJndiName("local", policy);
+ assertEquals("testResolvedJndiNamesWithExternalPolicy-ejbLocal", resolvedJndiNameLocal);
+ String resolvedJndiNameLocalHome = beanMD.determineResolvedJndiName("local-home", policy);
+ assertEquals("testResolvedJndiNamesWithExternalPolicy-ejbLocalHome", resolvedJndiNameLocalHome);
+ String resolvedJndiNameIface = beanMD.determineResolvedJndiName("org.jboss.test.some.IFace", policy);
+ assertEquals("testResolvedJndiNamesWithExternalPolicy-ejb/org.jboss.test.some.IFace", resolvedJndiNameIface);
+ }
+
+ /**
+ * Creates a JBossSessionBeanMetaData with associated JBossMetaData with:
+ * ejbName = getName() + "-ejb"
+ * ejbClass = "org.jboss.ejb."+ getName()
+ * jndiName = getName() + "-jndi-name"
+ * @return JBossSessionBeanMetaData
+ */
+ protected JBossEnterpriseBeanMetaData getEjbMetaData()
+ {
+ 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);
+ JBossSessionBeanMetaData sbeanMD = new JBossSessionBeanMetaData();
+ sbeanMD.setEjbName(name+"-ejb");
+ sbeanMD.setEjbClass("org.jboss.ejb."+name);
+ sbeanMD.setJndiName(name+"-jndi-name");
+ JBossEnterpriseBeansMetaData beans = new JBossEnterpriseBeansMetaData();
+ beans.add(sbeanMD);
+ jbossMetaData.setEnterpriseBeans(beans);
+ return sbeanMD;
+ }
+}
More information about the jboss-cvs-commits
mailing list