[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