[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