[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