[jboss-cvs] JBossAS SVN: r68193 - in projects/metadata/trunk/src: test/java/org/jboss/test/metadata/ejb and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Dec 12 14:22:16 EST 2007
Author: alex.loubyansky at jboss.com
Date: 2007-12-12 14:22:16 -0500 (Wed, 12 Dec 2007)
New Revision: 68193
Added:
projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar20_testRedefinedContainer.xml
projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss32_redefinedContainer.xml
Modified:
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ContainerConfigurationsMetaDataWrapper.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJar20UnitTestCase.java
Log:
JBAS-5070
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ContainerConfigurationsMetaDataWrapper.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ContainerConfigurationsMetaDataWrapper.java 2007-12-12 18:27:07 UTC (rev 68192)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ContainerConfigurationsMetaDataWrapper.java 2007-12-12 19:22:16 UTC (rev 68193)
@@ -54,50 +54,76 @@
if(defaults == null)
throw new IllegalStateException("defaults cannot be null");
- if(defaults != null)
for(String key : defaults.keySet())
{
ContainerConfigurationMetaData md = defaults.get(key);
- String extendsName = md.getExtendsName();
+
+ // Allow the configuration to inherit from a standard
+ // configuration. This is determined by looking for a
+ // configuration matching the name given by the extends
+ // attribute, or if extends was not specified, an
+ // existing configuration with the same.
+ ContainerConfigurationMetaData parent = null;
+ String extendsName = md.getExtendsName();
if (extendsName != null)
{
// Look first for another non-default parent
- ContainerConfigurationMetaData parent = merged.get(extendsName);
+ parent = merged.get(extendsName);
if (parent == null)
parent = defaults.get(extendsName);
if (parent == null)
throw new IllegalStateException("Failed to find parent configuration: "+extendsName+" among: "+defaults.keySet());
- ContainerConfigurationMetaDataWrapper wrapper = new ContainerConfigurationMetaDataWrapper(md, parent);
- md = wrapper;
}
+ /* this probably doesn't make sense for defaults
+ since it would mean that the defaults contained
+ containers with the same names
else
- md = new ContainerConfigurationMetaDataWrapper(md, null);
+ {
+ parent = merged.get(key);
+ }
+ */
+
+ md = new ContainerConfigurationMetaDataWrapper(md, parent);
merged.put(key, md);
}
+
if(primary != null)
- for(String key : primary.keySet())
{
- ContainerConfigurationMetaData md = primary.get(key);
- String extendsName = md.getExtendsName();
- if (extendsName != null)
+ for (String key : primary.keySet())
{
- ContainerConfigurationMetaData parent = primary.get(extendsName);
- if (parent == null)
- parent = merged.get(extendsName);
- if (parent == null)
- parent = defaults.get(extendsName);
- if (parent == null)
+ ContainerConfigurationMetaData md = primary.get(key);
+
+ // Allow the configuration to inherit from a standard
+ // configuration. This is determined by looking for a
+ // configuration matching the name given by the extends
+ // attribute, or if extends was not specified, an
+ // existing configuration with the same.
+ ContainerConfigurationMetaData parent = null;
+
+ String extendsName = md.getExtendsName();
+ if (extendsName != null)
{
- throw new IllegalStateException("Failed to find parent configuration: "
- +extendsName+" among defaults: "+defaults.keySet()
- +" config: "+primary.keySet());
+ parent = primary.get(extendsName);
+ if (parent == null)
+ parent = merged.get(extendsName);
+ if (parent == null)
+ parent = defaults.get(extendsName);
+ if (parent == null)
+ {
+ throw new IllegalStateException("Failed to find parent configuration: " + extendsName
+ + " among defaults: " + defaults.keySet() + " config: " + primary.keySet());
+ }
}
- ContainerConfigurationMetaDataWrapper wrapper = new ContainerConfigurationMetaDataWrapper(md, parent);
- md = wrapper;
+ else
+ {
+ parent = merged.get(key);
+ if(parent == null)
+ parent = defaults.get(key);
+ }
+
+ md = new ContainerConfigurationMetaDataWrapper(md, parent);
+ merged.put(key, md);
}
- else
- md = new ContainerConfigurationMetaDataWrapper(md, null);
- merged.put(key, md);
}
}
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJar20UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJar20UnitTestCase.java 2007-12-12 18:27:07 UTC (rev 68192)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJar20UnitTestCase.java 2007-12-12 19:22:16 UTC (rev 68193)
@@ -69,6 +69,7 @@
DefaultSchemaResolver resolver = new DefaultSchemaResolver();
resolver.addClassBindingForLocation("ejb-jar_2_0.dtd", EjbJar20MetaData.class);
resolver.addClassBindingForLocation("jboss_3_0.dtd", JBoss50DTDMetaData.class);
+ resolver.addClassBindingForLocation("jboss_3_2.dtd", JBoss50DTDMetaData.class);
resolver.addClassBindingForLocation("jboss_5_0.xsd", JBoss50MetaData.class);
resolver.addClassBinding("http://www.jboss.com/xml/ns/javaee", JBoss50MetaData.class);
return resolver;
@@ -223,6 +224,44 @@
assertTrue(jbe.isCMP1x());
}
+ /**
+ * Validate the entity bean configuration seen when combining ejb-jar.xml,
+ * jboss.xml and standardjboss.xml
+ * @throws Exception
+ */
+ public void testRedefinedContainer()
+ throws Exception
+ {
+ EjbJar2xMetaData specMetaData = unmarshal();
+ JBossMetaData jbossMetaData = unmarshal("JBoss32_redefinedContainer.xml", JBossMetaData.class, null);
+ JBossMetaData stdMetaData = unmarshal("JBoss5xEverything_testStandard.xml", JBossMetaData.class, null);
+ JBossMetaData mergedMetaData = new JBossMetaData();
+ mergedMetaData.merge(jbossMetaData, specMetaData);
+ JBossMetaDataWrapper wrapper = new JBossMetaDataWrapper(mergedMetaData, stdMetaData);
+
+ ContainerConfigurationMetaData conf = wrapper.getContainerConfiguration("Standard CMP 2.x EntityBean");
+ assertNotNull(conf);
+ assertEquals("Standard CMP 2.x EntityBean", conf.getContainerName());
+
+ assertEquals("org.jboss.ejb.plugins.PerTxEntityInstanceCache", conf.getInstanceCache());
+ assertEquals("org.jboss.ejb.plugins.EntityInstancePool", conf.getInstancePool());
+ assertEquals("org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager", conf.getPersistenceManager());
+ assertEquals("org.jboss.ejb.plugins.lock.NoLock", conf.getLockingPolicy());
+ assertEquals("org.jboss.web.WebClassLoader", conf.getWebClassLoader());
+ assertEquals("entity-unified-invoker", conf.getDefaultInvokerName());
+ assertEquals(CommitOption.C, conf.getCommitOption());
+ assertEquals(30000, conf.getOptiondRefreshRateMillis());
+
+ assertNotNull(conf.getDepends());
+ assertEquals(1, conf.getDepends().size());
+ assertTrue(conf.getDepends().contains("test:name=Test"));
+
+ assertTrue(specMetaData.isEJB2x());
+ EntityBeanMetaData entity = (EntityBeanMetaData) specMetaData.getEnterpriseBean("TestEntity");
+ assertNotNull(entity);
+ assertFalse(entity.isCMP1x());
+ }
+
public void testOneMany()
throws Exception
{
Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar20_testRedefinedContainer.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar20_testRedefinedContainer.xml (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar20_testRedefinedContainer.xml 2007-12-12 19:22:16 UTC (rev 68193)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE ejb-jar
+ PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
+ "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
+
+<ejb-jar >
+ <enterprise-beans>
+ <entity >
+ <description><![CDATA[An entity.]]></description>
+
+ <ejb-name>TestEntity</ejb-name>
+
+ <home>org.jboss.test.entity.interfaces.TestEntityHome</home>
+ <remote>org.jboss.test.entity.interfaces.TestEntity</remote>
+ <local-home>org.jboss.test.entity.interfaces.TestEntityLocalHome</local-home>
+ <local>org.jboss.test.entity.interfaces.TestEntityLocal</local>
+
+ <ejb-class>org.jboss.test.entity.beans.TestEntityCMP</ejb-class>
+ <persistence-type>Container</persistence-type>
+ <prim-key-class>java.lang.String</prim-key-class>
+ <reentrant>False</reentrant>
+ <cmp-version>2.x</cmp-version>
+ <abstract-schema-name>test</abstract-schema-name>
+ <cmp-field >
+ <description><![CDATA[]]></description>
+ <field-name>entityID</field-name>
+ </cmp-field>
+ <cmp-field >
+ <description><![CDATA[]]></description>
+ <field-name>value1</field-name>
+ </cmp-field>
+ <primkey-field>entityID</primkey-field>
+ </entity>
+ </enterprise-beans>
+</ejb-jar>
Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss32_redefinedContainer.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss32_redefinedContainer.xml (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss32_redefinedContainer.xml 2007-12-12 19:22:16 UTC (rev 68193)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE jboss PUBLIC
+ "-//JBoss//DTD JBOSS 3.2//EN"
+ "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
+
+<jboss>
+
+ <enterprise-beans>
+
+ <entity>
+ <ejb-name>TestEntity</ejb-name>
+ <jndi-name>test/entity/TestEntity</jndi-name>
+ <local-jndi-name>test/entity/TestEntityLocal</local-jndi-name>
+ </entity>
+
+ </enterprise-beans>
+
+ <resource-managers>
+ </resource-managers>
+
+ <container-configurations>
+ <container-configuration>
+ <container-name>Standard CMP 2.x EntityBean</container-name>
+ <depends>test:name=Test</depends>
+ </container-configuration>
+ </container-configurations>
+</jboss>
More information about the jboss-cvs-commits
mailing list