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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 12 06:43:56 EST 2007


Author: adrian at jboss.org
Date: 2007-11-12 06:43:56 -0500 (Mon, 12 Nov 2007)
New Revision: 66953

Added:
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJarJBossMergeActivationConfigUnitTestCase.java
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar21MergeActivationConfig.xml
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar3xMergeActivationConfig.xml
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss5xMergeActivationConfig.xml
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBeanMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/ActivationConfigMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/ActivationConfigPropertiesMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EJBMetaDataTestSuite.java
Log:
[JBAS-4958] - Merge activation config properties

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBeanMetaData.java	2007-11-12 11:05:41 UTC (rev 66952)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBeanMetaData.java	2007-11-12 11:43:56 UTC (rev 66953)
@@ -583,11 +583,19 @@
          messageDestinationLink = joverride.messageDestinationLink;
       else if(soriginal != null && soriginal.getMessageDestinationLink() != null)
          messageDestinationLink = soriginal.getMessageDestinationLink();
-      // activationConfig
-      if(joverride != null && joverride.activationConfig != null)
-         activationConfig = joverride.activationConfig;
-      else if(soriginal != null && soriginal.getActivationConfig() != null)
-         activationConfig = soriginal.getActivationConfig();
+      // Fixup the activation config
+      ActivationConfigMetaData jbossActivationConfig = null;
+      if (joverride != null && joverride.getActivationConfig() != null)
+         jbossActivationConfig = joverride.getActivationConfig();
+      ActivationConfigMetaData originalActivationConfig = null;
+      if(soriginal != null)
+         originalActivationConfig = soriginal.getActivationConfig();
+      if(jbossActivationConfig != null || originalActivationConfig != null)
+      {
+         if(activationConfig == null)
+            activationConfig = new ActivationConfigMetaData();
+         activationConfig.merge(jbossActivationConfig, originalActivationConfig);
+      }
       // aroundInvokes
       if(joverride != null && joverride.aroundInvokes != null)
          aroundInvokes = joverride.aroundInvokes;

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/ActivationConfigMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/ActivationConfigMetaData.java	2007-11-12 11:05:41 UTC (rev 66952)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/ActivationConfigMetaData.java	2007-11-12 11:43:56 UTC (rev 66953)
@@ -71,4 +71,29 @@
          throw new IllegalArgumentException("Null activationConfigProperties");
       this.activationConfigProperties = activationConfigProperties;
    }
+
+   public void merge(ActivationConfigMetaData override, ActivationConfigMetaData original)
+   {
+      super.merge(override, original);
+      ActivationConfigPropertiesMetaData propertyOverride = null;
+      if (override != null)
+         propertyOverride = override.getActivationConfigProperties();
+      ActivationConfigPropertiesMetaData propertyOriginal = null;
+      if (original != null)
+         propertyOriginal = original.getActivationConfigProperties();
+      if (propertyOverride == null || propertyOverride.isEmpty())
+      {
+         if (propertyOriginal != null)
+            activationConfigProperties = propertyOriginal;
+         return;
+      }
+      if (propertyOriginal == null || propertyOriginal.isEmpty())
+      {
+         if (propertyOverride != null)
+            activationConfigProperties = propertyOverride;
+         return;
+      }
+      activationConfigProperties = new ActivationConfigPropertiesMetaData();
+      activationConfigProperties.merge(propertyOverride, propertyOriginal);
+   }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/ActivationConfigPropertiesMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/ActivationConfigPropertiesMetaData.java	2007-11-12 11:05:41 UTC (rev 66952)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/ActivationConfigPropertiesMetaData.java	2007-11-12 11:43:56 UTC (rev 66953)
@@ -41,4 +41,19 @@
    {
       super("activation config property name");
    }
+
+   public void merge(ActivationConfigPropertiesMetaData override, ActivationConfigPropertiesMetaData original)
+   {
+      super.merge(override, original);
+      if (original != null)
+      {
+         for (ActivationConfigPropertyMetaData property : original)
+            add(property);
+      }
+      if (override != null)
+      {
+         for (ActivationConfigPropertyMetaData property : override)
+            add(property);
+      }
+   }
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EJBMetaDataTestSuite.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EJBMetaDataTestSuite.java	2007-11-12 11:05:41 UTC (rev 66952)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EJBMetaDataTestSuite.java	2007-11-12 11:43:56 UTC (rev 66953)
@@ -51,6 +51,7 @@
       suite.addTest(JBoss5xEverythingUnitTestCase.suite());
       suite.addTest(EjbJarJBossMergeEverythingUnitTestCase.suite());
       suite.addTest(JBoss42UnitTestCase.suite());
+      suite.addTest(EjbJarJBossMergeActivationConfigUnitTestCase.suite());
       
       //suite.addTest(JBossCMPUnitTestCase.suite());
       //suite.addTest(JBossCMPMergeUnitTestCase.suite());

Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJarJBossMergeActivationConfigUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJarJBossMergeActivationConfigUnitTestCase.java	                        (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJarJBossMergeActivationConfigUnitTestCase.java	2007-11-12 11:43:56 UTC (rev 66953)
@@ -0,0 +1,107 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.metadata.ejb;
+
+import junit.framework.Test;
+
+import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
+import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
+import org.jboss.metadata.ejb.spec.ActivationConfigPropertiesMetaData;
+import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
+import org.jboss.metadata.ejb.spec.EjbJar21MetaData;
+import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
+import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+
+/**
+ * 
+ * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @version $Revision: 1.1 $
+ */
+public class EjbJarJBossMergeActivationConfigUnitTestCase
+   extends AbstractEJBEverythingTest
+{
+   public static Test suite()
+   {
+      return suite(EjbJarJBossMergeActivationConfigUnitTestCase.class);
+   }
+
+   public static SchemaBindingResolver initResolver()
+   {
+      DefaultSchemaResolver resolver = new DefaultSchemaResolver();
+      resolver.addClassBindingForLocation("ejb-jar_2_1.xsd", EjbJar21MetaData.class);
+      resolver.addClassBindingForLocation("ejb-jar_3_0.xsd", EjbJar30MetaData.class);
+      resolver.addClassBindingForLocation("jboss_5_0.xsd", JBoss50MetaData.class);
+      resolver.addClassBinding("http://www.jboss.com/xml/ns/javaee", JBoss50MetaData.class);
+      return resolver;
+   }
+   
+   public EjbJarJBossMergeActivationConfigUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public void testEJB3xMergeActivationConfig() throws Exception
+   {
+      EjbJar3xMetaData ejbJarMetaData = unmarshal("EjbJar3xMergeActivationConfig.xml", EjbJar30MetaData.class, null);
+      JBoss50MetaData jbossMetaData = unmarshal("JBoss5xMergeActivationConfig.xml", JBoss50MetaData.class, null);
+      jbossMetaData.merge(jbossMetaData, ejbJarMetaData);
+      testMergeActivationConfig(jbossMetaData);
+   }
+
+   public void testEJB21MergeActivationConfig() throws Exception
+   {
+      EjbJar21MetaData ejbJarMetaData = unmarshal("EjbJar21MergeActivationConfig.xml", EjbJar21MetaData.class, null);
+      JBoss50MetaData jbossMetaData = unmarshal("JBoss5xMergeActivationConfig.xml", JBoss50MetaData.class, null);
+      jbossMetaData.merge(jbossMetaData, ejbJarMetaData);
+      testMergeActivationConfig(jbossMetaData);
+   }
+   
+   protected void testMergeActivationConfig(JBoss50MetaData jbossMetaData)
+   {
+      JBossEnterpriseBeanMetaData enterpriseBeanMetaData = jbossMetaData.getEnterpriseBean("testmdb");
+      assertNotNull(enterpriseBeanMetaData);
+      assertTrue(enterpriseBeanMetaData.isMessageDriven());
+      JBossMessageDrivenBeanMetaData messageDrivenBeanMetaData = (JBossMessageDrivenBeanMetaData) enterpriseBeanMetaData;
+      ActivationConfigMetaData activationConfigMetaData = messageDrivenBeanMetaData.getActivationConfig();
+      assertNotNull(activationConfigMetaData);
+      ActivationConfigPropertiesMetaData properties = activationConfigMetaData.getActivationConfigProperties();
+      assertNotNull(properties);
+      assertEquals(6, properties.size());
+      assertProperty(properties, "ejbjar1", "FromEJBJAR1");
+      assertProperty(properties, "ejbjar2", "FromEJBJAR2");
+      assertProperty(properties, "jboss1", "FromJBoss1");
+      assertProperty(properties, "jboss2", "FromJBoss2");
+      assertProperty(properties, "shared1", "FromJBossShared1");
+      assertProperty(properties, "shared2", "FromJBossShared2");
+   }
+   
+   protected void assertProperty(ActivationConfigPropertiesMetaData properties, String key, String value)
+   {
+      ActivationConfigPropertyMetaData property = properties.get(key);
+      assertNotNull("Expected property: " + key, property);
+      assertEquals(value, property.getValue());
+   }
+}

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar21MergeActivationConfig.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar21MergeActivationConfig.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar21MergeActivationConfig.xml	2007-11-12 11:43:56 UTC (rev 66953)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Id -->
+<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
+   version="2.1">
+
+   <enterprise-beans>
+
+      <message-driven>
+         <ejb-name>testmdb</ejb-name>
+         <activation-config>
+            <activation-config-property>
+               <activation-config-property-name>ejbjar1</activation-config-property-name>
+               <activation-config-property-value>FromEJBJAR1</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property>
+               <activation-config-property-name>ejbjar2</activation-config-property-name>
+               <activation-config-property-value>FromEJBJAR2</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property>
+               <activation-config-property-name>shared1</activation-config-property-name>
+               <activation-config-property-value>FromEJBJARShared1</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property>
+               <activation-config-property-name>shared2</activation-config-property-name>
+               <activation-config-property-value>FromEJBJARShared2</activation-config-property-value>
+            </activation-config-property>
+         </activation-config>
+      </message-driven>
+
+   </enterprise-beans>
+   
+</ejb-jar>

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar3xMergeActivationConfig.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar3xMergeActivationConfig.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/EjbJar3xMergeActivationConfig.xml	2007-11-12 11:43:56 UTC (rev 66953)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0"
+         metadata-complete="true">
+
+   <enterprise-beans>
+
+      <message-driven>
+         <ejb-name>testmdb</ejb-name>
+         <activation-config>
+            <activation-config-property>
+               <activation-config-property-name>ejbjar1</activation-config-property-name>
+               <activation-config-property-value>FromEJBJAR1</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property>
+               <activation-config-property-name>ejbjar2</activation-config-property-name>
+               <activation-config-property-value>FromEJBJAR2</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property>
+               <activation-config-property-name>shared1</activation-config-property-name>
+               <activation-config-property-value>FromEJBJARShared1</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property>
+               <activation-config-property-name>shared2</activation-config-property-name>
+               <activation-config-property-value>FromEJBJARShared2</activation-config-property-value>
+            </activation-config-property>
+         </activation-config>
+      </message-driven>
+
+   </enterprise-beans>
+
+</ejb-jar>
\ No newline at end of file

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss5xMergeActivationConfig.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss5xMergeActivationConfig.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss5xMergeActivationConfig.xml	2007-11-12 11:43:56 UTC (rev 66953)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id: JBoss5xEverything_testEverything.xml 66795 2007-11-06 18:37:23Z bstansberry at jboss.com $ -->
+
+<jboss xmlns="http://www.jboss.com/xml/ns/javaee"
+       xmlns:jee="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
+       version="5.0">
+   
+   <enterprise-beans>
+
+      <message-driven>
+         <ejb-name>testmdb</ejb-name>
+         <activation-config>
+            <activation-config-property>
+               <activation-config-property-name>jboss1</activation-config-property-name>
+               <activation-config-property-value>FromJBoss1</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property>
+               <activation-config-property-name>jboss2</activation-config-property-name>
+               <activation-config-property-value>FromJBoss2</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property>
+               <activation-config-property-name>shared1</activation-config-property-name>
+               <activation-config-property-value>FromJBossShared1</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property>
+               <activation-config-property-name>shared2</activation-config-property-name>
+               <activation-config-property-value>FromJBossShared2</activation-config-property-value>
+            </activation-config-property>
+         </activation-config>
+      </message-driven>
+   
+   </enterprise-beans>
+
+</jboss>
\ No newline at end of file




More information about the jboss-cvs-commits mailing list