Added header-copying constructor to GenericMessage (INT-123). Also simplified the AbstractMessageHandlerAdapter.

This commit is contained in:
Mark Fisher
2008-02-22 19:34:08 +00:00
parent 094a131b1a
commit 51d9c8e42c
9 changed files with 104 additions and 58 deletions

View File

@@ -51,7 +51,7 @@ public class DefaultMessageHandlerAdapterTests {
@Test
public void testMessageAsMethodParameterAndObjectAsReturnValue() {
DefaultMessageHandlerAdapter<TestHandler> adapter = new DefaultMessageHandlerAdapter<TestHandler>();
adapter.setShouldUseMapperOnInvocation(false);
adapter.setExpectsMessage(true);
adapter.setObject(new TestHandler());
adapter.setMethodName("acceptMessageAndReturnObject");
adapter.afterPropertiesSet();
@@ -62,7 +62,7 @@ public class DefaultMessageHandlerAdapterTests {
@Test
public void testMessageAsMethodParameterAndMessageAsReturnValue() {
DefaultMessageHandlerAdapter<TestHandler> adapter = new DefaultMessageHandlerAdapter<TestHandler>();
adapter.setShouldUseMapperOnInvocation(false);
adapter.setExpectsMessage(true);
adapter.setObject(new TestHandler());
adapter.setMethodName("acceptMessageAndReturnMessage");
adapter.afterPropertiesSet();
@@ -73,7 +73,7 @@ public class DefaultMessageHandlerAdapterTests {
@Test
public void testMessageSubclassAsMethodParameterAndMessageAsReturnValue() {
DefaultMessageHandlerAdapter<TestHandler> adapter = new DefaultMessageHandlerAdapter<TestHandler>();
adapter.setShouldUseMapperOnInvocation(false);
adapter.setExpectsMessage(true);
adapter.setObject(new TestHandler());
adapter.setMethodName("acceptMessageSubclassAndReturnMessage");
adapter.afterPropertiesSet();
@@ -84,7 +84,7 @@ public class DefaultMessageHandlerAdapterTests {
@Test
public void testMessageSubclassAsMethodParameterAndMessageSubclassAsReturnValue() {
DefaultMessageHandlerAdapter<TestHandler> adapter = new DefaultMessageHandlerAdapter<TestHandler>();
adapter.setShouldUseMapperOnInvocation(false);
adapter.setExpectsMessage(true);
adapter.setObject(new TestHandler());
adapter.setMethodName("acceptMessageSubclassAndReturnMessageSubclass");
adapter.afterPropertiesSet();

View File

@@ -16,6 +16,7 @@
package org.springframework.integration.message;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -55,4 +56,14 @@ public class GenericMessageTests {
assertFalse(message.isExpired());
}
@Test
public void testMessageHeaderCopied() {
MessageHeader header = new MessageHeader();
header.setAttribute("testAttribute", new Integer(123));
header.setProperty("testProperty", "foo");
GenericMessage<String> message = new GenericMessage<String>("test", header);
assertEquals(new Integer(123), message.getHeader().getAttribute("testAttribute"));
assertEquals("foo", message.getHeader().getProperty("testProperty"));
}
}

View File

@@ -17,6 +17,7 @@
package org.springframework.integration.message;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -39,24 +40,55 @@ public class MessageHeaderTests {
@Test
public void testAttributes() {
MessageHeader header = new MessageHeader();
Integer integer = new Integer(123);
header.setAttribute("test", integer);
assertEquals(integer, header.getAttribute("test"));
Integer value = new Integer(123);
Object previousValue = header.setAttribute("test", value);
assertNull(previousValue);
assertEquals(value, header.getAttribute("test"));
assertNull(header.getAttribute("nosuchattribute"));
Set<String> names = header.getAttributeNames();
assertEquals(1, names.size());
assertTrue(names.contains("test"));
Integer newValue = new Integer(456);
previousValue = header.setAttribute("test", newValue);
assertEquals(value, previousValue);
assertEquals(newValue, header.getAttribute("test"));
}
@Test
public void testProperties() {
MessageHeader header = new MessageHeader();
header.setProperty("foo", "bar");
String previousValue = header.setProperty("foo", "bar");
assertNull(previousValue);
assertEquals("bar", header.getProperty("foo"));
assertNull(header.getProperty("nosuchproperty"));
Set<String> names = header.getPropertyNames();
assertEquals(1, names.size());
assertTrue(names.contains("foo"));
previousValue = header.setProperty("foo", "baz");
assertEquals("bar", previousValue);
assertEquals("baz", header.getProperty("foo"));
}
@Test
public void testSetAttributeIfAbsent() {
MessageHeader header = new MessageHeader();
Integer integer = new Integer(123);
assertNull(header.getAttribute("test"));
assertFalse(header.getAttributeNames().contains("test"));
Object existingValue = header.setAttributeIfAbsent("test", integer);
assertNull(existingValue);
assertEquals(integer, header.getAttribute("test"));
assertTrue(header.getAttributeNames().contains("test"));
}
@Test
public void testSetAttributeIfAbsentDoesNotOverride() {
MessageHeader header = new MessageHeader();
Integer originalValue = new Integer(123);
header.setAttributeIfAbsent("test", originalValue);
Object existingValue = header.setAttributeIfAbsent("test", new Integer(456));
assertEquals(originalValue, header.getAttribute("test"));
assertEquals(originalValue, existingValue);
}
}