[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