[jboss-cvs] JBossAS SVN: r69641 - 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
Tue Feb 5 17:44:00 EST 2008


Author: bstansberry at jboss.com
Date: 2008-02-05 17:44:00 -0500 (Tue, 05 Feb 2008)
New Revision: 69641

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/EntityMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java
Log:
[JBAS-5201] Avoid NPE when <cache-invalidation-config> is not set

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/EntityMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/EntityMetaData.java	2008-02-05 22:43:41 UTC (rev 69640)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/EntityMetaData.java	2008-02-05 22:44:00 UTC (rev 69641)
@@ -284,7 +284,7 @@
     */
    public CacheInvalidationConfigMetaData getDistributedCacheInvalidationConfig()
    {
-      org.jboss.metadata.ejb.jboss.CacheInvalidationConfigMetaData config = getDelegate().getCacheInvalidationConfig();
+      org.jboss.metadata.ejb.jboss.CacheInvalidationConfigMetaData config = getDelegate().determineCacheInvalidationConfig();
       if (config == null)
          return null;
       return new CacheInvalidationConfigMetaData(config);

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-02-05 22:43:41 UTC (rev 69640)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java	2008-02-05 22:44:00 UTC (rev 69641)
@@ -106,6 +106,9 @@
 
    /** The cache invalidation config */
    private CacheInvalidationConfigMetaData cacheInvalidationConfig;
+
+   /** The determined cache invalidation config */
+   private transient CacheInvalidationConfigMetaData determinedCacheInvalidationConfig;
    
    // TODO DOM cache-config
 
@@ -712,6 +715,27 @@
    }
 
    /**
+    * Get the cacheInvalidationConfig.
+    * 
+    * @return the cacheInvalidationConfig.
+    */
+   public CacheInvalidationConfigMetaData determineCacheInvalidationConfig()
+   {
+      // JBAS-5201 Don't return null
+      if (cacheInvalidationConfig == null)
+      {
+         if (determinedCacheInvalidationConfig == null)
+         {
+            CacheInvalidationConfigMetaData md = new CacheInvalidationConfigMetaData();
+            md.setEntityBean(this);
+            determinedCacheInvalidationConfig = md;
+         }
+         return determinedCacheInvalidationConfig;
+      }
+      return cacheInvalidationConfig;
+   }
+
+   /**
     * Set the cacheInvalidationConfig.
     * 
     * @param cacheInvalidationConfig the cacheInvalidationConfig.

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java	2008-02-05 22:43:41 UTC (rev 69640)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java	2008-02-05 22:44:00 UTC (rev 69641)
@@ -32,6 +32,7 @@
 import org.jboss.metadata.ApplicationMetaData;
 import org.jboss.metadata.BeanMetaData;
 import org.jboss.metadata.ConfigurationMetaData;
+import org.jboss.metadata.ejb.jboss.CacheInvalidationConfigMetaData;
 import org.jboss.metadata.ejb.jboss.ClusterConfigMetaData;
 import org.jboss.metadata.ejb.jboss.ContainerConfigurationMetaData;
 import org.jboss.metadata.ejb.jboss.InvokerBindingMetaData;
@@ -44,6 +45,7 @@
 import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
 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.JBossGenericBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
@@ -874,6 +876,44 @@
       assertEquals("port/component/uri", portComponent.getPortComponentURI());
    }
    
+   public void testEjbthreeCacheInvalidationConfig() throws Exception
+   {
+      JBossXBTestDelegate xbdelegate = (JBossXBTestDelegate) super.getDelegate();
+      xbdelegate.setValidateSchema(false);
+      JBossMetaData jbossXmlMetaData = unmarshal();
+      JBossEnterpriseBeansMetaData enterpriseBeans = jbossXmlMetaData.getEnterpriseBeans();
+      assertNotNull(enterpriseBeans);
+      assertEquals(2, enterpriseBeans.size());
+      
+      // Test that we get a proper default config when there is no
+      // <cache-invalidation-config> block in jboss.xml
+      JBossEntityBeanMetaData bean = (JBossEntityBeanMetaData) enterpriseBeans.get("TestEntity1");
+      assertNotNull(bean);
+      CacheInvalidationConfigMetaData cicmd = bean.getCacheInvalidationConfig();
+      assertNull(cicmd);
+      cicmd = bean.determineCacheInvalidationConfig();
+      assertNotNull(cicmd);
+      assertNull(cicmd.getInvalidationGroupName());
+      assertNull(cicmd.getInvalidationManagerName());
+      assertEquals("TestEntity1", cicmd.determineInvalidationGroupName());
+      assertEquals(CacheInvalidationConfigMetaData.DEFAULT_INVALIDATION_MANAGER_NAME, 
+                   cicmd.determineInvalidationManagerName());
+      
+      // Test that a <cache-invalidation-config> block in jboss.xml
+      // is respected
+      bean = (JBossEntityBeanMetaData) enterpriseBeans.get("TestEntity2");
+      assertNotNull(bean);
+      cicmd = bean.getCacheInvalidationConfig();
+      assertNotNull(cicmd);
+      CacheInvalidationConfigMetaData gotten = cicmd;
+      cicmd = bean.determineCacheInvalidationConfig();
+      assertEquals(gotten, cicmd);
+      assertEquals("TestEntityGroup2", cicmd.getInvalidationGroupName());
+      assertEquals("TestInvalidationManager", cicmd.getInvalidationManagerName());
+      assertEquals("TestEntityGroup2", cicmd.determineInvalidationGroupName());
+      assertEquals("TestInvalidationManager", cicmd.determineInvalidationManagerName());
+   }
+   
    public void testEjbthreeClusterConfig() throws Exception
    {
       JBossXBTestDelegate xbdelegate = (JBossXBTestDelegate) super.getDelegate();




More information about the jboss-cvs-commits mailing list