Added MessageHeaders and MessageBuilder. Messages are now immutable (including header maps).

This commit is contained in:
Mark Fisher
2008-07-17 22:58:56 +00:00
parent b9ea75ea98
commit 2c95306f63
91 changed files with 1154 additions and 1083 deletions

View File

@@ -36,6 +36,7 @@ import org.springframework.integration.handler.MessageHandler;
import org.springframework.integration.message.ErrorMessage;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessageSource;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.scheduling.PollingSchedule;
@@ -51,8 +52,8 @@ public class DefaultMessageBusTests {
MessageChannel sourceChannel = new QueueChannel();
MessageChannel targetChannel = new QueueChannel();
bus.registerChannel("sourceChannel", sourceChannel);
StringMessage message = new StringMessage("test");
message.getHeader().setReturnAddress("targetChannel");
Message<String> message = MessageBuilder.fromPayload("test")
.setReturnAddress("targetChannel").build();
sourceChannel.send(message);
bus.registerChannel("targetChannel", targetChannel);
MessageHandler handler = new MessageHandler() {
@@ -73,8 +74,8 @@ public class DefaultMessageBusTests {
MessageChannel sourceChannel = new QueueChannel();
MessageChannel targetChannel = new QueueChannel();
bus.registerChannel("sourceChannel", sourceChannel);
StringMessage message = new StringMessage("test");
message.getHeader().setReturnAddress("targetChannel");
Message<String> message = MessageBuilder.fromPayload("test")
.setReturnAddress("targetChannel").build();
sourceChannel.send(message);
bus.registerChannel("targetChannel", targetChannel);
MessageHandler handler = new MessageHandler() {
@@ -93,7 +94,7 @@ public class DefaultMessageBusTests {
public void testChannelsWithoutHandlers() {
MessageBus bus = new DefaultMessageBus();
MessageChannel sourceChannel = new QueueChannel();
sourceChannel.send(new StringMessage("123", "test"));
sourceChannel.send(new StringMessage("test"));
MessageChannel targetChannel = new QueueChannel();
bus.registerChannel("sourceChannel", sourceChannel);
bus.registerChannel("targetChannel", targetChannel);
@@ -108,7 +109,7 @@ public class DefaultMessageBusTests {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("messageBusTests.xml", this.getClass());
context.start();
MessageChannel sourceChannel = (MessageChannel) context.getBean("sourceChannel");
sourceChannel.send(new GenericMessage<String>("123", "test"));
sourceChannel.send(new GenericMessage<String>("test"));
MessageChannel targetChannel = (MessageChannel) context.getBean("targetChannel");
MessageBus bus = (MessageBus) context.getBean("bus");
bus.start();
@@ -123,14 +124,14 @@ public class DefaultMessageBusTests {
QueueChannel outputChannel2 = new QueueChannel();
MessageHandler handler1 = new MessageHandler() {
public Message<?> handle(Message<?> message) {
message.getHeader().setReturnAddress("output1");
return message;
return MessageBuilder.fromMessage(message)
.setReturnAddress("output1").build();
}
};
MessageHandler handler2 = new MessageHandler() {
public Message<?> handle(Message<?> message) {
message.getHeader().setReturnAddress("output2");
return message;
return MessageBuilder.fromMessage(message)
.setReturnAddress("output2").build();
}
};
MessageBus bus = new DefaultMessageBus();
@@ -140,8 +141,8 @@ public class DefaultMessageBusTests {
bus.registerHandler("handler1", handler1, inputChannel, null);
bus.registerHandler("handler2", handler2, inputChannel, null);
bus.start();
inputChannel.send(new StringMessage(1, "testing"));
Message<?> message1 = outputChannel1.receive(100);
inputChannel.send(new StringMessage("testing"));
Message<?> message1 = outputChannel1.receive(500);
Message<?> message2 = outputChannel2.receive(0);
bus.stop();
assertTrue("exactly one message should be null", message1 == null ^ message2 == null);
@@ -155,16 +156,18 @@ public class DefaultMessageBusTests {
final CountDownLatch latch = new CountDownLatch(2);
MessageHandler handler1 = new MessageHandler() {
public Message<?> handle(Message<?> message) {
message.getHeader().setReturnAddress("output1");
Message<?> reply = MessageBuilder.fromMessage(message)
.setReturnAddress("output1").build();
latch.countDown();
return message;
return reply;
}
};
MessageHandler handler2 = new MessageHandler() {
public Message<?> handle(Message<?> message) {
message.getHeader().setReturnAddress("output2");
Message<?> reply = MessageBuilder.fromMessage(message)
.setReturnAddress("output2").build();
latch.countDown();
return message;
return reply;
}
};
MessageBus bus = new DefaultMessageBus();
@@ -174,7 +177,7 @@ public class DefaultMessageBusTests {
bus.registerHandler("handler1", handler1, inputChannel, null);
bus.registerHandler("handler2", handler2, inputChannel, null);
bus.start();
inputChannel.send(new StringMessage(1, "testing"));
inputChannel.send(new StringMessage("testing"));
latch.await(500, TimeUnit.MILLISECONDS);
assertEquals("both handlers should have been invoked", 0, latch.getCount());
Message<?> message1 = outputChannel1.receive(500);

View File

@@ -25,6 +25,7 @@ import java.util.Comparator;
import org.junit.Test;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessagePriority;
import org.springframework.integration.message.StringMessage;
@@ -84,11 +85,23 @@ public class PriorityChannelTests {
assertEquals("E", channel.receive(0).getPayload());
}
@Test
public void testNullPriorityIsConsideredNormal() {
PriorityChannel channel = new PriorityChannel(5);
Message<?> highPriority = createPriorityMessage(MessagePriority.HIGH);
Message<?> lowPriority = createPriorityMessage(MessagePriority.LOW);
Message<?> nullPriority = new StringMessage("test-NULL");
channel.send(lowPriority);
channel.send(highPriority);
channel.send(nullPriority);
assertEquals("test-HIGH", channel.receive(0).getPayload());
assertEquals("test-NULL", channel.receive(0).getPayload());
assertEquals("test-LOW", channel.receive(0).getPayload());
}
private static Message<?> createPriorityMessage(MessagePriority priority) {
Message<?> message = new StringMessage("test-" + priority);
message.getHeader().setPriority(priority);
return message;
private static Message<String> createPriorityMessage(MessagePriority priority) {
return MessageBuilder.fromPayload("test-" + priority).setPriority(priority).build();
}

View File

@@ -33,6 +33,7 @@ import org.junit.Test;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.message.selector.UnexpiredMessageSelector;
@@ -56,7 +57,7 @@ public class QueueChannelTests {
}
}).start();
assertFalse(messageReceived.get());
channel.send(new GenericMessage<String>(1, "testing"));
channel.send(new GenericMessage<String>("testing"));
latch.await(25, TimeUnit.MILLISECONDS);
assertTrue(messageReceived.get());
}
@@ -79,7 +80,7 @@ public class QueueChannelTests {
};
Runnable sendTask = new Runnable() {
public void run() {
channel.send(new GenericMessage<String>(1, "testing"));
channel.send(new GenericMessage<String>("testing"));
}
};
singleThreadExecutor.execute(receiveTask1);
@@ -143,26 +144,26 @@ public class QueueChannelTests {
@Test
public void testImmediateSend() {
QueueChannel channel = new QueueChannel(3);
boolean result1 = channel.send(new GenericMessage<String>(1, "test-1"));
boolean result1 = channel.send(new GenericMessage<String>("test-1"));
assertTrue(result1);
boolean result2 = channel.send(new GenericMessage<String>(2, "test-2"), 100);
boolean result2 = channel.send(new GenericMessage<String>("test-2"), 100);
assertTrue(result2);
boolean result3 = channel.send(new GenericMessage<String>(3, "test-3"), 0);
boolean result3 = channel.send(new GenericMessage<String>("test-3"), 0);
assertTrue(result3);
boolean result4 = channel.send(new GenericMessage<String>(4, "test-4"), 0);
boolean result4 = channel.send(new GenericMessage<String>("test-4"), 0);
assertFalse(result4);
}
@Test
public void testBlockingSendWithNoTimeout() throws Exception{
final QueueChannel channel = new QueueChannel(1);
boolean result1 = channel.send(new GenericMessage<String>(1, "test-1"));
boolean result1 = channel.send(new GenericMessage<String>("test-1"));
assertTrue(result1);
final AtomicBoolean sendInterrupted = new AtomicBoolean(false);
final CountDownLatch latch = new CountDownLatch(1);
Thread t = new Thread(new Runnable() {
public void run() {
channel.send(new GenericMessage<String>(2, "test-2"));
channel.send(new GenericMessage<String>("test-2"));
sendInterrupted.set(true);
latch.countDown();
}
@@ -177,13 +178,13 @@ public class QueueChannelTests {
@Test
public void testBlockingSendWithTimeout() throws Exception{
final QueueChannel channel = new QueueChannel(1);
boolean result1 = channel.send(new GenericMessage<String>(1, "test-1"));
boolean result1 = channel.send(new GenericMessage<String>("test-1"));
assertTrue(result1);
final AtomicBoolean sendInterrupted = new AtomicBoolean(false);
final CountDownLatch latch = new CountDownLatch(1);
Thread t = new Thread(new Runnable() {
public void run() {
channel.send(new GenericMessage<String>(2, "test-2"), 10000);
channel.send(new GenericMessage<String>("test-2"), 10000);
sendInterrupted.set(true);
latch.countDown();
}
@@ -225,10 +226,10 @@ public class QueueChannelTests {
long time = System.currentTimeMillis();
Date past = new Date(time - minute);
Date future = new Date(time + minute);
StringMessage expiredMessage = new StringMessage("test1");
expiredMessage.getHeader().setExpiration(past);
StringMessage unexpiredMessage = new StringMessage("test2");
unexpiredMessage.getHeader().setExpiration(future);
Message<String> expiredMessage = MessageBuilder.fromPayload("test1")
.setExpirationDate(past).build();
Message<String> unexpiredMessage = MessageBuilder.fromPayload("test2")
.setExpirationDate(future).build();
assertTrue(channel.send(expiredMessage, 0));
assertTrue(channel.send(unexpiredMessage, 0));
assertFalse(channel.send(new StringMessage("atCapacity"), 0));

View File

@@ -32,6 +32,7 @@ import org.springframework.integration.config.TestChannelInterceptor;
import org.springframework.integration.dispatcher.PublishSubscribeChannel;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessageDeliveryException;
import org.springframework.integration.message.MessagePriority;
import org.springframework.integration.message.StringMessage;
@@ -52,10 +53,10 @@ public class ChannelParserTests {
"channelParserTests.xml", this.getClass());
MessageChannel channel = (MessageChannel) context.getBean("capacityChannel");
for (int i = 0; i < 10; i++) {
boolean result = channel.send(new GenericMessage<String>(1, "test"), 10);
boolean result = channel.send(new GenericMessage<String>("test"), 10);
assertTrue(result);
}
assertFalse(channel.send(new GenericMessage<String>(1, "test"), 3));
assertFalse(channel.send(new GenericMessage<String>("test"), 3));
}
@Test
@@ -148,12 +149,12 @@ public class ChannelParserTests {
ApplicationContext context = new ClassPathXmlApplicationContext(
"priorityChannelParserTests.xml", this.getClass());
MessageChannel channel = (MessageChannel) context.getBean("priorityChannelWithDefaultComparator");
Message<?> lowPriorityMessage = new StringMessage("low");
lowPriorityMessage.getHeader().setPriority(MessagePriority.LOW);
Message<?> midPriorityMessage = new StringMessage("mid");
midPriorityMessage.getHeader().setPriority(MessagePriority.NORMAL);
Message<?> highPriorityMessage = new StringMessage("high");
highPriorityMessage.getHeader().setPriority(MessagePriority.HIGH);
Message<String> lowPriorityMessage = MessageBuilder.fromPayload("low")
.setPriority(MessagePriority.LOW).build();
Message<String> midPriorityMessage = MessageBuilder.fromPayload("mid")
.setPriority(MessagePriority.NORMAL).build();
Message<String> highPriorityMessage = MessageBuilder.fromPayload("high")
.setPriority(MessagePriority.HIGH).build();
channel.send(lowPriorityMessage);
channel.send(highPriorityMessage);
channel.send(midPriorityMessage);

View File

@@ -30,6 +30,7 @@ import org.junit.Test;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.StringMessage;
/**
@@ -47,15 +48,16 @@ public class ChannelInterceptorTests {
Message<?> result = channel.receive(0);
assertNotNull(result);
assertEquals("test", result.getPayload());
assertEquals(1, result.getHeader().getAttribute(PreSendReturnsMessageInterceptor.class.getName()));
assertEquals(1, result.getHeaders().get(PreSendReturnsMessageInterceptor.class.getName()));
}
@Test
public void testPreSendInterceptorReturnsNull() {
channel.addInterceptor(new PreSendReturnsNullInterceptor());
PreSendReturnsNullInterceptor interceptor = new PreSendReturnsNullInterceptor();
channel.addInterceptor(interceptor);
Message<?> message = new StringMessage("test");
channel.send(message);
assertEquals(1, message.getHeader().getAttribute(PreSendReturnsNullInterceptor.class.getName()));
assertEquals(1, interceptor.getCount());
Message<?> result = channel.receive(0);
assertNull(result);
}
@@ -158,8 +160,9 @@ public class ChannelInterceptorTests {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
assertNotNull(message);
message.getHeader().setAttribute(this.getClass().getName(), counter.incrementAndGet());
return message;
Message<?> reply = MessageBuilder.fromMessage(message)
.setHeader(this.getClass().getName(), counter.incrementAndGet()).build();
return reply;
}
}
@@ -168,10 +171,14 @@ public class ChannelInterceptorTests {
private static AtomicInteger counter = new AtomicInteger();
protected int getCount() {
return counter.get();
}
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
assertNotNull(message);
message.getHeader().setAttribute(this.getClass().getName(), counter.incrementAndGet());
counter.incrementAndGet();
return null;
}
}

View File

@@ -29,6 +29,7 @@ import org.junit.Test;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.message.selector.MessageSelector;
@@ -100,7 +101,7 @@ public class WireTapTests {
mainChannel.send(new StringMessage("testing"));
Message<?> original = mainChannel.receive(0);
Message<?> duplicate = secondaryChannel.receive(0);
Object originalIdAttribute = duplicate.getHeader().getAttribute(WireTap.ORIGINAL_MESSAGE_ID_KEY);
Object originalIdAttribute = duplicate.getHeaders().get(WireTap.ORIGINAL_MESSAGE_ID_KEY);
assertNotNull(originalIdAttribute);
assertEquals(original.getId(), originalIdAttribute);
}
@@ -116,46 +117,26 @@ public class WireTapTests {
Message<?> original = mainChannel.receive(0);
Message<?> duplicate = secondaryChannel.receive(0);
assertTrue("original timestamp should precede duplicate",
original.getHeader().getTimestamp() < duplicate.getHeader().getTimestamp());
original.getHeaders().getTimestamp() < duplicate.getHeaders().getTimestamp());
}
public void testDuplicateMessageContainsAttribute() {
public void testDuplicateMessageContainsHeaderValue() {
QueueChannel mainChannel = new QueueChannel();
QueueChannel secondaryChannel = new QueueChannel();
mainChannel.addInterceptor(new WireTap(secondaryChannel));
Message<?> message = new StringMessage("testing");
String attributeKey = "testAttribute";
Integer attributeValue = new Integer(123);
message.getHeader().setAttribute(attributeKey, attributeValue);
String headerName = "testAttribute";
Message<String> message = MessageBuilder.fromPayload("testing")
.setHeader(headerName, new Integer(123)).build();
mainChannel.send(message);
Message<?> original = mainChannel.receive(0);
Message<?> duplicate = secondaryChannel.receive(0);
Object originalAttribute = original.getHeader().getAttribute(attributeKey);
Object duplicateAttribute = duplicate.getHeader().getAttribute(attributeKey);
Object originalAttribute = original.getHeaders().get(headerName);
Object duplicateAttribute = duplicate.getHeaders().get(headerName);
assertNotNull(originalAttribute);
assertNotNull(duplicateAttribute);
assertEquals(originalAttribute, duplicateAttribute);
}
@Test
public void testDuplicateMessageContainsProperty() {
QueueChannel mainChannel = new QueueChannel();
QueueChannel secondaryChannel = new QueueChannel();
mainChannel.addInterceptor(new WireTap(secondaryChannel));
Message<?> message = new StringMessage("testing");
String propertyKey = "testProperty";
String propertyValue = "foo";
message.getHeader().setProperty(propertyKey, propertyValue);
mainChannel.send(message);
Message<?> original = mainChannel.receive(0);
Message<?> duplicate = secondaryChannel.receive(0);
String originalProperty = original.getHeader().getProperty(propertyKey);
String duplicateProperty = duplicate.getHeader().getProperty(propertyKey);
assertNotNull(originalProperty);
assertNotNull(duplicateProperty);
assertEquals(originalProperty, duplicateProperty);
}
private static class TestSelector implements MessageSelector {

View File

@@ -30,8 +30,8 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.endpoint.HandlerEndpoint;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.router.AggregatingMessageHandler;
import org.springframework.integration.router.CompletionStrategy;
import org.springframework.integration.router.CompletionStrategyAdapter;
@@ -161,12 +161,11 @@ public class AggregatorParserTests {
private static <T> Message<T> createMessage(T payload, Object correlationId, int sequenceSize, int sequenceNumber,
MessageChannel replyChannel) {
GenericMessage<T> message = new GenericMessage<T>(payload);
message.getHeader().setCorrelationId(correlationId);
message.getHeader().setSequenceSize(sequenceSize);
message.getHeader().setSequenceNumber(sequenceNumber);
message.getHeader().setReturnAddress(replyChannel);
return message;
return MessageBuilder.fromPayload(payload)
.setCorrelationId(correlationId)
.setSequenceSize(sequenceSize)
.setSequenceNumber(sequenceNumber)
.setReturnAddress(replyChannel).build();
}
}

View File

@@ -30,6 +30,7 @@ import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessageRejectedException;
import org.springframework.integration.message.MessageTarget;
import org.springframework.integration.message.StringMessage;
@@ -47,7 +48,7 @@ public class EndpointParserTests {
MessageChannel channel = (MessageChannel) context.getBean("testChannel");
TestHandler handler = (TestHandler) context.getBean("testHandler");
assertNull(handler.getMessageString());
channel.send(new GenericMessage<String>(1, "test"));
channel.send(new GenericMessage<String>("test"));
handler.getLatch().await(500, TimeUnit.MILLISECONDS);
assertEquals("test", handler.getMessageString());
}
@@ -60,7 +61,7 @@ public class EndpointParserTests {
MessageChannel channel = (MessageChannel) context.getBean("testChannel");
TestBean bean = (TestBean) context.getBean("testBean");
assertNull(bean.getMessage());
channel.send(new GenericMessage<String>(1, "test"));
channel.send(new GenericMessage<String>("test"));
bean.getLatch().await(500, TimeUnit.MILLISECONDS);
assertEquals("test", bean.getMessage());
}
@@ -82,9 +83,9 @@ public class EndpointParserTests {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"endpointWithSelector.xml", this.getClass());
MessageTarget endpoint = (MessageTarget) context.getBean("endpoint");
Message<?> message = new StringMessage("test");
MessageChannel replyChannel = new QueueChannel();
message.getHeader().setReturnAddress(replyChannel);
Message<?> message = MessageBuilder.fromPayload("test")
.setReturnAddress(replyChannel).build();
assertTrue(endpoint.send(message));
Message<?> reply = replyChannel.receive(500);
assertNotNull(reply);
@@ -96,9 +97,9 @@ public class EndpointParserTests {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"endpointWithSelector.xml", this.getClass());
MessageTarget endpoint = (MessageTarget) context.getBean("endpoint");
Message<?> message = new GenericMessage<Integer>(123);
MessageChannel replyChannel = new QueueChannel();
message.getHeader().setReturnAddress(replyChannel);
Message<?> message = MessageBuilder.fromPayload(123)
.setReturnAddress(replyChannel).build();
endpoint.send(message);
}

View File

@@ -16,7 +16,6 @@
package org.springframework.integration.config;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -25,18 +24,12 @@ import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.DirectFieldAccessor;
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.router.AggregatingMessageHandler;
import org.springframework.integration.router.CompletionStrategy;
import org.springframework.integration.router.CompletionStrategyAdapter;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.router.ResequencingMessageHandler;
import org.springframework.integration.util.MethodInvoker;
/**
* @author Marius Bogoevici
@@ -51,6 +44,7 @@ public class ResequencerParserTests {
this.context = new ClassPathXmlApplicationContext("resequencerParserTests.xml", this.getClass());
}
@Test
public void testResequencing() {
ResequencingMessageHandler resequencingHandler = (ResequencingMessageHandler) context
@@ -67,13 +61,13 @@ public class ResequencerParserTests {
Message<?> message2 = replyChannel.receive(500);
Message<?> message3 = replyChannel.receive(500);
Assert.assertNotNull(message1);
Assert.assertEquals(1, message1.getHeader().getSequenceNumber());
Assert.assertEquals(new Integer(1), message1.getHeaders().getSequenceNumber());
Assert.assertNotNull(message2);
Assert.assertEquals(2, message2.getHeader().getSequenceNumber());
Assert.assertEquals(new Integer(2), message2.getHeaders().getSequenceNumber());
Assert.assertNotNull(message3);
Assert.assertEquals(3, message3.getHeader().getSequenceNumber());
Assert.assertEquals(new Integer(3), message3.getHeaders().getSequenceNumber());
}
@Test
public void testDefaultResequencerProperties() {
ResequencingMessageHandler resequencingHandler = (ResequencingMessageHandler) context
@@ -126,12 +120,12 @@ public class ResequencerParserTests {
private static <T> Message<T> createMessage(T payload, Object correlationId, int sequenceSize, int sequenceNumber,
MessageChannel replyChannel) {
GenericMessage<T> message = new GenericMessage<T>(payload);
message.getHeader().setCorrelationId(correlationId);
message.getHeader().setSequenceSize(sequenceSize);
message.getHeader().setSequenceNumber(sequenceNumber);
message.getHeader().setReturnAddress(replyChannel);
return message;
return MessageBuilder.fromPayload(payload)
.setCorrelationId(correlationId)
.setSequenceSize(sequenceSize)
.setSequenceNumber(sequenceNumber)
.setReturnAddress(replyChannel)
.build();
}
}

View File

@@ -42,7 +42,7 @@ public class TestAggregator implements Aggregator {
for (Message<?> message : sortableList) {
buffer.append(message.getPayload().toString());
if (null == correlationId) {
correlationId = message.getHeader().getCorrelationId();
correlationId = message.getHeaders().getCorrelationId();
}
}
Message<?> returnedMessage = new StringMessage(buffer.toString());

View File

@@ -18,7 +18,6 @@ package org.springframework.integration.config;
import org.springframework.integration.handler.ReplyHandler;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageHeader;
/**
* @author Mark Fisher
@@ -28,7 +27,7 @@ public class TestReplyHandler implements ReplyHandler {
private volatile Message<?> lastMessage;
public void handle(Message<?> replyMessage, MessageHeader originalMessageHeader) {
public void handle(Message<?> replyMessage, Message<?> originalMessage) {
this.lastMessage = replyMessage;
}

View File

@@ -48,7 +48,7 @@ public class TestAnnotatedEndpointWithCompletionStrategy {
for (Message<?> message : sortableList) {
buffer.append(message.getPayload().toString());
if (null == correlationId) {
correlationId = message.getHeader().getCorrelationId();
correlationId = message.getHeaders().getCorrelationId();
}
}
Message<?> returnedMessage = new StringMessage(buffer.toString());

View File

@@ -49,7 +49,7 @@ public class TestAnnotatedEndpointWithCustomizedAggregator {
for (Message<?> message : sortableList) {
buffer.append(message.getPayload().toString());
if (null == correlationId) {
correlationId = message.getHeader().getCorrelationId();
correlationId = message.getHeaders().getCorrelationId();
}
}
Message<?> returnedMessage = new StringMessage(buffer.toString());

View File

@@ -47,7 +47,7 @@ public class TestAnnotatedEndpointWithDefaultAggregator {
for (Message<?> message : sortableList) {
buffer.append(message.getPayload().toString());
if (null == correlationId) {
correlationId = message.getHeader().getCorrelationId();
correlationId = message.getHeaders().getCorrelationId();
}
}
Message<?> returnedMessage = new StringMessage(buffer.toString());

View File

@@ -28,9 +28,10 @@ import java.util.concurrent.TimeUnit;
import org.junit.Test;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessageSource;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.message.MessageTarget;
import org.springframework.integration.message.StringMessage;
/**
* @author Mark Fisher
@@ -43,18 +44,19 @@ public class DirectChannelTests {
@Test
public void testSend() {
DirectChannel channel = new DirectChannel();
channel.subscribe(new ThreadNameSettingTestTarget());
ThreadNameExtractingTestTarget target = new ThreadNameExtractingTestTarget();
channel.subscribe(target);
StringMessage message = new StringMessage("test");
assertTrue(channel.send(message));
String handlerThreadName = message.getHeader().getProperty(HANDLER_THREAD);
assertEquals(Thread.currentThread().getName(), handlerThreadName);
assertEquals(Thread.currentThread().getName(), target.threadName);
}
@Test
public void testSendInSeparateThread() throws InterruptedException {
CountDownLatch latch = new CountDownLatch(1);
final DirectChannel channel = new DirectChannel();
channel.subscribe(new ThreadNameSettingTestTarget(latch));
ThreadNameExtractingTestTarget target = new ThreadNameExtractingTestTarget(latch);
channel.subscribe(target);
final StringMessage message = new StringMessage("test");
new Thread(new Runnable() {
public void run() {
@@ -62,8 +64,7 @@ public class DirectChannelTests {
}
}, "test-thread").start();
latch.await(1000, TimeUnit.MILLISECONDS);
String handlerThreadName = message.getHeader().getProperty(HANDLER_THREAD);
assertEquals("test-thread", handlerThreadName);
assertEquals("test-thread", target.threadName);
}
@Test
@@ -88,7 +89,7 @@ public class DirectChannelTests {
assertNotNull(message.getPayload());
assertEquals(String.class, message.getPayload().getClass());
assertEquals("foo", message.getPayload());
String handlerThreadName = message.getHeader().getProperty(HANDLER_THREAD);
String handlerThreadName = message.getHeaders().get(HANDLER_THREAD, String.class);
assertEquals(Thread.currentThread().getName(), handlerThreadName);
}
@@ -113,7 +114,7 @@ public class DirectChannelTests {
assertNotNull(message.getPayload());
assertEquals(String.class, message.getPayload().getClass());
assertEquals("foo", message.getPayload());
String handlerThreadName = message.getHeader().getProperty(HANDLER_THREAD);
String handlerThreadName = message.getHeaders().get(HANDLER_THREAD, String.class);
assertEquals("test-thread", handlerThreadName);
}
@@ -124,21 +125,23 @@ public class DirectChannelTests {
}
private static class ThreadNameSettingTestTarget implements MessageTarget {
private static class ThreadNameExtractingTestTarget implements MessageTarget {
private String threadName;
private final CountDownLatch latch;
ThreadNameSettingTestTarget() {
ThreadNameExtractingTestTarget() {
this(null);
}
ThreadNameSettingTestTarget(CountDownLatch latch) {
ThreadNameExtractingTestTarget(CountDownLatch latch) {
this.latch = latch;
}
public boolean send(Message<?> message) {
message.getHeader().setProperty(HANDLER_THREAD, Thread.currentThread().getName());
this.threadName = Thread.currentThread().getName();
if (this.latch != null) {
this.latch.countDown();
}
@@ -156,10 +159,9 @@ public class DirectChannelTests {
this.messageText = messageText;
}
public StringMessage receive() {
StringMessage message = new StringMessage(messageText);
message.getHeader().setProperty(HANDLER_THREAD, Thread.currentThread().getName());
return message;
public Message<String> receive() {
return MessageBuilder.fromPayload(messageText)
.setHeader(HANDLER_THREAD, Thread.currentThread().getName()).build();
}
}

View File

@@ -35,6 +35,7 @@ import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.handler.MessageHandler;
import org.springframework.integration.handler.TestHandlers;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessageRejectedException;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.message.selector.MessageSelector;
@@ -52,13 +53,13 @@ public class HandlerEndpointTests {
channelRegistry.registerChannel("replyChannel", replyChannel);
MessageHandler handler = new MessageHandler() {
public Message<String> handle(Message<?> message) {
return new StringMessage("123", "hello " + message.getPayload());
return new StringMessage("hello " + message.getPayload());
}
};
HandlerEndpoint endpoint = new HandlerEndpoint(handler);
endpoint.setChannelRegistry(channelRegistry);
endpoint.setOutputChannelName("replyChannel");
endpoint.send(new StringMessage(1, "test"));
endpoint.send(new StringMessage("test"));
Message<?> reply = replyChannel.receive(50);
assertNotNull(reply);
assertEquals("hello test", reply.getPayload());
@@ -69,12 +70,12 @@ public class HandlerEndpointTests {
final MessageChannel replyChannel = new QueueChannel();
MessageHandler handler = new MessageHandler() {
public Message<?> handle(Message<?> message) {
return new StringMessage("123", "hello " + message.getPayload());
return new StringMessage("hello " + message.getPayload());
}
};
HandlerEndpoint endpoint = new HandlerEndpoint(handler);
StringMessage testMessage = new StringMessage(1, "test");
testMessage.getHeader().setReturnAddress(replyChannel);
Message<String> testMessage = MessageBuilder.fromPayload("test")
.setReturnAddress(replyChannel).build();
endpoint.send(testMessage);
Message<?> reply = replyChannel.receive(50);
assertNotNull(reply);
@@ -88,13 +89,13 @@ public class HandlerEndpointTests {
channelRegistry.registerChannel("replyChannel", replyChannel);
MessageHandler handler = new MessageHandler() {
public Message<?> handle(Message<?> message) {
return new StringMessage("123", "hello " + message.getPayload());
return new StringMessage("hello " + message.getPayload());
}
};
HandlerEndpoint endpoint = new HandlerEndpoint(handler);
endpoint.setChannelRegistry(channelRegistry);
StringMessage testMessage = new StringMessage(1, "test");
testMessage.getHeader().setReturnAddress("replyChannel");
Message<String> testMessage = MessageBuilder.fromPayload("test")
.setReturnAddress(replyChannel).build();
endpoint.send(testMessage);
Message<?> reply = replyChannel.receive(50);
assertNotNull(reply);
@@ -109,21 +110,22 @@ public class HandlerEndpointTests {
channelRegistry.registerChannel("replyChannel2", replyChannel2);
MessageHandler handler = new MessageHandler() {
public Message<?> handle(Message<?> message) {
return new StringMessage("123", "hello " + message.getPayload());
return new StringMessage("hello " + message.getPayload());
}
};
HandlerEndpoint endpoint = new HandlerEndpoint(handler);
endpoint.setChannelRegistry(channelRegistry);
StringMessage testMessage = new StringMessage("test");
testMessage.getHeader().setReturnAddress(replyChannel1);
endpoint.send(testMessage);
Message<String> testMessage1 = MessageBuilder.fromPayload("test")
.setReturnAddress(replyChannel1).build();
endpoint.send(testMessage1);
Message<?> reply1 = replyChannel1.receive(50);
assertNotNull(reply1);
assertEquals("hello test", reply1.getPayload());
Message<?> reply2 = replyChannel2.receive(0);
assertNull(reply2);
testMessage.getHeader().setReturnAddress("replyChannel2");
endpoint.send(testMessage);
Message<String> testMessage2 = MessageBuilder.fromMessage(testMessage1)
.setReturnAddress("replyChannel2").build();
endpoint.send(testMessage2);
reply1 = replyChannel1.receive(0);
assertNull(reply1);
reply2 = replyChannel2.receive(0);
@@ -146,7 +148,7 @@ public class HandlerEndpointTests {
HandlerEndpoint endpoint = new HandlerEndpoint(handler);
endpoint.setChannelRegistry(channelRegistry);
endpoint.setOutputChannelName("replyChannel");
endpoint.send(new StringMessage(1, "test"));
endpoint.send(new StringMessage("test"));
latch.await(500, TimeUnit.MILLISECONDS);
assertEquals("handler should have been invoked within allotted time", 0, latch.getCount());
Message<?> reply = replyChannel.receive(0);
@@ -268,11 +270,11 @@ public class HandlerEndpointTests {
return message;
}
});
Message<?> message = new StringMessage("test");
message.getHeader().setReturnAddress(replyChannel);
Message<String> message = MessageBuilder.fromPayload("test")
.setReturnAddress(replyChannel).build();
endpoint.send(message);
Message<?> reply = replyChannel.receive(500);
assertEquals(message.getId(), reply.getHeader().getCorrelationId());
assertEquals(message.getId(), reply.getHeaders().getCorrelationId());
}
@Test
@@ -280,15 +282,15 @@ public class HandlerEndpointTests {
QueueChannel replyChannel = new QueueChannel(1);
HandlerEndpoint endpoint = new HandlerEndpoint(new MessageHandler() {
public Message<?> handle(Message<?> message) {
message.getHeader().setCorrelationId("ABC-123");
return message;
return MessageBuilder.fromMessage(message)
.setCorrelationId("ABC-123").build();
}
});
Message<?> message = new StringMessage("test");
message.getHeader().setReturnAddress(replyChannel);
Message<String> message = MessageBuilder.fromPayload("test")
.setReturnAddress(replyChannel).build();
endpoint.send(message);
Message<?> reply = replyChannel.receive(500);
Object correlationId = reply.getHeader().getCorrelationId();
Object correlationId = reply.getHeaders().getCorrelationId();
assertFalse(message.getId().equals(correlationId));
assertEquals("ABC-123", correlationId);
}

View File

@@ -24,6 +24,7 @@ import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.StringMessage;
/**
@@ -38,8 +39,8 @@ public class ReturnAddressTests {
MessageChannel channel1 = (MessageChannel) context.getBean("channel1WithOverride");
MessageChannel replyChannel = (MessageChannel) context.getBean("replyChannel");
context.start();
StringMessage message = new StringMessage("*");
message.getHeader().setReturnAddress("replyChannel");
Message<String> message = MessageBuilder.fromPayload("*")
.setReturnAddress("replyChannel").build();
channel1.send(message);
Message<?> response = replyChannel.receive(3000);
assertNotNull(response);
@@ -53,8 +54,8 @@ public class ReturnAddressTests {
MessageChannel channel1 = (MessageChannel) context.getBean("channel1");
MessageChannel replyChannel = (MessageChannel) context.getBean("replyChannel");
context.start();
StringMessage message = new StringMessage("*");
message.getHeader().setReturnAddress("replyChannel");
Message<String> message = MessageBuilder.fromPayload("*")
.setReturnAddress("replyChannel").build();
channel1.send(message);
Message<?> response = replyChannel.receive(3000);
assertNotNull(response);

View File

@@ -80,7 +80,7 @@ public class GatewayProxyFactoryBeanTests {
public void run() {
Message<?> input = requestChannel.receive();
StringMessage response = new StringMessage(input.getPayload() + "456");
((MessageChannel) input.getHeader().getReturnAddress()).send(response);
((MessageChannel) input.getHeaders().getReturnAddress()).send(response);
}
}).start();
GatewayProxyFactoryBean proxyFactory = new GatewayProxyFactoryBean();
@@ -133,7 +133,7 @@ public class GatewayProxyFactoryBeanTests {
public void run() {
Message<?> input = requestChannel.receive();
StringMessage response = new StringMessage(input.getPayload() + "bar");
((MessageChannel) input.getHeader().getReturnAddress()).send(response);
((MessageChannel) input.getHeaders().getReturnAddress()).send(response);
}
}).start();
GatewayProxyFactoryBean proxyFactory = new GatewayProxyFactoryBean();
@@ -177,7 +177,7 @@ public class GatewayProxyFactoryBeanTests {
public void run() {
Message<?> input = requestChannel.receive();
StringMessage response = new StringMessage(input.getPayload() + "bar");
((MessageChannel) input.getHeader().getReturnAddress()).send(response);
((MessageChannel) input.getHeaders().getReturnAddress()).send(response);
}
}).start();
}

View File

@@ -32,7 +32,6 @@ import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.handler.MessageHandler;
import org.springframework.integration.handler.ReplyHandler;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageHeader;
import org.springframework.integration.message.StringMessage;
/**
@@ -68,7 +67,7 @@ public class RequestReplyTemplateTests {
final List<String> replies = new ArrayList<String>(3);
final CountDownLatch latch = new CountDownLatch(3);
ReplyHandler replyHandler = new ReplyHandler() {
public void handle(Message<?> replyMessage, MessageHeader originalMessageHeader) {
public void handle(Message<?> replyMessage, Message<?> originalMessage) {
replies.add((String) replyMessage.getPayload());
latch.countDown();
}

View File

@@ -27,13 +27,14 @@ import static org.junit.Assert.assertEquals;
import org.easymock.IAnswer;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.integration.bus.MessageBus;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageDeliveryException;
import org.springframework.integration.message.MessageHeader;
import org.springframework.integration.message.MessageHeaders;
import org.springframework.integration.message.MessageMapper;
/**
@@ -150,22 +151,23 @@ public class SimpleMessagingGatewayTests {
}
@Test
@Ignore
public void sendMessageAndReceiveObject() {
// setup local mocks
MessageHeader messageHeaderMock = createMock(MessageHeader.class);
MessageHeaders messageHeadersMock = createMock(MessageHeaders.class);
//set expectations
messageHeaderMock.setReturnAddress(replyChannel);
//messageHeaderMock.setReturnAddress(replyChannel);
expect(replyChannel.getName()).andReturn("replyChannel").anyTimes();
expect(messageMock.getHeader()).andReturn(messageHeaderMock);
expect(messageMock.getHeaders()).andReturn(messageHeadersMock);
expect(requestChannel.send(messageMock)).andReturn(true);
expect(messageMock.getId()).andReturn(1);
//play scenario
replay(allmocks);
replay(messageHeaderMock);
replay(messageHeadersMock);
this.simpleMessagingGateway.sendAndReceive(messageMock);
verify(allmocks);
verify(messageHeaderMock);
verify(messageHeadersMock);
}
@Test
@@ -186,13 +188,14 @@ public class SimpleMessagingGatewayTests {
}
@Test
@Ignore
public void sendMessageAndReceiveMessage() {
// setup local mocks
MessageHeader messageHeaderMock = createMock(MessageHeader.class);
MessageHeaders messageHeadersMock = createMock(MessageHeaders.class);
//set expectations
messageHeaderMock.setReturnAddress(replyChannel);
expect(replyChannel.getName()).andReturn("replyChannel").anyTimes();
expect(messageMock.getHeader()).andReturn(messageHeaderMock);
expect(messageMock.getHeaders()).andReturn(messageHeadersMock);
expect(messageHeadersMock.getReturnAddress()).andReturn(replyChannel);
expect(requestChannel.send(messageMock)).andReturn(true);
expect(messageMock.getId()).andReturn(1);

View File

@@ -27,6 +27,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.gateway.TestService;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.StringMessage;
/**
@@ -92,8 +93,8 @@ public class GatewayParserTests {
Executors.newSingleThreadExecutor().execute(new Runnable() {
public void run() {
Message<?> request = requestChannel.receive();
Message<?> reply = new StringMessage(request.getPayload() + "bar");
reply.getHeader().setCorrelationId(request.getId());
Message<String> reply = MessageBuilder.fromPayload(request.getPayload() + "bar")
.setCorrelationId(request.getId()).build();
replyChannel.send(reply);
}
});

View File

@@ -26,6 +26,7 @@ import org.springframework.integration.channel.DefaultChannelRegistry;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.router.SplitterMessageHandlerAdapter;
@@ -38,58 +39,58 @@ public class CorrelationIdTests {
@Test
public void testCorrelationIdPassedIfAvailable() {
Object correlationId = "123-ABC";
Message<?> message = new StringMessage("test");
message.getHeader().setCorrelationId(correlationId);
Message<String> message = MessageBuilder.fromPayload("test")
.setCorrelationId(correlationId).build();
DefaultMessageHandlerAdapter adapter = new DefaultMessageHandlerAdapter();
adapter.setObject(new TestBean());
adapter.setMethodName("upperCase");
adapter.afterPropertiesSet();
Message<?> reply = adapter.handle(message);
assertEquals(correlationId, reply.getHeader().getCorrelationId());
assertEquals(correlationId, reply.getHeaders().getCorrelationId());
}
@Test
public void testCorrelationIdCopiedFromMessageIdByDefault() {
Message<?> message = new StringMessage("test");
Message<String> message = MessageBuilder.fromPayload("test").build();
DefaultMessageHandlerAdapter adapter = new DefaultMessageHandlerAdapter();
adapter.setObject(new TestBean());
adapter.setMethodName("upperCase");
adapter.afterPropertiesSet();
Message<?> reply = adapter.handle(message);
assertEquals(message.getId(), reply.getHeader().getCorrelationId());
assertEquals(message.getId(), reply.getHeaders().getCorrelationId());
}
@Test
public void testCorrelationIdCopiedFromMessageCorrelationIdIfAvailable() {
Message<?> message = new StringMessage("messageId","test");
message.getHeader().setCorrelationId("correlationId");
Message<String> message = MessageBuilder.fromPayload("test")
.setCorrelationId("correlationId").build();
DefaultMessageHandlerAdapter adapter = new DefaultMessageHandlerAdapter();
adapter.setObject(new TestBean());
adapter.setMethodName("upperCase");
adapter.afterPropertiesSet();
Message<?> reply = adapter.handle(message);
assertEquals(message.getHeader().getCorrelationId(), reply.getHeader().getCorrelationId());
assertTrue(message.getHeader().getCorrelationId().equals(reply.getHeader().getCorrelationId()));
assertEquals(message.getHeaders().getCorrelationId(), reply.getHeaders().getCorrelationId());
assertTrue(message.getHeaders().getCorrelationId().equals(reply.getHeaders().getCorrelationId()));
}
@Test
public void testCorrelationNotPassedIfAlreadySetByHandler() throws Exception {
Object correlationId = "123-ABC";
Message<?> message = new StringMessage("test");
message.getHeader().setCorrelationId(correlationId);
Message<String> message = MessageBuilder.fromPayload("test")
.setCorrelationId(correlationId).build();
AbstractMessageHandlerAdapter adapter = new AbstractMessageHandlerAdapter() {
@Override
protected Message<?> handleReturnValue(Object returnValue, Message<?> originalMessage) {
Message<?> resultMessage = this.createReplyMessage(returnValue, originalMessage);
resultMessage.getHeader().setCorrelationId("456-XYZ");
return resultMessage;
return MessageBuilder.fromMessage(resultMessage)
.setCorrelationId("456-XYZ").build();
}
};
adapter.setObject(new TestBean());
adapter.setMethodName("upperCase");
adapter.afterPropertiesSet();
Message<?> reply = adapter.handle(message);
assertEquals("456-XYZ", reply.getHeader().getCorrelationId());
assertEquals("456-XYZ", reply.getHeaders().getCorrelationId());
}
@Test
@@ -99,15 +100,14 @@ public class CorrelationIdTests {
@Override
protected Message<?> handleReturnValue(Object returnValue, Message<?> originalMessage) {
Message<?> resultMessage = this.createReplyMessage(returnValue, originalMessage);
resultMessage.getHeader().setCorrelationId("456-XYZ");
return resultMessage;
return MessageBuilder.fromMessage(resultMessage).setCorrelationId("456-XYZ").build();
}
};
adapter.setObject(new TestBean());
adapter.setMethodName("upperCase");
adapter.afterPropertiesSet();
Message<?> reply = adapter.handle(message);
assertEquals("456-XYZ", reply.getHeader().getCorrelationId());
assertEquals("456-XYZ", reply.getHeaders().getCorrelationId());
}
@Test
@@ -128,8 +128,8 @@ public class CorrelationIdTests {
splitter.handle(message);
Message<?> reply1 = testChannel.receive(100);
Message<?> reply2 = testChannel.receive(100);
assertEquals(message.getId(), reply1.getHeader().getCorrelationId());
assertEquals(message.getId(), reply2.getHeader().getCorrelationId());
assertEquals(message.getId(), reply1.getHeaders().getCorrelationId());
assertEquals(message.getId(), reply2.getHeaders().getCorrelationId());
}

View File

@@ -35,7 +35,7 @@ public class MessageHandlerChainTests {
chain.add(new TestHandler("b"));
chain.add(new TestHandler("c"));
chain.add(new TestHandler("d"));
Message<?> result = chain.handle(new StringMessage(1, "!"));
Message<?> result = chain.handle(new StringMessage("!"));
assertEquals("!abcd", result.getPayload());
}
@@ -49,7 +49,7 @@ public class MessageHandlerChainTests {
chain.add(new TestHandler("a"));
chain.add(handler4);
chain.add(new TestHandler("b"));
Message<?> result = chain.handle(new StringMessage(1, "!"));
Message<?> result = chain.handle(new StringMessage("!"));
assertEquals("234!a*234b", result.getPayload());
}
@@ -63,7 +63,7 @@ public class MessageHandlerChainTests {
}
public Message<?> handle(Message<?> message) {
return new StringMessage(1, message.getPayload() + text);
return new StringMessage(message.getPayload() + text);
}
}
@@ -78,8 +78,8 @@ public class MessageHandlerChainTests {
}
public Message<?> handle(Message<?> message, MessageHandler target) {
message = target.handle(new StringMessage(1, text + message.getPayload()));
return new StringMessage(1, message.getPayload() + text);
message = target.handle(new StringMessage(text + message.getPayload()));
return new StringMessage(message.getPayload() + text);
}
}

View File

@@ -87,7 +87,7 @@ public class MethodInvokingTargetTests {
target.setMethodName("foo");
target.afterPropertiesSet();
QueueChannel channel = new QueueChannel();
Message<String> message = new GenericMessage<String>("123", "testing");
Message<String> message = new GenericMessage<String>("testing");
channel.send(message);
assertNull(queue.poll());
MessageBus bus = new DefaultMessageBus();

View File

@@ -27,7 +27,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.message.MessageBuilder;
/**
* @author Mark Fisher
@@ -39,8 +39,8 @@ public class ReplyMessageCorrelatorTests {
final ReplyMessageCorrelator correlator = new ReplyMessageCorrelator(10);
final AtomicInteger replyCounter = new AtomicInteger();
CountDownLatch latch = startReceivers(correlator, replyCounter, 5, 500);
Message<?> message = new StringMessage("test");
message.getHeader().setCorrelationId("123");
Message<String> message = MessageBuilder.fromPayload("test")
.setCorrelationId("123").build();
correlator.handle(message);
latch.await(1000, TimeUnit.MILLISECONDS);
assertEquals(0, latch.getCount());
@@ -50,8 +50,8 @@ public class ReplyMessageCorrelatorTests {
@Test
public void testReplyPrecedeReceivers() throws InterruptedException {
final ReplyMessageCorrelator correlator = new ReplyMessageCorrelator(10);
Message<?> message = new StringMessage("test");
message.getHeader().setCorrelationId("123");
Message<String> message = MessageBuilder.fromPayload("test")
.setCorrelationId("123").build();
correlator.handle(message);
final AtomicInteger replyCounter = new AtomicInteger();
CountDownLatch latch = startReceivers(correlator, replyCounter, 5, 50);

View File

@@ -30,6 +30,7 @@ import org.springframework.integration.annotation.Handler;
import org.springframework.integration.handler.DefaultMessageHandlerAdapter;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessageHandlingException;
import org.springframework.integration.message.MessagingException;
import org.springframework.integration.message.StringMessage;
@@ -59,8 +60,8 @@ public class AnnotationMethodMessageMapperTests {
public void testRequiredAttributeProvided() throws Exception {
Method method = TestHandler.class.getMethod("requiredAttribute", Integer.class);
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
Message<?> message = new StringMessage("foo");
message.getHeader().setAttribute("num", new Integer(123));
Message<String> message = MessageBuilder.fromPayload("foo")
.setHeader("num", new Integer(123)).build();
Object[] args = (Object[]) mapper.mapMessage(message);
assertEquals(1, args.length);
assertEquals(new Integer(123), args[0]);
@@ -86,8 +87,8 @@ public class AnnotationMethodMessageMapperTests {
public void testRequiredPropertyProvided() throws Exception {
Method method = TestHandler.class.getMethod("requiredProperty", String.class);
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
Message<?> message = new StringMessage("foo");
message.getHeader().setProperty("prop", "bar");
Message<String> message = MessageBuilder.fromPayload("foo")
.setHeader("prop", "bar").build();
Object[] args = (Object[]) mapper.mapMessage(message);
assertEquals(1, args.length);
assertEquals("bar", args[0]);
@@ -97,9 +98,8 @@ public class AnnotationMethodMessageMapperTests {
public void testPropertiesMethodWithNonPropertiesPayload() throws Exception {
Method method = TestHandler.class.getMethod("propertiesMethod", Properties.class);
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
Message<?> message = new StringMessage("test");
message.getHeader().setProperty("prop1", "foo");
message.getHeader().setProperty("prop2", "bar");
Message<String> message = MessageBuilder.fromPayload("test")
.setHeader("prop1", "foo").setHeader("prop2", "bar").build();
Object[] args = (Object[]) mapper.mapMessage(message);
Properties result = (Properties) args[0];
assertEquals(2, result.size());
@@ -114,9 +114,8 @@ public class AnnotationMethodMessageMapperTests {
Properties payload = new Properties();
payload.setProperty("prop1", "foo");
payload.setProperty("prop2", "bar");
Message<?> message = new GenericMessage<Properties>(payload);
message.getHeader().setProperty("prop1", "not");
message.getHeader().setProperty("prop2", "these");
Message<Properties> message = MessageBuilder.fromPayload(payload)
.setHeader("prop1", "not").setHeader("prop2", "these").build();
Object[] args = (Object[]) mapper.mapMessage(message);
Properties result = (Properties) args[0];
assertEquals(2, result.size());
@@ -129,12 +128,11 @@ public class AnnotationMethodMessageMapperTests {
public void testMapMethodWithNonMapPayload() throws Exception {
Method method = TestHandler.class.getMethod("mapMethod", Map.class);
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
Message<?> message = new StringMessage("test");
message.getHeader().setAttribute("attrib1", new Integer(123));
message.getHeader().setAttribute("attrib2", new Integer(456));
Message<String> message = MessageBuilder.fromPayload("test")
.setHeader("attrib1", new Integer(123))
.setHeader("attrib2", new Integer(456)).build();
Object[] args = (Object[]) mapper.mapMessage(message);
Map<String, Integer> result = (HashMap<String, Integer>) args[0];
assertEquals(2, result.size());
Map<String, Object> result = (Map<String, Object>) args[0];
assertEquals(new Integer(123), result.get("attrib1"));
assertEquals(new Integer(456), result.get("attrib2"));
}
@@ -147,9 +145,9 @@ public class AnnotationMethodMessageMapperTests {
Map<String, Integer> payload = new HashMap<String, Integer>();
payload.put("attrib1", new Integer(123));
payload.put("attrib2", new Integer(456));
Message<?> message = new GenericMessage<Map>(payload);
message.getHeader().setAttribute("attrib1", "not");
message.getHeader().setProperty("attrib2", "these");
Message<Map<String, Integer>> message = MessageBuilder.fromPayload(payload)
.setHeader("attrib1", new Integer(123))
.setHeader("attrib2", new Integer(456)).build();
Object[] args = (Object[]) mapper.mapMessage(message);
Map<String, Integer> result = (Map<String, Integer>) args[0];
assertEquals(2, result.size());
@@ -218,8 +216,8 @@ public class AnnotationMethodMessageMapperTests {
adapter.setObject(handler);
adapter.setMethod(method);
adapter.setMessageMapper(mapper);
Message<?> message = new StringMessage("foo");
message.getHeader().setAttribute("number", 42);
Message<String> message = MessageBuilder.fromPayload("foo")
.setHeader("number", 42).build();
Message<?> result = adapter.handle(message);
assertEquals("foo-42", result.getPayload());
}
@@ -233,9 +231,9 @@ public class AnnotationMethodMessageMapperTests {
adapter.setObject(handler);
adapter.setMethod(method);
adapter.setMessageMapper(mapper);
Message<?> message = new StringMessage("foo");
message.getHeader().setProperty("prop", "bar");
message.getHeader().setAttribute("number", 42);
Message<String> message = MessageBuilder.fromPayload("foo")
.setHeader("prop", "bar")
.setHeader("number", 42).build();
Message<?> result = adapter.handle(message);
assertEquals("bar-42", result.getPayload());
}

View File

@@ -1,97 +0,0 @@
/*
* Copyright 2002-2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
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;
import java.util.Set;
import org.junit.Test;
import org.springframework.integration.message.DefaultMessageHeader;
import org.springframework.integration.message.MessageHeader;
/**
* @author Mark Fisher
*/
public class DefaultMessageHeaderTests {
@Test
public void testTimestamp() {
MessageHeader header = new DefaultMessageHeader();
assertNotNull(header.getTimestamp());
}
@Test
public void testAttributes() {
MessageHeader header = new DefaultMessageHeader();
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 DefaultMessageHeader();
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 DefaultMessageHeader();
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 DefaultMessageHeader();
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);
}
}

View File

@@ -17,11 +17,9 @@
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;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
@@ -30,44 +28,18 @@ import org.junit.Test;
*/
public class GenericMessageTests {
private static final long ONE_MINUTE = 60 * 1000;
@Test
public void testExpiredMessage() {
GenericMessage<Integer> expiredMessage = new GenericMessage<Integer>(1);
Date past = new Date(System.currentTimeMillis() - ONE_MINUTE);
expiredMessage.getHeader().setExpiration(past);
assertTrue(expiredMessage.isExpired());
}
@Test
public void testUnexpiredMessage() {
GenericMessage<Integer> unexpiredMessage = new GenericMessage<Integer>(1);
Date future = new Date(System.currentTimeMillis() + ONE_MINUTE);
unexpiredMessage.getHeader().setExpiration(future);
assertFalse(unexpiredMessage.isExpired());
}
@Test
public void testMessageWithNullExpirationNeverExpires() {
GenericMessage<Integer> message = new GenericMessage<Integer>(1);
assertNull(message.getHeader().getExpiration());
assertFalse(message.isExpired());
}
@Test
public void testMessageHeaderCopied() {
MessageHeader header = new DefaultMessageHeader();
header.setAttribute("testAttribute", new Integer(123));
header.setProperty("testProperty", "foo");
header.setSequenceSize(42);
header.setSequenceNumber(24);
GenericMessage<String> message = new GenericMessage<String>("test", header);
assertEquals(new Integer(123), message.getHeader().getAttribute("testAttribute"));
assertEquals("foo", message.getHeader().getProperty("testProperty"));
assertEquals(42, message.getHeader().getSequenceSize());
assertEquals(24, message.getHeader().getSequenceNumber());
public void testMessageHeadersCopiedFromMap() {
Map<String, Object> headerMap = new HashMap<String, Object>();
headerMap.put("testAttribute", new Integer(123));
headerMap.put("testProperty", "foo");
headerMap.put(MessageHeaders.SEQUENCE_SIZE, 42);
headerMap.put(MessageHeaders.SEQUENCE_NUMBER, 24);
GenericMessage<String> message = new GenericMessage<String>("test", headerMap);
assertEquals(new Integer(123), message.getHeaders().get("testAttribute"));
assertEquals("foo", message.getHeaders().get("testProperty", String.class));
assertEquals(new Integer(42), message.getHeaders().getSequenceSize());
assertEquals(new Integer(24), message.getHeaders().getSequenceNumber());
}
}

View File

@@ -0,0 +1,73 @@
/*
* Copyright 2002-2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.integration.message;
import static org.junit.Assert.assertEquals;
import java.util.Date;
import org.junit.Test;
/**
* @author Mark Fisher
*/
public class MessageBuilderTests {
@Test
public void testSimpleMessageCreation() {
Message<String> message = MessageBuilder.fromPayload("foo").build();
assertEquals("foo", message.getPayload());
}
@Test
public void testHeaderValues() {
Message<String> message = MessageBuilder.fromPayload("test")
.setHeader("foo", "bar")
.setHeader("count", new Integer(123))
.build();
assertEquals("bar", message.getHeaders().get("foo", String.class));
assertEquals(new Integer(123), message.getHeaders().get("count", Integer.class));
}
@Test
public void testCopiedHeaderValues() {
Message<String> message1 = MessageBuilder.fromPayload("test1")
.setHeader("foo", "1")
.setHeader("bar", "2")
.build();
Message<String> message2 = MessageBuilder.fromPayload("test2")
.copyHeadersFromMessage(message1)
.setHeader("foo", "42")
.setHeaderIfAbsent("bar", "99")
.build();
assertEquals("test1", message1.getPayload());
assertEquals("test2", message2.getPayload());
assertEquals("1", message1.getHeaders().get("foo"));
assertEquals("42", message2.getHeaders().get("foo"));
assertEquals("2", message1.getHeaders().get("bar"));
assertEquals("2", message2.getHeaders().get("bar"));
}
@Test
public void testExpirationDate() {
Date past = new Date(System.currentTimeMillis() - (60 * 1000));
Message<Integer> expiredMessage = MessageBuilder.fromPayload(1)
.setExpirationDate(past).build();
assertEquals(past, expiredMessage.getHeaders().getExpirationDate());
}
}

View File

@@ -0,0 +1,93 @@
/*
* Copyright 2002-2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.integration.message;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.junit.Test;
/**
* @author Mark Fisher
*/
public class MessageHeadersTests {
@Test
public void testTimestamp() {
MessageHeaders headers = new MessageHeaders(null);
assertNotNull(headers.getTimestamp());
}
@Test
public void testNonTypedAccessOfHeaderValue() {
Integer value = new Integer(123);
Map<String, Object> map = new HashMap<String, Object>();
map.put("test", value);
MessageHeaders headers = new MessageHeaders(map);
assertEquals(value, headers.get("test"));
}
@Test
public void testTypedAccessOfHeaderValue() {
Integer value = new Integer(123);
Map<String, Object> map = new HashMap<String, Object>();
map.put("test", value);
MessageHeaders headers = new MessageHeaders(map);
assertEquals(value, headers.get("test", Integer.class));
}
@Test(expected = MessagingException.class)
public void testTypeMismatchWhenAccessingHeaderValue() {
Integer value = new Integer(123);
Map<String, Object> map = new HashMap<String, Object>();
map.put("test", value);
MessageHeaders headers = new MessageHeaders(map);
assertEquals(value, headers.get("test", String.class));
}
@Test
public void testNullHeaderValue() {
Map<String, Object> map = new HashMap<String, Object>();
MessageHeaders headers = new MessageHeaders(map);
assertNull(headers.get("nosuchattribute"));
}
@Test
public void testNullHeaderValueWithTypedAccess() {
Map<String, Object> map = new HashMap<String, Object>();
MessageHeaders headers = new MessageHeaders(map);
assertNull(headers.get("nosuchattribute", String.class));
}
@Test
public void testHeaderKeys() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("key1", "val1");
map.put("key2", new Integer(123));
MessageHeaders headers = new MessageHeaders(map);
Set<String> keys = headers.keySet();
assertTrue(keys.contains("key1"));
assertTrue(keys.contains("key2"));
}
}

View File

@@ -24,7 +24,7 @@ import java.util.Date;
import org.junit.Test;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.message.MessageBuilder;
/**
* @author Mark Fisher
@@ -34,8 +34,8 @@ public class UnexpiredMessageSelectorTests {
@Test
public void testExpiredMessageRejected() {
long past = System.currentTimeMillis() - 60000;
Message<?> message = new StringMessage("expired");
message.getHeader().setExpiration(new Date(past));
Message<String> message = MessageBuilder.fromPayload("expired")
.setExpirationDate(new Date(past)).build();
UnexpiredMessageSelector selector = new UnexpiredMessageSelector();
assertFalse(selector.accept(message));
}
@@ -43,8 +43,15 @@ public class UnexpiredMessageSelectorTests {
@Test
public void testUnexpiredMessageAccepted() {
long future = System.currentTimeMillis() + 60000;
Message<?> message = new StringMessage("unexpired");
message.getHeader().setExpiration(new Date(future));
Message<String> message = MessageBuilder.fromPayload("unexpired")
.setExpirationDate(new Date(future)).build();
UnexpiredMessageSelector selector = new UnexpiredMessageSelector();
assertTrue(selector.accept(message));
}
@Test
public void testMessageWithNullExpirationDateNeverExpires() {
Message<String> message = MessageBuilder.fromPayload("unexpired").build();
UnexpiredMessageSelector selector = new UnexpiredMessageSelector();
assertTrue(selector.accept(message));
}

View File

@@ -31,6 +31,7 @@ import org.junit.Test;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessageHandlingException;
import org.springframework.integration.message.StringMessage;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -215,11 +216,12 @@ public class AggregatingMessageHandlerTests {
private static Message<?> createMessage(String payload, Object correlationId,
int sequenceSize, int sequenceNumber, MessageChannel replyChannel) {
StringMessage message = new StringMessage(payload);
message.getHeader().setCorrelationId(correlationId);
message.getHeader().setSequenceSize(sequenceSize);
message.getHeader().setSequenceNumber(sequenceNumber);
message.getHeader().setReturnAddress(replyChannel);
Message<String> message = MessageBuilder.fromPayload(payload)
.setCorrelationId(correlationId)
.setSequenceSize(sequenceSize)
.setSequenceNumber(sequenceNumber)
.setReturnAddress(replyChannel)
.build();
return message;
}
@@ -263,7 +265,7 @@ public class AggregatingMessageHandlerTests {
try {
Message<?> result = this.aggregator.handle(message);
if (result != null) {
Object returnAddress = message.getHeader().getReturnAddress();
Object returnAddress = message.getHeaders().getReturnAddress();
if (returnAddress instanceof MessageChannel) {
((MessageChannel) returnAddress).send(result);
}

View File

@@ -194,20 +194,20 @@ public class CompletionStrategyAdapterTests {
private static class SimpleCompletionStrategy {
public boolean checkCompletenessOnNonParameterizedListOfMessages(List<Message> messages) {
public boolean checkCompletenessOnNonParameterizedListOfMessages(List<Message<?>> messages) {
Assert.assertTrue(messages.size() > 0);
return messages.size() > messages.iterator().next().getHeader().getSequenceSize();
return messages.size() > messages.iterator().next().getHeaders().getSequenceSize();
}
public boolean checkCompletenessOnListOfMessagesParametrizedWithWildcard(List<Message<?>> messages) {
Assert.assertTrue(messages.size() > 0);
return messages.size() > messages.iterator().next().getHeader().getSequenceSize();
return messages.size() > messages.iterator().next().getHeaders().getSequenceSize();
}
public boolean checkCompletenessOnListOfMessagesParametrizedWithString(
List<Message<String>> messages) {
Assert.assertTrue(messages.size() > 0);
return messages.size() > messages.iterator().next().getHeader().getSequenceSize();
return messages.size() > messages.iterator().next().getHeaders().getSequenceSize();
}
// Example for the case when completeness is checked on the structure of

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2007 the original author or authors.
* Copyright 2002-2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +20,8 @@ import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.StringMessage;
/**
@@ -30,30 +32,30 @@ public class MessageSequenceComparatorTests {
@Test
public void testLessThan() {
MessageSequenceComparator comparator = new MessageSequenceComparator();
StringMessage message1 = new StringMessage("test1");
message1.getHeader().setSequenceNumber(1);
StringMessage message2 = new StringMessage("test2");
message2.getHeader().setSequenceNumber(2);
Message<String> message1 = MessageBuilder.fromPayload("test1")
.setSequenceNumber(1).build();
Message<String> message2 = MessageBuilder.fromPayload("test2")
.setSequenceNumber(2).build();
assertEquals(-1, comparator.compare(message1, message2));
}
@Test
public void testEqual() {
MessageSequenceComparator comparator = new MessageSequenceComparator();
StringMessage message1 = new StringMessage("test1");
message1.getHeader().setSequenceNumber(3);
StringMessage message2 = new StringMessage("test2");
message2.getHeader().setSequenceNumber(3);
Message<String> message1 = MessageBuilder.fromPayload("test1")
.setSequenceNumber(3).build();
Message<String> message2 = MessageBuilder.fromPayload("test2")
.setSequenceNumber(3).build();
assertEquals(0, comparator.compare(message1, message2));
}
@Test
public void testGreaterThan() {
MessageSequenceComparator comparator = new MessageSequenceComparator();
StringMessage message1 = new StringMessage("test1");
message1.getHeader().setSequenceNumber(5);
StringMessage message2 = new StringMessage("test2");
message2.getHeader().setSequenceNumber(3);
Message<String> message1 = MessageBuilder.fromPayload("test1")
.setSequenceNumber(5).build();
Message<String> message2 = MessageBuilder.fromPayload("test2")
.setSequenceNumber(3).build();
assertEquals(1, comparator.compare(message1, message2));
}

View File

@@ -53,7 +53,7 @@ public class MultiChannelRouterTests {
MultiChannelRouter router = new MultiChannelRouter();
router.setChannelResolver(channelResolver);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
Message<?> result1 = channel1.receive(25);
assertNotNull(result1);
@@ -79,7 +79,7 @@ public class MultiChannelRouterTests {
router.setChannelNameResolver(channelNameResolver);
router.setChannelRegistry(channelRegistry);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
Message<?> result1 = channel1.receive(25);
assertNotNull(result1);
@@ -117,7 +117,7 @@ public class MultiChannelRouterTests {
MultiChannelRouter router = new MultiChannelRouter();
router.setChannelResolver(channelResolver);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
}
@@ -132,7 +132,7 @@ public class MultiChannelRouterTests {
router.setChannelResolver(channelResolver);
router.setResolutionRequired(true);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
}
@@ -148,7 +148,7 @@ public class MultiChannelRouterTests {
router.setChannelNameResolver(channelNameResolver);
router.setChannelRegistry(channelRegistry);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
}
@@ -165,7 +165,7 @@ public class MultiChannelRouterTests {
router.setChannelRegistry(channelRegistry);
router.setResolutionRequired(true);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
}

View File

@@ -48,7 +48,7 @@ public class RecipientListRouterTests {
RecipientListRouter router = new RecipientListRouter();
router.setChannels(channels);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
Message<?> result1 = channel1.receive(25);
assertNotNull(result1);
@@ -69,7 +69,7 @@ public class RecipientListRouterTests {
router.setChannelNames(new String[] {"channel1", "channel2"});
router.setChannelRegistry(channelRegistry);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
Message<?> result1 = channel1.receive(25);
assertNotNull(result1);
@@ -90,7 +90,7 @@ public class RecipientListRouterTests {
router.setChannelNames(new String[] {"channel1"});
router.setChannelRegistry(channelRegistry);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
Message<?> result1 = channel1.receive(25);
assertNotNull(result1);

View File

@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.integration.router;
import java.util.concurrent.CountDownLatch;
@@ -27,7 +28,7 @@ import org.junit.Test;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.message.MessageBuilder;
/**
* @author Marius Bogoevici
@@ -51,11 +52,11 @@ public class ResequencerMessageHandlerTests {
Message<?> reply2 = replyChannel.receive(500);
Message<?> reply3 = replyChannel.receive(500);
assertNotNull(reply1);
assertEquals(1, reply1.getHeader().getSequenceNumber());
assertEquals(new Integer(1), reply1.getHeaders().getSequenceNumber());
assertNotNull(reply2);
assertEquals(2, reply2.getHeader().getSequenceNumber());
assertEquals(new Integer(2), reply2.getHeaders().getSequenceNumber());
assertNotNull(reply3);
assertEquals(3, reply3.getHeader().getSequenceNumber());
assertEquals(new Integer(3), reply3.getHeaders().getSequenceNumber());
}
@Test
@@ -77,9 +78,9 @@ public class ResequencerMessageHandlerTests {
Message<?> reply3 = replyChannel.receive(500);
// only messages 1 and 2 must have been received by now
assertNotNull(reply1);
assertEquals(1, reply1.getHeader().getSequenceNumber());
assertEquals(new Integer(1), reply1.getHeaders().getSequenceNumber());
assertNotNull(reply2);
assertEquals(2, reply2.getHeader().getSequenceNumber());
assertEquals(new Integer(2), reply2.getHeaders().getSequenceNumber());
assertNull(reply3);
// when sending the last message, the whole sequence must have been sent
latch = new CountDownLatch(1);
@@ -88,9 +89,9 @@ public class ResequencerMessageHandlerTests {
reply3 = replyChannel.receive(500);
Message<?> reply4 = replyChannel.receive(500);
assertNotNull(reply3);
assertEquals(3, reply3.getHeader().getSequenceNumber());
assertEquals(new Integer(3), reply3.getHeaders().getSequenceNumber());
assertNotNull(reply4);
assertEquals(4, reply4.getHeader().getSequenceNumber());
assertEquals(new Integer(4), reply4.getHeaders().getSequenceNumber());
}
@@ -124,23 +125,25 @@ public class ResequencerMessageHandlerTests {
reply3 = replyChannel.receive(500);
Message<?> reply4 = replyChannel.receive(500);
assertNotNull(reply1);
assertEquals(1, reply1.getHeader().getSequenceNumber());
assertEquals(new Integer(1), reply1.getHeaders().getSequenceNumber());
assertNotNull(reply2);
assertEquals(2, reply2.getHeader().getSequenceNumber());
assertEquals(new Integer(2), reply2.getHeaders().getSequenceNumber());
assertNotNull(reply3);
assertEquals(3, reply3.getHeader().getSequenceNumber());
assertEquals(new Integer(3), reply3.getHeaders().getSequenceNumber());
assertNotNull(reply4);
assertEquals(4, reply4.getHeader().getSequenceNumber());
assertEquals(new Integer(4), reply4.getHeaders().getSequenceNumber());
}
private static Message<?> createMessage(String payload, Object correlationId,
int sequenceSize, int sequenceNumber, MessageChannel replyChannel) {
StringMessage message = new StringMessage(payload);
message.getHeader().setCorrelationId(correlationId);
message.getHeader().setSequenceSize(sequenceSize);
message.getHeader().setSequenceNumber(sequenceNumber);
message.getHeader().setReturnAddress(replyChannel);
Message<String> message = MessageBuilder.fromPayload(payload)
.setCorrelationId(correlationId)
.setSequenceSize(sequenceSize)
.setSequenceNumber(sequenceNumber)
.setReturnAddress(replyChannel)
.build();
return message;
}
}

View File

@@ -36,6 +36,7 @@ import org.springframework.integration.handler.annotation.HeaderAttribute;
import org.springframework.integration.handler.annotation.HeaderProperty;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.StringMessage;
/**
@@ -59,7 +60,7 @@ public class RouterMessageHandlerAdapterTests {
}
private void doTestChannelNameResolutionByPayload(RouterMessageHandlerAdapter adapter) {
Message<String> message = new GenericMessage<String>("123", "bar");
Message<String> message = new GenericMessage<String>("bar");
QueueChannel barChannel = new QueueChannel();
ChannelRegistry channelRegistry = new DefaultChannelRegistry();
channelRegistry.registerChannel("bar-channel", barChannel);
@@ -72,12 +73,12 @@ public class RouterMessageHandlerAdapterTests {
}
@Test
public void testChannelNameResolutionByProperty() throws Exception {
public void testChannelNameResolutionByHeader() throws Exception {
SingleChannelNameRoutingTestBean testBean = new SingleChannelNameRoutingTestBean();
Method routingMethod = testBean.getClass().getMethod("routeByProperty", String.class);
RouterMessageHandlerAdapter adapter = new RouterMessageHandlerAdapter(testBean, routingMethod);
Message<String> message = new GenericMessage<String>("123", "bar");
message.getHeader().setProperty("returnAddress", "baz");
Message<String> message = MessageBuilder.fromPayload("bar")
.setHeader("returnAddress", "baz").build();
QueueChannel barChannel = new QueueChannel();
QueueChannel bazChannel = new QueueChannel();
ChannelRegistry channelRegistry = new DefaultChannelRegistry();
@@ -93,40 +94,13 @@ public class RouterMessageHandlerAdapterTests {
assertEquals("bar", message2.getPayload());
}
@Test
public void testChannelNameResolutionByAttribute() throws Exception {
SingleChannelNameRoutingTestBean testBean = new SingleChannelNameRoutingTestBean();
Method routingMethod = testBean.getClass().getMethod("routeByAttribute", String.class);
RouterMessageHandlerAdapter adapter = new RouterMessageHandlerAdapter(testBean, routingMethod);
Message<String> message = new GenericMessage<String>("123", "bar");
message.getHeader().setProperty("returnAddress", "bad");
message.getHeader().setAttribute("returnAddress", "baz");
QueueChannel barChannel = new QueueChannel();
QueueChannel badChannel = new QueueChannel();
QueueChannel bazChannel = new QueueChannel();
ChannelRegistry channelRegistry = new DefaultChannelRegistry();
channelRegistry.registerChannel("bar-channel", barChannel);
channelRegistry.registerChannel("bad-channel", badChannel);
channelRegistry.registerChannel("baz-channel", bazChannel);
adapter.setChannelRegistry(channelRegistry);
adapter.afterPropertiesSet();
adapter.handle(message);
Message<?> message1 = barChannel.receive(0);
assertNull(message1);
Message<?> message2 = badChannel.receive(0);
assertNull(message2);
Message<?> message3 = bazChannel.receive(0);
assertNotNull(message3);
assertEquals("bar", message3.getPayload());
}
@Test(expected=ConfigurationException.class)
public void testFailsWhenPropertyAndAttributeAreBothProvided() throws Exception {
InvalidRoutingTestBean testBean = new InvalidRoutingTestBean();
Method routingMethod = testBean.getClass().getMethod("tooManyAnnotations", String.class);
RouterMessageHandlerAdapter adapter = new RouterMessageHandlerAdapter(testBean, routingMethod);
adapter.afterPropertiesSet();
adapter.handle(new GenericMessage<String>("123", "testing"));
adapter.handle(new GenericMessage<String>("testing"));
}
@Test

View File

@@ -25,7 +25,7 @@ import java.util.List;
import org.junit.Test;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.message.MessageBuilder;
/**
* @author Mark Fisher
@@ -34,8 +34,8 @@ public class SequenceSizeCompletionStrategyTests {
@Test
public void testIncompleteList() {
Message<?> message = new StringMessage("test1");
message.getHeader().setSequenceSize(2);
Message<String> message = MessageBuilder.fromPayload("test1")
.setSequenceSize(2).build();
List<Message<?>> messages = new ArrayList<Message<?>>();
messages.add(message);
SequenceSizeCompletionStrategy completionStrategy = new SequenceSizeCompletionStrategy();
@@ -44,10 +44,10 @@ public class SequenceSizeCompletionStrategyTests {
@Test
public void testCompleteList() {
Message<?> message1 = new StringMessage("test1");
message1.getHeader().setSequenceSize(2);
Message<?> message2 = new StringMessage("test2");
message2.getHeader().setSequenceSize(2);
Message<String> message1 = MessageBuilder.fromPayload("test1")
.setSequenceSize(2).build();
Message<String> message2 = MessageBuilder.fromPayload("test2")
.setSequenceSize(2).build();
List<Message<?>> messages = new ArrayList<Message<?>>();
messages.add(message1);
messages.add(message2);

View File

@@ -46,7 +46,7 @@ public class SingleChannelRouterTests {
SingleChannelRouter router = new SingleChannelRouter();
router.setChannelResolver(channelResolver);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
Message<?> result = channel.receive(25);
assertNotNull(result);
@@ -67,7 +67,7 @@ public class SingleChannelRouterTests {
router.setChannelNameResolver(channelNameResolver);
router.setChannelRegistry(channelRegistry);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
Message<?> result = channel.receive(25);
assertNotNull(result);
@@ -102,7 +102,7 @@ public class SingleChannelRouterTests {
SingleChannelRouter router = new SingleChannelRouter();
router.setChannelResolver(channelResolver);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
}
@@ -117,7 +117,7 @@ public class SingleChannelRouterTests {
router.setChannelResolver(channelResolver);
router.setResolutionRequired(true);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
}
@@ -133,7 +133,7 @@ public class SingleChannelRouterTests {
router.setChannelNameResolver(channelNameResolver);
router.setChannelRegistry(channelRegistry);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
}
@@ -150,7 +150,7 @@ public class SingleChannelRouterTests {
router.setChannelRegistry(channelRegistry);
router.setResolutionRequired(true);
router.afterPropertiesSet();
Message<String> message = new StringMessage("123", "test");
Message<String> message = new StringMessage("test");
router.handle(message);
}

View File

@@ -223,14 +223,14 @@ public class SplitterMessageHandlerAdapterTests {
adapter.handle(message);
Message<?> reply1 = testChannel.receive(0);
assertNotNull(reply1);
assertEquals(2, reply1.getHeader().getSequenceSize());
assertEquals(1, reply1.getHeader().getSequenceNumber());
assertEquals(message.getId(), reply1.getHeader().getCorrelationId());
assertEquals(new Integer(2), reply1.getHeaders().getSequenceSize());
assertEquals(new Integer(1), reply1.getHeaders().getSequenceNumber());
assertEquals(message.getId(), reply1.getHeaders().getCorrelationId());
Message<?> reply2 = testChannel.receive(0);
assertNotNull(reply2);
assertEquals(2, reply2.getHeader().getSequenceSize());
assertEquals(2, reply2.getHeader().getSequenceNumber());
assertEquals(message.getId(), reply2.getHeader().getCorrelationId());
assertEquals(new Integer(2), reply2.getHeaders().getSequenceSize());
assertEquals(new Integer(2), reply2.getHeaders().getSequenceNumber());
assertEquals(message.getId(), reply2.getHeaders().getCorrelationId());
}
@Test
@@ -240,14 +240,14 @@ public class SplitterMessageHandlerAdapterTests {
adapter.handle(message);
Message<?> reply1 = testChannel.receive(0);
assertNotNull(reply1);
assertEquals(2, reply1.getHeader().getSequenceSize());
assertEquals(1, reply1.getHeader().getSequenceNumber());
assertEquals(message.getId(), reply1.getHeader().getCorrelationId());
assertEquals(new Integer(2), reply1.getHeaders().getSequenceSize());
assertEquals(new Integer(1), reply1.getHeaders().getSequenceNumber());
assertEquals(message.getId(), reply1.getHeaders().getCorrelationId());
Message<?> reply2 = testChannel.receive(0);
assertNotNull(reply2);
assertEquals(2, reply2.getHeader().getSequenceSize());
assertEquals(2, reply2.getHeader().getSequenceNumber());
assertEquals(message.getId(), reply2.getHeader().getCorrelationId());
assertEquals(new Integer(2), reply2.getHeaders().getSequenceSize());
assertEquals(new Integer(2), reply2.getHeaders().getSequenceNumber());
assertEquals(message.getId(), reply2.getHeaders().getCorrelationId());
}

View File

@@ -29,6 +29,7 @@ import org.springframework.integration.handler.annotation.HeaderAttribute;
import org.springframework.integration.handler.annotation.HeaderProperty;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessageHandlingException;
import org.springframework.integration.message.MessagingException;
import org.springframework.integration.message.StringMessage;
@@ -76,65 +77,54 @@ public class AnnotationMethodTransformerAdapterTests {
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
adapter.setObject(testBean);
adapter.setMethod(testBean.getClass().getMethod("attributeTest", String.class, Integer.class));
Message<?> message = new StringMessage("foo");
message.getHeader().setAttribute("number", 123);
Message<String> message = MessageBuilder.fromPayload("foo")
.setHeader("number", 123).build();
Message<?> result = adapter.handle(message);
assertEquals("foo123", result.getPayload());
}
@Test(expected=MessageHandlingException.class)
public void testHeaderAttributeNotProvided() throws Exception {
public void testHeaderValueNotProvided() throws Exception {
TestBean testBean = new TestBean();
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
adapter.setObject(testBean);
adapter.setMethod(testBean.getClass().getMethod("attributeTest", String.class, Integer.class));
Message<?> message = new StringMessage("foo");
message.getHeader().setAttribute("wrong", 123);
Message<String> message = MessageBuilder.fromPayload("foo")
.setHeader("wrong", 123).build();
adapter.handle(message);
}
@Test
public void testHeaderPropertyAnnotation() throws Exception {
public void testHeaderAnnotation() throws Exception {
TestBean testBean = new TestBean();
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
adapter.setObject(testBean);
adapter.setMethod(testBean.getClass().getMethod("propertyTest", String.class, String.class));
Message<?> message = new StringMessage("foo");
message.getHeader().setProperty("suffix", "bar");
Message<String> message = MessageBuilder.fromPayload("foo")
.setHeader("suffix", "bar").build();
Message<?> result = adapter.handle(message);
assertEquals("foobar", result.getPayload());
}
@Test(expected=MessageHandlingException.class)
public void testHeaderPropertyNotAvailable() throws Exception {
TestBean testBean = new TestBean();
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
adapter.setObject(testBean);
adapter.setMethod(testBean.getClass().getMethod("propertyTest", String.class, String.class));
Message<?> message = new StringMessage("foo");
message.getHeader().setProperty("wrong", "bar");
adapter.handle(message);
}
@Test
public void testPropertyEnricher() throws Exception {
public void testHeaderEnricher() throws Exception {
TestBean testBean = new TestBean();
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
adapter.setObject(testBean);
adapter.setMethod(testBean.getClass().getMethod("propertyEnricherTest", String.class));
Message<?> message = new StringMessage("test");
message.getHeader().setProperty("prop1", "bad");
message.getHeader().setProperty("prop3", "baz");
Message<String> message = MessageBuilder.fromPayload("test")
.setHeader("prop1", "bad")
.setHeader("prop3", "baz").build();
Message<?> result = adapter.handle(message);
assertEquals("test", result.getPayload());
assertEquals("foo", result.getHeader().getProperty("prop1"));
assertEquals("bar", result.getHeader().getProperty("prop2"));
assertEquals("baz", result.getHeader().getProperty("prop3"));
assertEquals("foo", result.getHeaders().get("prop1"));
assertEquals("bar", result.getHeaders().get("prop2"));
assertEquals("baz", result.getHeaders().get("prop3"));
}
@Test
@SuppressWarnings("unchecked")
public void testPropertyPayload() throws Exception {
public void testPropertiesPayload() throws Exception {
TestBean testBean = new TestBean();
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
adapter.setObject(testBean);
@@ -149,9 +139,9 @@ public class AnnotationMethodTransformerAdapterTests {
assertEquals("foo", payload.getProperty("prop1"));
assertEquals("bar", payload.getProperty("prop2"));
assertEquals("baz", payload.getProperty("prop3"));
assertNull(result.getHeader().getProperty("prop1"));
assertNull(result.getHeader().getProperty("prop2"));
assertNull(result.getHeader().getProperty("prop3"));
assertNull(result.getHeaders().get("prop1"));
assertNull(result.getHeaders().get("prop2"));
assertNull(result.getHeaders().get("prop3"));
}