Added the 'replyChannel' property to MessageHeader. It takes precedence over the 'replyChannelName' when DefaultMessageEndpoint resolves the channel for reply Messages.

This commit is contained in:
Mark Fisher
2008-01-31 23:14:47 +00:00
parent 1f5e7b5756
commit 753a67b8a4
3 changed files with 68 additions and 6 deletions

View File

@@ -70,6 +70,26 @@ public class DefaultMessageEndpointTests {
@Test
public void testExplicitReplyChannel() throws Exception {
final MessageChannel replyChannel = new SimpleChannel();
MessageHandler handler = new MessageHandler() {
public Message<?> handle(Message<?> message) {
return new StringMessage("123", "hello " + message.getPayload());
}
};
DefaultMessageEndpoint endpoint = new DefaultMessageEndpoint();
endpoint.setHandler(handler);
endpoint.start();
StringMessage testMessage = new StringMessage(1, "test");
testMessage.getHeader().setReplyChannel(replyChannel);
endpoint.handle(testMessage);
endpoint.stop();
Message<?> reply = replyChannel.receive(50);
assertNotNull(reply);
assertEquals("hello test", reply.getPayload());
}
@Test
public void testExplicitReplyChannelName() throws Exception {
final MessageChannel replyChannel = new SimpleChannel();
ChannelRegistry channelRegistry = new DefaultChannelRegistry();
channelRegistry.registerChannel("replyChannel", replyChannel);
@@ -91,6 +111,32 @@ public class DefaultMessageEndpointTests {
assertEquals("hello test", reply.getPayload());
}
@Test
public void testReplyChannelTakesPrecedenceOverReplyChannelName() throws Exception {
final MessageChannel replyChannel1 = new SimpleChannel();
final MessageChannel replyChannel2 = new SimpleChannel();
ChannelRegistry channelRegistry = new DefaultChannelRegistry();
channelRegistry.registerChannel("replyChannel2", replyChannel2);
MessageHandler handler = new MessageHandler() {
public Message<?> handle(Message<?> message) {
return new StringMessage("123", "hello " + message.getPayload());
}
};
DefaultMessageEndpoint endpoint = new DefaultMessageEndpoint();
endpoint.setHandler(handler);
endpoint.start();
StringMessage testMessage = new StringMessage(1, "test");
testMessage.getHeader().setReplyChannel(replyChannel1);
testMessage.getHeader().setReplyChannelName("replyChannel2");
endpoint.handle(testMessage);
endpoint.stop();
Message<?> reply1 = replyChannel1.receive(50);
assertNotNull(reply1);
assertEquals("hello test", reply1.getPayload());
Message<?> reply2 = replyChannel2.receive(0);
assertNull(reply2);
}
@Test
public void testCustomErrorHandler() throws InterruptedException {
DefaultMessageEndpoint endpoint = new DefaultMessageEndpoint();