[jboss-cvs] JBossAS SVN: r74039 - in projects/metadata/trunk/src: test/java/org/jboss/test/metadata/ejb and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 3 18:00:17 EDT 2008


Author: alex.loubyansky at jboss.com
Date: 2008-06-03 18:00:16 -0400 (Tue, 03 Jun 2008)
New Revision: 74039

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossConsumerBeanMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/MessagePropertiesMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossConsumerBeanOverrideUnitTestCase.java
Log:
JBMETA-49

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossConsumerBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossConsumerBeanMetaData.java	2008-06-03 21:47:21 UTC (rev 74038)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossConsumerBeanMetaData.java	2008-06-03 22:00:16 UTC (rev 74039)
@@ -22,6 +22,8 @@
 package org.jboss.metadata.ejb.jboss;
 
 import org.jboss.logging.Logger;
+
+import java.util.ArrayList;
 import java.util.List;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
@@ -145,4 +147,91 @@
       return null;
    }
    
+   public void merge(JBossEnterpriseBeanMetaData overrideEjb, JBossEnterpriseBeanMetaData originalEjb)
+   {
+      super.merge(overrideEjb, originalEjb);
+      
+      List<ProducerMetaData> originalProducers = null;
+      List<LocalProducerMetaData> originalLocalProducers = null;
+      List<MessagePropertiesMetaData> originalMsgProps = null;
+      MethodAttributesMetaData originalMsg = null;
+      JBossConsumerBeanMetaData original = (JBossConsumerBeanMetaData) originalEjb;      
+      if(original != null)
+      {
+         if(original.destination != null)
+            destination = original.destination;
+         if(original.destinationType != null)
+            destinationType = original.destinationType;
+         
+         originalMsg = original.currentMessage;
+         originalMsgProps = original.messageProperties;         
+         originalProducers = original.producers;
+         originalLocalProducers = original.localProducers;
+      }
+      
+      List<ProducerMetaData> overrideProducers = null;
+      List<LocalProducerMetaData> overrideLocalProducers = null;
+      List<MessagePropertiesMetaData> overrideMsgProps = null;
+      MethodAttributesMetaData overrideMsg = null;
+      JBossConsumerBeanMetaData override = (JBossConsumerBeanMetaData) overrideEjb;
+      if(override != null)
+      {
+         if(override.destination != null)
+            destination = override.destination;
+         if(override.destinationType != null)
+            destinationType = override.destinationType;
+         
+         overrideMsg = override.currentMessage;
+         overrideMsg = override.currentMessage;
+         overrideMsgProps = override.messageProperties;         
+         overrideProducers = override.producers;
+         overrideLocalProducers = override.localProducers;
+      }
+      
+      if(originalMsg != null || overrideMsg != null)
+      {
+         if(currentMessage == null)
+            currentMessage = new MethodAttributesMetaData();
+         currentMessage.merge(overrideMsg, originalMsg);
+      }
+      
+      if(overrideMsgProps != null)
+      {
+         if(messageProperties == null)
+            messageProperties = new ArrayList<MessagePropertiesMetaData>();
+         messageProperties.addAll(overrideMsgProps);
+      }
+      if(originalMsgProps != null)
+      {
+         if(messageProperties == null)
+            messageProperties = new ArrayList<MessagePropertiesMetaData>();
+         messageProperties.addAll(originalMsgProps);
+      }
+      
+      if(overrideProducers != null)
+      {
+         if(producers == null)
+            producers = new ArrayList<ProducerMetaData>();
+         producers.addAll(overrideProducers);
+      }
+      if(originalProducers != null)
+      {
+         if(producers == null)
+            producers = new ArrayList<ProducerMetaData>();
+         producers.addAll(originalProducers);
+      }
+
+      if(overrideLocalProducers != null)
+      {
+         if(localProducers == null)
+            localProducers = new ArrayList<LocalProducerMetaData>();
+         localProducers.addAll(overrideLocalProducers);
+      }
+      if(originalLocalProducers != null)
+      {
+         if(localProducers == null)
+            localProducers = new ArrayList<LocalProducerMetaData>();
+         localProducers.addAll(originalLocalProducers);
+      }
+   }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/MessagePropertiesMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/MessagePropertiesMetaData.java	2008-06-03 21:47:21 UTC (rev 74038)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/MessagePropertiesMetaData.java	2008-06-03 22:00:16 UTC (rev 74039)
@@ -89,5 +89,4 @@
       sb.append("]");
       return sb.toString();
    }
-
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossConsumerBeanOverrideUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossConsumerBeanOverrideUnitTestCase.java	2008-06-03 21:47:21 UTC (rev 74038)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossConsumerBeanOverrideUnitTestCase.java	2008-06-03 22:00:16 UTC (rev 74039)
@@ -21,8 +21,16 @@
  */
 package org.jboss.test.metadata.ejb;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.LocalProducerMetaData;
+import org.jboss.metadata.ejb.jboss.MessagePropertiesMetaData;
+import org.jboss.metadata.ejb.jboss.MethodAttributeMetaData;
+import org.jboss.metadata.ejb.jboss.MethodAttributesMetaData;
+import org.jboss.metadata.ejb.jboss.ProducerMetaData;
 
 
 /**
@@ -38,4 +46,268 @@
    {
       simplePropertiesTest(JBossConsumerBeanMetaData.class, JBossEnterpriseBeanMetaData.class, null);
    }
+   
+   public void testCurrentMessage() throws Exception
+   {
+      JBossConsumerBeanMetaData original = new JBossConsumerBeanMetaData();
+      original.setEjbName("consumer");
+      
+      MethodAttributesMetaData curMsg = new MethodAttributesMetaData();
+      original.setCurrentMessage(curMsg);
+      MethodAttributeMetaData mAttr = new MethodAttributeMetaData();
+      mAttr.setMethodName("method1");
+      mAttr.setTransactionTimeout(1000);
+      curMsg.add(mAttr);
+      mAttr = new MethodAttributeMetaData();
+      mAttr.setMethodName("method2");
+      mAttr.setTransactionTimeout(2000);
+      curMsg.add(mAttr);
+      
+      JBossConsumerBeanMetaData override = new JBossConsumerBeanMetaData();
+      override.setEjbName("consumer");
+      curMsg = new MethodAttributesMetaData();
+      override.setCurrentMessage(curMsg);
+      mAttr = new MethodAttributeMetaData();
+      mAttr.setMethodName("method2");
+      mAttr.setTransactionTimeout(2500);
+      curMsg.add(mAttr);
+      mAttr = new MethodAttributeMetaData();
+      mAttr.setMethodName("method3");
+      mAttr.setTransactionTimeout(3000);
+      curMsg.add(mAttr);
+      
+      JBossConsumerBeanMetaData merged = new JBossConsumerBeanMetaData();
+      merged.merge(override, original);
+      curMsg = merged.getCurrentMessage();
+      assertNotNull(curMsg);
+      mAttr = curMsg.get("method1");
+      assertNotNull(mAttr);
+      assertEquals(1000, mAttr.getTransactionTimeout());
+      mAttr = curMsg.get("method2");
+      assertNotNull(mAttr);
+      assertEquals(2500, mAttr.getTransactionTimeout());
+      mAttr = curMsg.get("method3");
+      assertNotNull(mAttr);
+      assertEquals(3000, mAttr.getTransactionTimeout());
+   }
+   
+   public void testMessageProperties() throws Exception
+   {
+      JBossConsumerBeanMetaData original = new JBossConsumerBeanMetaData();
+      original.setEjbName("consumer");
+
+      List<MessagePropertiesMetaData> msgProps = new ArrayList<MessagePropertiesMetaData>();
+      original.setMessageProperties(msgProps);
+      MessagePropertiesMetaData msgProp = new MessagePropertiesMetaData();
+      msgProp.setClassName("class1");
+      msgProp.setDelivery("NonPersistent");
+      msgProp.setPriority(1);
+      MethodAttributeMetaData method = new MethodAttributeMetaData();
+      method.setMethodName("method1");
+      method.setIdempotent(false);
+      method.setReadOnly(false);
+      method.setTransactionTimeout(1000);
+      msgProp.setMethod(method);
+      msgProps.add(msgProp);
+      msgProp = new MessagePropertiesMetaData();
+      msgProp.setClassName("class2");
+      msgProp.setDelivery("NonPersistent");
+      msgProp.setPriority(1);
+      method = new MethodAttributeMetaData();
+      method.setMethodName("method2");
+      method.setIdempotent(false);
+      method.setReadOnly(false);
+      method.setTransactionTimeout(1000);
+      msgProps.add(msgProp);
+      msgProp.setMethod(method);
+      
+      JBossConsumerBeanMetaData override = new JBossConsumerBeanMetaData();
+      override.setEjbName("consumer");
+
+      msgProps = new ArrayList<MessagePropertiesMetaData>();
+      override.setMessageProperties(msgProps);
+      msgProp = new MessagePropertiesMetaData();
+      msgProp.setClassName("class2");
+      msgProp.setDelivery("Persistent");
+      msgProp.setPriority(2);
+      method = new MethodAttributeMetaData();
+      method.setMethodName("method2");
+      method.setIdempotent(true);
+      method.setReadOnly(true);
+      method.setTransactionTimeout(2000);
+      msgProp.setMethod(method);
+      msgProps.add(msgProp);
+      msgProp = new MessagePropertiesMetaData();
+      msgProp.setClassName("class3");
+      msgProp.setDelivery("Persistent");
+      msgProp.setPriority(3);
+      method = new MethodAttributeMetaData();
+      method.setMethodName("method3");
+      method.setIdempotent(true);
+      method.setReadOnly(true);
+      method.setTransactionTimeout(3000);
+      msgProp.setMethod(method);
+      msgProps.add(msgProp);
+      
+      JBossConsumerBeanMetaData merged = new JBossConsumerBeanMetaData();
+      merged.merge(override, original);
+      msgProps = merged.getMessageProperties();
+      assertNotNull(msgProps);
+      // shouldn't it be 3?
+      assertEquals(4, msgProps.size());
+      
+      msgProp = msgProps.get(0);
+      assertNotNull(msgProp);
+      assertEquals("class2", msgProp.getClassName());
+      assertEquals("Persistent", msgProp.getDelivery());
+      assertEquals(new Integer(2), msgProp.getPriority());
+      method = msgProp.getMethod();
+      assertNotNull(method);
+      assertEquals("method2", method.getMethodName());
+      assertEquals(2000, method.getTransactionTimeout());
+      assertTrue(method.isIdempotent());
+      assertTrue(method.isReadOnly());
+
+      msgProp = msgProps.get(1);
+      assertNotNull(msgProp);
+      assertEquals("class3", msgProp.getClassName());
+      assertEquals("Persistent", msgProp.getDelivery());
+      assertEquals(new Integer(3), msgProp.getPriority());
+      method = msgProp.getMethod();
+      assertNotNull(method);
+      assertEquals("method3", method.getMethodName());
+      assertEquals(3000, method.getTransactionTimeout());
+      assertTrue(method.isIdempotent());
+      assertTrue(method.isReadOnly());
+
+      msgProp = msgProps.get(2);
+      assertNotNull(msgProp);
+      assertEquals("class1", msgProp.getClassName());
+      assertEquals("NonPersistent", msgProp.getDelivery());
+      assertEquals(new Integer(1), msgProp.getPriority());
+      method = msgProp.getMethod();
+      assertNotNull(method);
+      assertEquals("method1", method.getMethodName());
+      assertEquals(1000, method.getTransactionTimeout());
+      assertFalse(method.isIdempotent());
+      assertFalse(method.isReadOnly());
+
+      msgProp = msgProps.get(3);
+      assertNotNull(msgProp);
+      assertEquals("class2", msgProp.getClassName());
+      assertEquals("NonPersistent", msgProp.getDelivery());
+      assertEquals(new Integer(1), msgProp.getPriority());
+      method = msgProp.getMethod();
+      assertNotNull(method);
+      assertEquals("method2", method.getMethodName());
+      assertEquals(1000, method.getTransactionTimeout());
+      assertFalse(method.isIdempotent());
+      assertFalse(method.isReadOnly());
+   }
+   
+   public void testProducers() throws Exception
+   {
+      JBossConsumerBeanMetaData original = new JBossConsumerBeanMetaData();
+      original.setEjbName("consumer");
+
+      List<ProducerMetaData> producers = new ArrayList<ProducerMetaData>();
+      original.setProducers(producers);
+      ProducerMetaData producer = new ProducerMetaData();
+      producer.setClassName("class1");
+      producer.setConnectionFactory("factory1");
+      producers.add(producer);
+      producer = new ProducerMetaData();
+      producer.setClassName("class2");
+      producer.setConnectionFactory("factory2");
+      producers.add(producer);
+      
+      JBossConsumerBeanMetaData override = new JBossConsumerBeanMetaData();
+      override.setEjbName("consumer");
+      producers = new ArrayList<ProducerMetaData>();
+      override.setProducers(producers);
+      producer = new ProducerMetaData();
+      producer.setClassName("class2");
+      producer.setConnectionFactory("factory3");
+      producers.add(producer);
+      producer = new ProducerMetaData();
+      producer.setClassName("class3");
+      producer.setConnectionFactory("factory3");
+      producers.add(producer);
+      
+      JBossConsumerBeanMetaData merged = new JBossConsumerBeanMetaData();
+      merged.merge(override, original);
+      producers = merged.getProducers();
+      assertNotNull(producers);
+      assertEquals(4, producers.size());
+
+      producer = producers.get(0);
+      assertNotNull(producer);
+      assertEquals("class2", producer.getClassName());
+      assertEquals("factory3", producer.getConnectionFactory());
+      producer = producers.get(1);
+      assertNotNull(producer);
+      assertEquals("class3", producer.getClassName());
+      assertEquals("factory3", producer.getConnectionFactory());
+      producer = producers.get(2);
+      assertNotNull(producer);
+      assertEquals("class1", producer.getClassName());
+      assertEquals("factory1", producer.getConnectionFactory());
+      producer = producers.get(3);
+      assertNotNull(producer);
+      assertEquals("class2", producer.getClassName());
+      assertEquals("factory2", producer.getConnectionFactory());
+   }
+
+   public void testLocalProducers() throws Exception
+   {
+      JBossConsumerBeanMetaData original = new JBossConsumerBeanMetaData();
+      original.setEjbName("consumer");
+
+      List<LocalProducerMetaData> producers = new ArrayList<LocalProducerMetaData>();
+      original.setLocalProducers(producers);
+      LocalProducerMetaData producer = new LocalProducerMetaData();
+      producer.setClassName("class1");
+      producer.setConnectionFactory("factory1");
+      producers.add(producer);
+      producer = new LocalProducerMetaData();
+      producer.setClassName("class2");
+      producer.setConnectionFactory("factory2");
+      producers.add(producer);
+      
+      JBossConsumerBeanMetaData override = new JBossConsumerBeanMetaData();
+      override.setEjbName("consumer");
+      producers = new ArrayList<LocalProducerMetaData>();
+      override.setLocalProducers(producers);
+      producer = new LocalProducerMetaData();
+      producer.setClassName("class2");
+      producer.setConnectionFactory("factory3");
+      producers.add(producer);
+      producer = new LocalProducerMetaData();
+      producer.setClassName("class3");
+      producer.setConnectionFactory("factory3");
+      producers.add(producer);
+      
+      JBossConsumerBeanMetaData merged = new JBossConsumerBeanMetaData();
+      merged.merge(override, original);
+      producers = merged.getLocalProducers();
+      assertNotNull(producers);
+      assertEquals(4, producers.size());
+      
+      producer = producers.get(0);
+      assertNotNull(producer);
+      assertEquals("class2", producer.getClassName());
+      assertEquals("factory3", producer.getConnectionFactory());
+      producer = producers.get(1);
+      assertNotNull(producer);
+      assertEquals("class3", producer.getClassName());
+      assertEquals("factory3", producer.getConnectionFactory());
+      producer = producers.get(2);
+      assertNotNull(producer);
+      assertEquals("class1", producer.getClassName());
+      assertEquals("factory1", producer.getConnectionFactory());
+      producer = producers.get(3);
+      assertNotNull(producer);
+      assertEquals("class2", producer.getClassName());
+      assertEquals("factory2", producer.getConnectionFactory());
+   }
 }




More information about the jboss-cvs-commits mailing list