[jboss-cvs] JBossAS SVN: r66847 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/ejb/jboss and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Nov 7 22:30:17 EST 2007


Author: bstansberry at jboss.com
Date: 2007-11-07 22:30:16 -0500 (Wed, 07 Nov 2007)
New Revision: 66847

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ClusterConfigMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ClusterConfigMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ContainerConfigurationMetaDataWrapper.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/JBossSessionBeanMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss5xEverythingUnitTestCase.java
Log:
[JBAS-4947] Externalize ClusterConfigMetaData defaults

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ClusterConfigMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ClusterConfigMetaData.java	2007-11-08 02:25:27 UTC (rev 66846)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ClusterConfigMetaData.java	2007-11-08 03:30:16 UTC (rev 66847)
@@ -68,7 +68,7 @@
     */
    public String getPartitionName()
    {
-      return getDelegate().determinePartitionName();
+      return getDelegate().getPartitionName();
    }
 
    /**
@@ -78,7 +78,7 @@
     */
    public String getHomeLoadBalancePolicy()
    {
-      return getDelegate().determineHomeLoadBalancingPolicy();
+      return getDelegate().getHomeLoadBalancePolicy();
    }
 
    /**
@@ -88,7 +88,7 @@
     */
    public String getBeanLoadBalancePolicy()
    {
-      return getDelegate().determineBeanLoadBalancingPolicy();
+      return getDelegate().getBeanLoadBalancePolicy();
    }
 
    /**
@@ -98,6 +98,6 @@
     */
    public String getHaSessionStateName()
    {
-      return getDelegate().determineSessionStateManagerJndiName();
+      return getDelegate().getSessionStateManagerJndiName();
    }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ClusterConfigMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ClusterConfigMetaData.java	2007-11-08 02:25:27 UTC (rev 66846)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ClusterConfigMetaData.java	2007-11-08 03:30:16 UTC (rev 66847)
@@ -37,18 +37,6 @@
    /** The serialVersionUID */
    private static final long serialVersionUID = -614188513386783204L;
 
-   /** The jndi prefix for the sesssion state */
-   public final static String JNDI_PREFIX_FOR_SESSION_STATE = "/HASessionState/";
-   
-   /** The default session state  name */
-   public final static String DEFAULT_SESSION_STATE_NAME = JNDI_PREFIX_FOR_SESSION_STATE + "Default";
-
-   /** The first available load balancing policy */
-   public static final String FIRST_AVAILABLE = "org.jboss.ha.framework.interfaces.FirstAvailable";
-
-   /** The round robin load balancing policy */
-   public static final String ROUND_ROBIN = "org.jboss.ha.framework.interfaces.RoundRobin";
-   
    /** The partition name */
    private String partitionName;
    
@@ -61,23 +49,7 @@
    /** The state manager jndi */
    private String sessionStateManagerJndiName;
 
-   /** The enterprise bean */
-   private JBossEnterpriseBeanMetaData enterpriseBeanMetaData;
-   
    /**
-    * Set the enterpriseBeanMetaData.
-    * 
-    * @param enterpriseBeanMetaData the enterpriseBeanMetaData.
-    * @throws IllegalArgumentException for a null enterpriseBeanMetaData
-    */
-   void setEnterpriseBeanMetaData(JBossEnterpriseBeanMetaData enterpriseBeanMetaData)
-   {
-      if (enterpriseBeanMetaData == null)
-         throw new IllegalArgumentException("Null enterpriseBeanMetaData");
-      this.enterpriseBeanMetaData = enterpriseBeanMetaData;
-   }
-
-   /**
     * Get the beanLoadBalancingPolicy.
     * 
     * @return the beanLoadBalancingPolicy.
@@ -88,26 +60,6 @@
    }
 
    /**
-    * Determine the beanLoadBalancingPolicy.
-    * 
-    * @return the beanLoadBalancingPolicy.
-    */
-   public String determineBeanLoadBalancingPolicy()
-   {
-      if (beanLoadBalancePolicy == null && enterpriseBeanMetaData != null)
-      {
-         if (enterpriseBeanMetaData.isSession())
-         {
-            JBossSessionBeanMetaData session = (JBossSessionBeanMetaData) enterpriseBeanMetaData;
-            if (session.isStateless())
-               return ROUND_ROBIN;
-         }
-         return FIRST_AVAILABLE;
-      }
-      return beanLoadBalancePolicy;
-   }
-
-   /**
     * Set the beanLoadBalancingPolicy.
     * 
     * @param beanLoadBalancePolicy the beanLoadBalancingPolicy.
@@ -131,20 +83,6 @@
    }
 
    /**
-    * Determine the homeLoadBalancingPolicy.
-    * 
-    * @return the homeLoadBalancingPolicy.
-    */
-   public String determineHomeLoadBalancingPolicy()
-   {
-      if (homeLoadBalancePolicy == null && enterpriseBeanMetaData != null)
-      {
-         return ROUND_ROBIN;
-      }
-      return homeLoadBalancePolicy;
-   }
-
-   /**
     * Set the homeLoadBalancingPolicy.
     * 
     * @param homeLoadBalancePolicy the homeLoadBalancingPolicy.
@@ -168,16 +106,6 @@
    }
 
    /**
-    * Determine the partitionName.
-    * 
-    * @return the partitionName.
-    */
-   public String determinePartitionName()
-   {
-      return partitionName;
-   }
-
-   /**
     * Set the partitionName.
     * 
     * @param partitionName the partitionName.
@@ -201,18 +129,6 @@
    }
 
    /**
-    * Determine the sessionStateManagerJndiName.
-    * 
-    * @return the sessionStateManagerJndiName.
-    */
-   public String determineSessionStateManagerJndiName()
-   {
-      if (sessionStateManagerJndiName == null)
-         return DEFAULT_SESSION_STATE_NAME;
-      return sessionStateManagerJndiName;
-   }
-
-   /**
     * Set the sessionStateManagerJndiName.
     * 
     * @param sessionStateManagerJndiName the sessionStateManagerJndiName.
@@ -224,4 +140,29 @@
          throw new IllegalArgumentException("Null sessionStateManagerJndiName");
       this.sessionStateManagerJndiName = sessionStateManagerJndiName;
    }
+   
+   public void merge(ClusterConfigMetaData override, ClusterConfigMetaData original)
+   {
+      super.merge(override, original);
+      
+      if (override != null)
+      {
+         partitionName = override.getPartitionName();
+         beanLoadBalancePolicy = override.getBeanLoadBalancePolicy();
+         homeLoadBalancePolicy = override.getHomeLoadBalancePolicy();
+         sessionStateManagerJndiName = override.getSessionStateManagerJndiName();
+      }
+      
+      if (original != null)
+      {
+         if (partitionName == null)
+            partitionName = original.getPartitionName();
+         if (beanLoadBalancePolicy == null)
+            beanLoadBalancePolicy = original.getBeanLoadBalancePolicy();
+         if (homeLoadBalancePolicy == null)
+            homeLoadBalancePolicy = original.getHomeLoadBalancePolicy();
+         if (sessionStateManagerJndiName == null)
+            sessionStateManagerJndiName = original.getSessionStateManagerJndiName();
+      }
+   }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ContainerConfigurationMetaDataWrapper.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ContainerConfigurationMetaDataWrapper.java	2007-11-08 02:25:27 UTC (rev 66846)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ContainerConfigurationMetaDataWrapper.java	2007-11-08 03:30:16 UTC (rev 66847)
@@ -73,7 +73,14 @@
    {
       ClusterConfigMetaData md = primary.getClusterConfig();
       if (md == null && defaults != null)
+      {
          md = defaults.getClusterConfig();
+      }
+      else if (defaults != null)
+      {
+         md = new ClusterConfigMetaData();
+         md.merge(primary.getClusterConfig(), defaults.getClusterConfig());
+      }
       return md;
    }
 

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	2007-11-08 02:25:27 UTC (rev 66846)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java	2007-11-08 03:30:16 UTC (rev 66847)
@@ -656,17 +656,15 @@
     */
    public ClusterConfigMetaData determineClusterConfig()
    {
-      if (determinedClusterConfig != null)
-         return determinedClusterConfig;
-      determinedClusterConfig = clusterConfig;
       if (determinedClusterConfig == null)
-      {
+      {      
+         ClusterConfigMetaData containerDefaults = null;
          ContainerConfigurationMetaData container = determineContainerConfiguration();
          if (container != null)
-            determinedClusterConfig = container.getClusterConfig();
-      }
-      if (determinedClusterConfig == null)
+            containerDefaults = container.getClusterConfig();
          determinedClusterConfig = new ClusterConfigMetaData();
+         determinedClusterConfig.merge(clusterConfig, containerDefaults);
+      }
       return determinedClusterConfig;
    }
 
@@ -680,7 +678,6 @@
    {
       if (clusterConfig == null)
          throw new IllegalArgumentException("Null clusterConfig");
-      clusterConfig.setEnterpriseBeanMetaData(this);
       this.clusterConfig = clusterConfig;
    }
 

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	2007-11-08 02:25:27 UTC (rev 66846)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java	2007-11-08 03:30:16 UTC (rev 66847)
@@ -21,7 +21,6 @@
 */
 package org.jboss.metadata.ejb.jboss;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.jboss.metadata.ejb.spec.AroundInvokesMetaData;
@@ -753,24 +752,14 @@
     */
    public ClusterConfigMetaData determineClusterConfig()
    {
-      if (determinedClusterConfig != null)
-         return determinedClusterConfig;
-      determinedClusterConfig = clusterConfig;
       if (determinedClusterConfig == null)
-      {
+      {      
+         ClusterConfigMetaData containerDefaults = null;
          ContainerConfigurationMetaData container = determineContainerConfiguration();
          if (container != null)
-         {
-            determinedClusterConfig = container.getClusterConfig();
-            // Here we don't assign ourself as the EnterpriseBeanMetaData,
-            // as the ContainerConfigurationMetaData.clusterConfig is 
-            // a shared object across containers.
-         }
-      }
-      if (determinedClusterConfig == null)
-      {
+            containerDefaults = container.getClusterConfig();
          determinedClusterConfig = new ClusterConfigMetaData();
-         determinedClusterConfig.setEnterpriseBeanMetaData(this);
+         determinedClusterConfig.merge(clusterConfig, containerDefaults);
       }
       return determinedClusterConfig;
    }
@@ -785,7 +774,6 @@
    {
       if (clusterConfig == null)
          throw new IllegalArgumentException("Null clusterConfig");
-      clusterConfig.setEnterpriseBeanMetaData(this);
       this.clusterConfig = clusterConfig;
    }
 

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss5xEverythingUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss5xEverythingUnitTestCase.java	2007-11-08 02:25:27 UTC (rev 66846)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss5xEverythingUnitTestCase.java	2007-11-08 03:30:16 UTC (rev 66847)
@@ -227,6 +227,51 @@
       expectedInvokerNames.add("containerConfiguration1InvokerProxyBindingName2-override");
       assertEquals(expectedInvokerNames, invokerNames);
    }
+   
+   public void testClusterConfigOverride() throws Exception
+   {
+      JBoss50MetaData overrideData = unmarshal();
+      JBoss50MetaData baseData = unmarshal("JBoss5xEverything_testClusterConfigBase.xml", JBoss50MetaData.class, null);
+      // Override JBoss5xEverything_testBaseData.xml with JBoss5xEverything_testOverride.xml
+      JBossMetaDataWrapper jbossMetaData = new JBossMetaDataWrapper(overrideData, baseData);
+      
+      JBossEnterpriseBeansMetaData enterpriseBeansMetaData = jbossMetaData.getEnterpriseBeans();
+      assertNotNull(enterpriseBeansMetaData);
+      assertEquals(4, enterpriseBeansMetaData.size());
+      
+      String beanId = "bean1";
+      JBossSessionBeanMetaData session = assertJBossSessionBean(beanId, jbossMetaData);
+      ClusterConfigMetaData config = session.determineClusterConfig();
+      
+      assertPartitionName(config, "bean");
+      assertHomeLoadBalancePolicy(config, "container");
+      assertBeanLoadBalancePolicy(config, "standard");
+      assertSessionStateManagerJndiName(config, null);
+      
+      beanId = "bean2";
+      session = assertJBossSessionBean(beanId, jbossMetaData);
+      config = session.determineClusterConfig();
+      assertPartitionName(config, "container");
+      assertHomeLoadBalancePolicy(config, "standard");
+      assertBeanLoadBalancePolicy(config, null);
+      assertSessionStateManagerJndiName(config, "bean");
+      
+      beanId = "bean3";
+      session = assertJBossSessionBean(beanId, jbossMetaData);
+      config = session.determineClusterConfig();
+      assertPartitionName(config, "standard");
+      assertHomeLoadBalancePolicy(config, null);
+      assertBeanLoadBalancePolicy(config, "bean");
+      assertSessionStateManagerJndiName(config, "container");
+      
+      beanId = "bean4";
+      session = assertJBossSessionBean(beanId, jbossMetaData);
+      config = session.determineClusterConfig();
+      assertPartitionName(config, null);
+      assertHomeLoadBalancePolicy(config, "bean");
+      assertBeanLoadBalancePolicy(config, "container");
+      assertSessionStateManagerJndiName(config, "standard");
+   }
 
    public void assertCacheConfig(String prefix, int num, CacheConfigMetaData cacheConfig)
    {
@@ -1174,6 +1219,38 @@
       assertEquals(11, (int) poolConfig.getTimeout());
    }
    
+   private void assertPartitionName(ClusterConfigMetaData config, String expectedSource)
+   {
+      String value= config.getPartitionName();      
+      assertExpectedSource(value, expectedSource, "PartitionName");
+   }
+   
+   private void assertHomeLoadBalancePolicy(ClusterConfigMetaData config, String expectedSource)
+   {
+      String value = config.getHomeLoadBalancePolicy();      
+      assertExpectedSource(value, expectedSource, "HomeLoadBalancePolicy");
+   }
+   
+   private void assertBeanLoadBalancePolicy(ClusterConfigMetaData config, String expectedSource)
+   {
+      String value = config.getBeanLoadBalancePolicy();      
+      assertExpectedSource(value, expectedSource, "BeanLoadBalancePolicy");
+   }
+   
+   private void assertSessionStateManagerJndiName(ClusterConfigMetaData config, String expectedSource)
+   {
+      String value = config.getSessionStateManagerJndiName();     
+      assertExpectedSource(value, expectedSource, "SessionStateManagerJndiName");
+   }
+   
+   private void assertExpectedSource(String value, String expectedPrefix, String suffix)
+   {
+      if (expectedPrefix == null)
+         assertNull(value);
+      else
+         assertEquals(expectedPrefix + "Configuration" + suffix, value);
+   }
+   
    @Override
    protected void assertResourceGroup(String prefix, ResourceInjectionMetaData resourceInjectionMetaData, boolean full, boolean first, Mode mode)
    {




More information about the jboss-cvs-commits mailing list