[jboss-cvs] JBossAS SVN: r73241 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri May 9 17:55:09 EDT 2008


Author: scott.stark at jboss.org
Date: 2008-05-09 17:55:09 -0400 (Fri, 09 May 2008)
New Revision: 73241

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/EjbNameJndiBindingPolicy.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/SessionJndiBindingPolicy.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/KnownInterfaces.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java
Log:
JBMETA-38, Expand determineResolvedJndiName behavior to accept iface + ifaceType

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java	2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java	2008-05-09 21:55:09 UTC (rev 73241)
@@ -39,6 +39,7 @@
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DeploymentSummary;
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
 import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
 import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
 import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
@@ -92,7 +93,7 @@
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author Scott.Stark at jboss.org
- * @version $Revision: 1.1 $
+ * @version $Revision$
  */
 @JBossXmlModelGroup(
       kind=JBossXmlConstants.MODEL_GROUP_CHOICE,
@@ -631,17 +632,16 @@
 
          // Derive the summary info from this metadata and deployment summary
          EjbDeploymentSummary ejbSummary = new EjbDeploymentSummary(this, dsummary);
-         // The targeted business interface to append to the jndi name
-         String ifaceToAppend = null;
+         KnownInterfaceType ifaceType = KnownInterfaces.classifyInterface(iface);
          // Need to compare iface against the metadata local-home/home & business locals/remotes
-         if(this.isSession())
+         if(this.isSession() && ifaceType == KnownInterfaceType.UNKNOWN)
          {
             JBossSessionBeanMetaData sbeanMD = (JBossSessionBeanMetaData) this;
-            // Map local/remote home
+            // Figure out the interface type from the metadata
             if(sbeanMD.getLocalHome() != null && sbeanMD.getLocalHome().equals(iface))
-               iface = KnownInterfaces.LOCAL_HOME;
+               ifaceType = KnownInterfaceType.LOCAL_HOME;
             else if(sbeanMD.getHome() != null && sbeanMD.getHome().equals(iface))
-               iface = KnownInterfaces.HOME;
+               ifaceType = KnownInterfaceType.REMOTE_HOME;
             else
             {
                // Check business locals
@@ -652,13 +652,12 @@
                   {
                      if(local.equals(iface))
                      {
-                        ifaceToAppend = iface;
-                        iface = KnownInterfaces.LOCAL;
+                        ifaceType = KnownInterfaceType.BUSINESS_LOCAL;
                         break;
                      }
                   }
                }
-               if(ifaceToAppend == null)
+               if(ifaceType == KnownInterfaceType.UNKNOWN)
                {
                   // Check business remotes
                   BusinessRemotesMetaData remotes = sbeanMD.getBusinessRemotes();
@@ -668,8 +667,7 @@
                      {
                         if(remote.equals(iface))
                         {
-                           ifaceToAppend = iface;
-                           iface = KnownInterfaces.REMOTE;
+                           ifaceType = KnownInterfaceType.BUSINESS_REMOTE;
                            break;
                         }
                      }
@@ -677,21 +675,18 @@
                }
             }
          }
-         else if(this.isEntity())
+         else if(this.isEntity() && ifaceType == KnownInterfaceType.UNKNOWN)
          {
             JBossEntityBeanMetaData ebeanMD = (JBossEntityBeanMetaData) this;
+            // Figure out the interface type from the metadata
             if(ebeanMD.getLocalHome() != null && ebeanMD.getLocalHome().equals(iface))
-               iface = KnownInterfaces.LOCAL_HOME;
+               ifaceType = KnownInterfaceType.LOCAL_HOME;
             else if(ebeanMD.getHome() != null && ebeanMD.getHome().equals(iface))
-               iface = KnownInterfaces.HOME;
+               ifaceType = KnownInterfaceType.REMOTE_HOME;
          }
 
-         // Have the policy 
-         resolvedJndiName = policy.getJndiName(ejbSummary, iface);
-         if(ifaceToAppend != null)
-         {
-            resolvedJndiName += "-" + ifaceToAppend;
-         }
+         // Have the policy generate the actual name
+         resolvedJndiName = policy.getJndiName(ejbSummary, iface, ifaceType);
       }
       return resolvedJndiName;
    }


Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java	2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java	2008-05-09 21:55:09 UTC (rev 73241)
@@ -218,6 +218,20 @@
       this.ejbClientJar = ejbClientJar;
    }
 
+   /**
+    * The spec metadata version information
+    * @return
+    */
+   @XmlTransient
+   public String getEjbVersion()
+   {
+      return ejbVersion;
+   }
+   public void setEjbVersion(String ejbVersion)
+   {
+      this.ejbVersion = ejbVersion;
+   }
+
    public RelationsMetaData getRelationships()
    {
       return this.relationships;

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java	2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/BasicJndiBindingPolicy.java	2008-05-09 21:55:09 UTC (rev 73241)
@@ -24,6 +24,7 @@
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy;
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
 
 /**
  * A basic implementation of DefaultJndiBindingPolicy that uses a base jndi
@@ -86,25 +87,59 @@
       return baseJndiName;
    }
 
-   public String getJndiName(EjbDeploymentSummary summary, String iface)
+   public String getJndiName(EjbDeploymentSummary summary, String iface,
+         KnownInterfaceType ifaceType)
    {
       String jndiName = null;
-      if(iface == null)
-         jndiName = getJndiName(summary);
-      else if(KnownInterfaces.isKnownInterface(iface))
+      if(KnownInterfaces.isKnownInterface(iface))
+         iface = null;
+
+      if(ifaceType == KnownInterfaceType.UNKNOWN)
       {
-         // Don't append the iface for ejb2.x homes
-         boolean is3x = summary.getBeanMD().getJBossMetaData().isEJB3x();
-         if(is3x)
+         if(iface == null)
+            jndiName = baseJndiName;
+         else
             jndiName = baseJndiName + "/" + iface;
-         else if(KnownInterfaces.LOCAL_HOME.equalsIgnoreCase(iface))
-            jndiName = summary.getBeanMD().determineLocalJndiName();
-         else
-            jndiName = baseJndiName;
       }
       else
       {
-         jndiName = baseJndiName + "/" + iface;
+         boolean is3x = summary.getBeanMD().getJBossMetaData().isEJB3x();
+         switch(ifaceType)
+         {
+            // base-name / (local|remote) - iface
+            case BUSINESS_LOCAL:
+            case BUSINESS_REMOTE:
+            case UNKNOWN:
+               if(iface == null)
+                  jndiName = baseJndiName + "/" + ifaceType.toSuffix();
+               else
+                  jndiName = baseJndiName + "/" + ifaceType.toSuffix() + "-" + iface;
+            break;
+            case LOCAL_HOME:
+               if(is3x)
+               {
+                  // base-name / (local|remote)Home
+                  jndiName = baseJndiName + "/" + ifaceType.toSuffix();
+               }
+               else
+               {
+                  // Use the bean local jndi name or generated name for ejb2.x local homes
+                  jndiName = summary.getBeanMD().determineLocalJndiName();
+               }
+               break;
+            case REMOTE_HOME:
+               if(is3x)
+               {
+                  // base-name / (local|remote)Home
+                  jndiName = baseJndiName + "/" + ifaceType.toSuffix();
+               }
+               else
+               {
+                  // Don't append the iface suffix for ejb2.x homes
+                  jndiName = baseJndiName;
+               }
+               break;
+         }
       }
       return jndiName;
    }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/EjbNameJndiBindingPolicy.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/EjbNameJndiBindingPolicy.java	2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/EjbNameJndiBindingPolicy.java	2008-05-09 21:55:09 UTC (rev 73241)
@@ -24,6 +24,7 @@
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy;
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
 
 /**
  * A default jndi policy based on the ejb name.
@@ -73,7 +74,8 @@
    /**
     * @return ejb-name + "/" + iface
     */
-   public String getJndiName(EjbDeploymentSummary summary, String iface)
+   public String getJndiName(EjbDeploymentSummary summary, String iface,
+         KnownInterfaceType ifaceType)
    {
       String jndiName = null;
       if(iface == null)

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/SessionJndiBindingPolicy.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/SessionJndiBindingPolicy.java	2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/plugins/SessionJndiBindingPolicy.java	2008-05-09 21:55:09 UTC (rev 73241)
@@ -25,6 +25,7 @@
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy;
 import org.jboss.metadata.ejb.jboss.jndipolicy.spi.EjbDeploymentSummary;
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
 
 /**
  * Default session bean jndi naming policy
@@ -134,7 +135,8 @@
    /**
     * @return ejb-name + "/" + iface
     */
-   public String getJndiName(EjbDeploymentSummary summary, String iface)
+   public String getJndiName(EjbDeploymentSummary summary, String iface,
+         KnownInterfaceType ifaceType)
    {
       return summary.getEjbName() + "/" + iface;
    }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java	2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java	2008-05-09 21:55:09 UTC (rev 73241)
@@ -21,12 +21,14 @@
  */
 package org.jboss.metadata.ejb.jboss.jndipolicy.spi;
 
+import org.jboss.metadata.ejb.jboss.jndipolicy.spi.KnownInterfaces.KnownInterfaceType;
+
 /**
  * A jndi name policy spi for obtaining jndi names not specified in metadata.
  * 
  * @author <a href="mailto:andrew.rubinger at redhat.com">ALR</a>
  * @author Scott.Stark at jboss.org
- * @version $Revision:$
+ * @version $Revision$
  */
 public interface DefaultJndiBindingPolicy
 {
@@ -39,12 +41,16 @@
     */
    String getJndiName(EjbDeploymentSummary summary);
    /**
+    * Get the jndi name to use as the reference link target and proxy binding
+    * location for a given ejb interface.
     * 
-    * @param summary
-    * @param iface
+    * @param summary - the deployment summary information for the ejb in question.
+    * @param iface - the fully qualified name of the interface, may be null.
+    * @param ifaceType - the classification of iface to one of the known
+    *    ejb interface types
     * @return
     */
-   String getJndiName(EjbDeploymentSummary summary, String iface);
+   String getJndiName(EjbDeploymentSummary summary, String iface, KnownInterfaceType ifaceType);
 
    String getDefaultRemoteJndiName(EjbDeploymentSummary summary);
 


Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/DefaultJndiBindingPolicy.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/KnownInterfaces.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/KnownInterfaces.java	2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/jndipolicy/spi/KnownInterfaces.java	2008-05-09 21:55:09 UTC (rev 73241)
@@ -30,10 +30,36 @@
  */
 public final class KnownInterfaces
 {
+   /**
+    * Enums for the standard types of ejb interfaces
+    */
+   public enum KnownInterfaceType {
+      BUSINESS_LOCAL(KnownInterfaces.LOCAL),
+      BUSINESS_REMOTE(KnownInterfaces.REMOTE),
+      LOCAL_HOME(KnownInterfaces.LOCAL_HOME),
+      REMOTE_HOME(KnownInterfaces.HOME),
+      UNKNOWN(KnownInterfaces.UNKNOWN);
+
+      /**
+       * Get the preferred jndi binding suffix
+       * @return the preferred jndi binding suffix for the interface type 
+       */
+      public String toSuffix()
+      {
+         return suffix;
+      }
+
+      private final String suffix;
+      KnownInterfaceType(String suffix)
+      {
+         this.suffix = suffix;
+      }
+   }
    public static final String LOCAL = "local";
    public static final String LOCAL_HOME = "localHome";
    public static final String REMOTE = "remote";
    public static final String HOME = "remoteHome";
+   public static final String UNKNOWN = "unknown";
 
    /**
     * Is iface one of the KnownInterfaces
@@ -49,4 +75,23 @@
          ;
       return isKnownInterface;
    }
+   /**
+    * Utility method that compares iface to one of the KnownInterfaces constants
+    * and returns the corresponding enum.
+    * @param iface - a
+    * @return a KnownInterfaceType
+    */
+   public static KnownInterfaceType classifyInterface(String iface)
+   {
+      KnownInterfaceType ifaceType = KnownInterfaceType.UNKNOWN;
+      if(KnownInterfaces.HOME.equalsIgnoreCase(iface))
+         ifaceType = KnownInterfaceType.REMOTE_HOME;
+      else if(KnownInterfaces.LOCAL.equalsIgnoreCase(iface))
+         ifaceType = KnownInterfaceType.BUSINESS_LOCAL;
+      else if(KnownInterfaces.LOCAL_HOME.equalsIgnoreCase(iface))
+         ifaceType = KnownInterfaceType.LOCAL_HOME;
+      else if(KnownInterfaces.REMOTE.equalsIgnoreCase(iface))
+         ifaceType = KnownInterfaceType.BUSINESS_REMOTE;
+      return ifaceType;
+   }
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java	2008-05-09 21:06:45 UTC (rev 73240)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/ResolvedJndiNameUnitTestCase.java	2008-05-09 21:55:09 UTC (rev 73241)
@@ -113,7 +113,8 @@
    public void testResolvedJndiNamesWithKnownIfaces2x()
    {
       JBossEnterpriseBeanMetaData beanMD = getEjbMetaData();
-      beanMD.getJBossMetaData().setVersion("2.1");
+      beanMD.getJBossMetaData().setEjbVersion("2.1");
+
       JBossSessionBeanMetaData sbeanMD = (JBossSessionBeanMetaData) beanMD;
       sbeanMD.setLocal("org.jboss.ifaces.LocalIF");
       sbeanMD.setLocalHome("org.jboss.ifaces.LocalHomeIF");
@@ -204,6 +205,7 @@
    {
       String name = super.getName();
       JBossMetaData jbossMetaData = new JBossMetaData();
+      jbossMetaData.setEjbVersion("3.0");
       DeploymentSummary deploymentSummary = new DeploymentSummary();
       deploymentSummary.setDeploymentName(name);
       deploymentSummary.setDeploymentScopeBaseName("base");
@@ -230,6 +232,7 @@
    {
       String name = super.getName();
       JBossMetaData jbossMetaData = new JBossMetaData();
+      jbossMetaData.setEjbVersion("3.0");
       DeploymentSummary deploymentSummary = new DeploymentSummary();
       deploymentSummary.setDeploymentName(name);
       deploymentSummary.setDeploymentScopeBaseName("base");




More information about the jboss-cvs-commits mailing list