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());
}