ChannelMapping is now ChannelResolver, the BeanNameChannelResolver implementation is now BeanFactoryChannelResolver, and the AbstractChannelMappingMessageRouter base class is now AbstractChannelNameResolvingMessageRouter. The naming is primarily intended to be consistent with DestinationResolver in Spring's JMS support with the ChannelResolver's method name being 'resolveChannelName()' and its return value being a MessageChannel instance. Also, added a ChannelResolutionException.

This commit is contained in:
Mark Fisher
2008-10-12 17:15:29 +00:00
parent 5c5b414cc4
commit 0754889c5c
17 changed files with 312 additions and 240 deletions

View File

@@ -19,18 +19,18 @@ package org.springframework.integration.channel;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.springframework.integration.router.ChannelMapping;
import org.springframework.integration.router.ChannelResolver;
import org.springframework.util.Assert;
/**
* @author Mark Fisher
*/
public class TestChannelMapping implements ChannelMapping {
public class TestChannelResolver implements ChannelResolver {
private final Map<String, MessageChannel> channels = new ConcurrentHashMap<String, MessageChannel>();
public MessageChannel getChannel(String channelName) {
public MessageChannel resolveChannelName(String channelName) {
return this.channels.get(channelName);
}

View File

@@ -29,7 +29,7 @@ import org.junit.Test;
import org.springframework.integration.annotation.Header;
import org.springframework.integration.channel.ChannelRegistry;
import org.springframework.integration.channel.ChannelRegistryAware;
import org.springframework.integration.channel.TestChannelMapping;
import org.springframework.integration.channel.TestChannelResolver;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.message.GenericMessage;
@@ -47,12 +47,12 @@ public class MethodInvokingRouterTests {
public void channelNameResolutionByPayloadConfiguredByMethodReference() throws Exception {
QueueChannel barChannel = new QueueChannel();
barChannel.setBeanName("bar-channel");
TestChannelMapping channelMapping = new TestChannelMapping();
channelMapping.addChannel(barChannel);
TestChannelResolver channelResolver = new TestChannelResolver();
channelResolver.addChannel(barChannel);
SingleChannelNameRoutingTestBean testBean = new SingleChannelNameRoutingTestBean();
Method routingMethod = testBean.getClass().getMethod("routePayload", String.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
router.setChannelMapping(channelMapping);
router.setChannelResolver(channelResolver);
Message<String> message = new GenericMessage<String>("bar");
router.onMessage(message);
Message<?> replyMessage = barChannel.receive();
@@ -64,11 +64,11 @@ public class MethodInvokingRouterTests {
public void channelNameResolutionByPayloadConfiguredByMethodName() {
QueueChannel barChannel = new QueueChannel();
barChannel.setBeanName("bar-channel");
TestChannelMapping channelMapping = new TestChannelMapping();
channelMapping.addChannel(barChannel);
TestChannelResolver channelResolver = new TestChannelResolver();
channelResolver.addChannel(barChannel);
SingleChannelNameRoutingTestBean testBean = new SingleChannelNameRoutingTestBean();
MethodInvokingRouter router = new MethodInvokingRouter(testBean, "routePayload");
router.setChannelMapping(channelMapping);
router.setChannelResolver(channelResolver);
Message<String> message = new GenericMessage<String>("bar");
router.onMessage(message);
Message<?> replyMessage = barChannel.receive();
@@ -82,13 +82,13 @@ public class MethodInvokingRouterTests {
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
TestChannelMapping channelMapping = new TestChannelMapping();
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
TestChannelResolver channelResolver = new TestChannelResolver();
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
SingleChannelNameRoutingTestBean testBean = new SingleChannelNameRoutingTestBean();
Method routingMethod = testBean.getClass().getMethod("routeByHeader", String.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
router.setChannelMapping(channelMapping);
router.setChannelResolver(channelResolver);
Message<String> message = MessageBuilder.withPayload("bar")
.setHeader("targetChannel", "foo").build();
router.onMessage(message);
@@ -127,10 +127,10 @@ public class MethodInvokingRouterTests {
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
TestChannelMapping channelMapping = new TestChannelMapping();
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
router.setChannelMapping(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
router.setChannelResolver(channelResolver);
Message<String> fooMessage = new StringMessage("foo");
Message<String> barMessage = new StringMessage("bar");
Message<String> badMessage = new StringMessage("bad");
@@ -147,22 +147,22 @@ public class MethodInvokingRouterTests {
@Test
public void channelInstanceResolutionByPayloadConfiguredByMethodReference() throws Exception {
TestChannelMapping channelMapping = new TestChannelMapping();
SingleChannelInstanceRoutingTestBean testBean = new SingleChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
SingleChannelInstanceRoutingTestBean testBean = new SingleChannelInstanceRoutingTestBean(channelResolver);
Method routingMethod = testBean.getClass().getMethod("routePayload", String.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
this.doTestChannelInstanceResolutionByPayload(router, channelMapping);
this.doTestChannelInstanceResolutionByPayload(router, channelResolver);
}
@Test
public void channelInstanceResolutionByPayloadConfiguredByMethodName() {
TestChannelMapping channelMapping = new TestChannelMapping();
SingleChannelInstanceRoutingTestBean testBean = new SingleChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
SingleChannelInstanceRoutingTestBean testBean = new SingleChannelInstanceRoutingTestBean(channelResolver);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, "routePayload");
this.doTestChannelInstanceResolutionByPayload(router, channelMapping);
this.doTestChannelInstanceResolutionByPayload(router, channelResolver);
}
private void doTestChannelInstanceResolutionByPayload(MethodInvokingRouter router, TestChannelMapping channelMapping) {
private void doTestChannelInstanceResolutionByPayload(MethodInvokingRouter router, TestChannelResolver channelResolver) {
Message<String> fooMessage = new StringMessage("foo");
Message<String> barMessage = new StringMessage("bar");
Message<String> badMessage = new StringMessage("bad");
@@ -170,9 +170,9 @@ public class MethodInvokingRouterTests {
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
router.setChannelMapping(channelMapping);
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
router.setChannelResolver(channelResolver);
router.onMessage(fooMessage);
Message<?> result1 = fooChannel.receive(0);
assertNotNull(result1);
@@ -186,29 +186,29 @@ public class MethodInvokingRouterTests {
@Test
public void channelInstanceResolutionByMessageConfiguredByMethodReference() throws Exception {
TestChannelMapping channelMapping = new TestChannelMapping();
SingleChannelInstanceRoutingTestBean testBean = new SingleChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
SingleChannelInstanceRoutingTestBean testBean = new SingleChannelInstanceRoutingTestBean(channelResolver);
Method routingMethod = testBean.getClass().getMethod("routeMessage", Message.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
this.doTestChannelInstanceResolutionByMessage(router, channelMapping);
this.doTestChannelInstanceResolutionByMessage(router, channelResolver);
}
@Test
public void channelInstanceResolutionByMessageConfiguredByMethodName() {
TestChannelMapping channelMapping = new TestChannelMapping();
SingleChannelInstanceRoutingTestBean testBean = new SingleChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
SingleChannelInstanceRoutingTestBean testBean = new SingleChannelInstanceRoutingTestBean(channelResolver);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, "routeMessage");
this.doTestChannelInstanceResolutionByMessage(router, channelMapping);
this.doTestChannelInstanceResolutionByMessage(router, channelResolver);
}
private void doTestChannelInstanceResolutionByMessage(MethodInvokingRouter router, TestChannelMapping channelMapping) {
private void doTestChannelInstanceResolutionByMessage(MethodInvokingRouter router, TestChannelResolver channelResolver) {
QueueChannel fooChannel = new QueueChannel();
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
router.setChannelMapping(channelMapping);
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
router.setChannelResolver(channelResolver);
Message<String> fooMessage = new StringMessage("foo");
Message<String> barMessage = new StringMessage("bar");
Message<String> badMessage = new StringMessage("bad");
@@ -225,29 +225,29 @@ public class MethodInvokingRouterTests {
@Test
public void multiChannelNameResolutionByPayloadConfiguredByMethodReference() throws Exception {
TestChannelMapping channelMapping = new TestChannelMapping();
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelNameRoutingTestBean testBean = new MultiChannelNameRoutingTestBean();
Method routingMethod = testBean.getClass().getMethod("routePayload", String.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
this.doTestMultiChannelNameResolutionByPayload(router, channelMapping);
this.doTestMultiChannelNameResolutionByPayload(router, channelResolver);
}
@Test
public void multiChannelNameResolutionByPayloadConfiguredByMethodName() {
TestChannelMapping channelMapping = new TestChannelMapping();
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelNameRoutingTestBean testBean = new MultiChannelNameRoutingTestBean();
MethodInvokingRouter router = new MethodInvokingRouter(testBean, "routePayload");
this.doTestMultiChannelNameResolutionByPayload(router, channelMapping);
this.doTestMultiChannelNameResolutionByPayload(router, channelResolver);
}
private void doTestMultiChannelNameResolutionByPayload(MethodInvokingRouter router, TestChannelMapping channelMapping) {
private void doTestMultiChannelNameResolutionByPayload(MethodInvokingRouter router, TestChannelResolver channelResolver) {
QueueChannel fooChannel = new QueueChannel();
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
router.setChannelMapping(channelMapping);
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
router.setChannelResolver(channelResolver);
Message<String> fooMessage = new StringMessage("foo");
Message<String> barMessage = new StringMessage("bar");
Message<String> badMessage = new StringMessage("bad");
@@ -270,29 +270,29 @@ public class MethodInvokingRouterTests {
@Test
public void multiChannelNameResolutionByMessageConfiguredByMethodReference() throws Exception {
TestChannelMapping channelMapping = new TestChannelMapping();
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelNameRoutingTestBean testBean = new MultiChannelNameRoutingTestBean();
Method routingMethod = testBean.getClass().getMethod("routeMessage", Message.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
this.doTestMultiChannelNameResolutionByMessage(router, channelMapping);
this.doTestMultiChannelNameResolutionByMessage(router, channelResolver);
}
@Test
public void multiChannelNameResolutionByMessageConfiguredByMethodName() throws Exception {
TestChannelMapping channelMapping = new TestChannelMapping();
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelNameRoutingTestBean testBean = new MultiChannelNameRoutingTestBean();
MethodInvokingRouter router = new MethodInvokingRouter(testBean, "routeMessage");
this.doTestMultiChannelNameResolutionByMessage(router, channelMapping);
this.doTestMultiChannelNameResolutionByMessage(router, channelResolver);
}
private void doTestMultiChannelNameResolutionByMessage(MethodInvokingRouter router, TestChannelMapping channelMapping) {
private void doTestMultiChannelNameResolutionByMessage(MethodInvokingRouter router, TestChannelResolver channelResolver) {
QueueChannel fooChannel = new QueueChannel();
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
router.setChannelMapping(channelMapping);
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
router.setChannelResolver(channelResolver);
Message<String> fooMessage = new StringMessage("foo");
Message<String> barMessage = new StringMessage("bar");
Message<String> badMessage = new StringMessage("bad");
@@ -315,29 +315,29 @@ public class MethodInvokingRouterTests {
@Test
public void multiChannelNameArrayResolutionByMessageConfiguredByMethodReference() throws Exception {
TestChannelMapping channelMapping = new TestChannelMapping();
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelNameRoutingTestBean testBean = new MultiChannelNameRoutingTestBean();
Method routingMethod = testBean.getClass().getMethod("routeMessageToArray", Message.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
this.doTestMultiChannelNameArrayResolutionByMessage(router, channelMapping);
this.doTestMultiChannelNameArrayResolutionByMessage(router, channelResolver);
}
@Test
public void multiChannelNameArrayResolutionByMessageConfiguredByMethodName() {
TestChannelMapping channelMapping = new TestChannelMapping();
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelNameRoutingTestBean testBean = new MultiChannelNameRoutingTestBean();
MethodInvokingRouter router = new MethodInvokingRouter(testBean, "routeMessageToArray");
this.doTestMultiChannelNameArrayResolutionByMessage(router, channelMapping);
this.doTestMultiChannelNameArrayResolutionByMessage(router, channelResolver);
}
private void doTestMultiChannelNameArrayResolutionByMessage(MethodInvokingRouter router, TestChannelMapping channelMapping) {
private void doTestMultiChannelNameArrayResolutionByMessage(MethodInvokingRouter router, TestChannelResolver channelResolver) {
QueueChannel fooChannel = new QueueChannel();
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
router.setChannelMapping(channelMapping);
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
router.setChannelResolver(channelResolver);
Message<String> fooMessage = new StringMessage("foo");
Message<String> barMessage = new StringMessage("bar");
Message<String> badMessage = new StringMessage("bad");
@@ -360,29 +360,29 @@ public class MethodInvokingRouterTests {
@Test
public void multiChannelListResolutionByPayloadConfiguredByMethodReference() throws Exception {
TestChannelMapping channelMapping = new TestChannelMapping();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelResolver);
Method routingMethod = testBean.getClass().getMethod("routePayload", String.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
this.doTestMultiChannelListResolutionByPayload(router, channelMapping);
this.doTestMultiChannelListResolutionByPayload(router, channelResolver);
}
@Test
public void multiChannelListResolutionByPayloadConfiguredByMethodName() {
TestChannelMapping channelMapping = new TestChannelMapping();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelResolver);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, "routePayload");
this.doTestMultiChannelListResolutionByPayload(router, channelMapping);
this.doTestMultiChannelListResolutionByPayload(router, channelResolver);
}
private void doTestMultiChannelListResolutionByPayload(MethodInvokingRouter router, TestChannelMapping channelMapping) {
private void doTestMultiChannelListResolutionByPayload(MethodInvokingRouter router, TestChannelResolver channelResolver) {
QueueChannel fooChannel = new QueueChannel();
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
router.setChannelMapping(channelMapping);
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
router.setChannelResolver(channelResolver);
Message<String> fooMessage = new StringMessage("foo");
Message<String> barMessage = new StringMessage("bar");
Message<String> badMessage = new StringMessage("bad");
@@ -405,29 +405,29 @@ public class MethodInvokingRouterTests {
@Test
public void multiChannelListResolutionByMessageConfiguredByMethodReference() throws Exception {
TestChannelMapping channelMapping = new TestChannelMapping();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelResolver);
Method routingMethod = testBean.getClass().getMethod("routeMessage", Message.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
this.doTestMultiChannelListResolutionByMessage(router, channelMapping);
this.doTestMultiChannelListResolutionByMessage(router, channelResolver);
}
@Test
public void multiChannelListResolutionByMessageConfiguredByMethodName() {
TestChannelMapping channelMapping = new TestChannelMapping();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelResolver);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, "routeMessage");
this.doTestMultiChannelListResolutionByMessage(router, channelMapping);
this.doTestMultiChannelListResolutionByMessage(router, channelResolver);
}
private void doTestMultiChannelListResolutionByMessage(MethodInvokingRouter router, TestChannelMapping channelMapping) {
private void doTestMultiChannelListResolutionByMessage(MethodInvokingRouter router, TestChannelResolver channelResolver) {
QueueChannel fooChannel = new QueueChannel();
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
router.setChannelMapping(channelMapping);
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
router.setChannelResolver(channelResolver);
Message<String> fooMessage = new StringMessage("foo");
Message<String> barMessage = new StringMessage("bar");
Message<String> badMessage = new StringMessage("bad");
@@ -450,29 +450,29 @@ public class MethodInvokingRouterTests {
@Test
public void multiChannelArrayResolutionByMessageConfiguredByMethodReference() throws Exception {
TestChannelMapping channelMapping = new TestChannelMapping();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelResolver);
Method routingMethod = testBean.getClass().getMethod("routeMessageToArray", Message.class);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, routingMethod);
this.doTestMultiChannelArrayResolutionByMessage(router, channelMapping);
this.doTestMultiChannelArrayResolutionByMessage(router, channelResolver);
}
@Test
public void multiChannelArrayResolutionByMessageConfiguredByMethodName() {
TestChannelMapping channelMapping = new TestChannelMapping();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
MultiChannelInstanceRoutingTestBean testBean = new MultiChannelInstanceRoutingTestBean(channelResolver);
MethodInvokingRouter router = new MethodInvokingRouter(testBean, "routeMessageToArray");
this.doTestMultiChannelArrayResolutionByMessage(router, channelMapping);
this.doTestMultiChannelArrayResolutionByMessage(router, channelResolver);
}
private void doTestMultiChannelArrayResolutionByMessage(MethodInvokingRouter router, TestChannelMapping channelMapping) {
private void doTestMultiChannelArrayResolutionByMessage(MethodInvokingRouter router, TestChannelResolver channelResolver) {
QueueChannel fooChannel = new QueueChannel();
QueueChannel barChannel = new QueueChannel();
fooChannel.setBeanName("foo-channel");
barChannel.setBeanName("bar-channel");
channelMapping.addChannel(fooChannel);
channelMapping.addChannel(barChannel);
router.setChannelMapping(channelMapping);
channelResolver.addChannel(fooChannel);
channelResolver.addChannel(barChannel);
router.setChannelResolver(channelResolver);
Message<String> fooMessage = new StringMessage("foo");
Message<String> barMessage = new StringMessage("bar");
Message<String> badMessage = new StringMessage("bad");
@@ -550,22 +550,22 @@ public class MethodInvokingRouterTests {
public static class SingleChannelInstanceRoutingTestBean {
private ChannelMapping mapping;
private ChannelResolver channelResolver;
public SingleChannelInstanceRoutingTestBean(ChannelMapping mapping) {
this.mapping = mapping;
public SingleChannelInstanceRoutingTestBean(ChannelResolver channelResolver) {
this.channelResolver = channelResolver;
}
public MessageChannel routePayload(String name) {
return mapping.getChannel(name + "-channel");
return channelResolver.resolveChannelName(name + "-channel");
}
public MessageChannel routeMessage(Message<?> message) {
if (message.getPayload().equals("foo")) {
return mapping.getChannel("foo-channel");
return channelResolver.resolveChannelName("foo-channel");
}
else if (message.getPayload().equals("bar")) {
return mapping.getChannel("bar-channel");
return channelResolver.resolveChannelName("bar-channel");
}
return null;
}
@@ -574,17 +574,17 @@ public class MethodInvokingRouterTests {
public static class MultiChannelInstanceRoutingTestBean {
private ChannelMapping mapping;
private ChannelResolver channelResolver;
public MultiChannelInstanceRoutingTestBean(ChannelMapping mapping) {
this.mapping = mapping;
public MultiChannelInstanceRoutingTestBean(ChannelResolver channelResolver) {
this.channelResolver = channelResolver;
}
public List<MessageChannel> routePayload(String name) {
List<MessageChannel> results = new ArrayList<MessageChannel>();
if (name.equals("foo") || name.equals("bar")) {
results.add(mapping.getChannel("foo-channel"));
results.add(mapping.getChannel("bar-channel"));
results.add(channelResolver.resolveChannelName("foo-channel"));
results.add(channelResolver.resolveChannelName("bar-channel"));
}
return results;
}
@@ -592,8 +592,8 @@ public class MethodInvokingRouterTests {
public List<MessageChannel> routeMessage(Message<?> message) {
List<MessageChannel> results = new ArrayList<MessageChannel>();
if (message.getPayload().equals("foo") || message.getPayload().equals("bar")) {
results.add(mapping.getChannel("foo-channel"));
results.add(mapping.getChannel("bar-channel"));
results.add(channelResolver.resolveChannelName("foo-channel"));
results.add(channelResolver.resolveChannelName("bar-channel"));
}
return results;
}
@@ -602,8 +602,8 @@ public class MethodInvokingRouterTests {
MessageChannel[] results = null;
if (message.getPayload().equals("foo") || message.getPayload().equals("bar")) {
results = new MessageChannel[2];
results[0] = mapping.getChannel("foo-channel");
results[1] = mapping.getChannel("bar-channel");
results[0] = channelResolver.resolveChannelName("foo-channel");
results[1] = channelResolver.resolveChannelName("bar-channel");
}
return results;
}

View File

@@ -22,7 +22,7 @@ import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.channel.TestChannelMapping;
import org.springframework.integration.channel.TestChannelResolver;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessagingException;
import org.springframework.integration.message.StringMessage;
@@ -34,7 +34,7 @@ public class MultiChannelRouterTests {
@Test
public void routeWithChannelMapping() {
AbstractChannelMappingMessageRouter router = new AbstractChannelMappingMessageRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
return new String[] {"channel1", "channel2"};
}
@@ -43,10 +43,10 @@ public class MultiChannelRouterTests {
QueueChannel channel2 = new QueueChannel();
channel1.setBeanName("channel1");
channel2.setBeanName("channel2");
TestChannelMapping channelMapping = new TestChannelMapping();
channelMapping.addChannel(channel1);
channelMapping.addChannel(channel2);
router.setChannelMapping(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
channelResolver.addChannel(channel1);
channelResolver.addChannel(channel2);
router.setChannelResolver(channelResolver);
Message<String> message = new StringMessage("test");
router.onMessage(message);
Message<?> result1 = channel1.receive(25);
@@ -59,20 +59,20 @@ public class MultiChannelRouterTests {
@Test(expected = MessagingException.class)
public void channelNameLookupFailure() {
AbstractChannelMappingMessageRouter router = new AbstractChannelMappingMessageRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
return new String[] {"noSuchChannel"};
}
};
TestChannelMapping channelMapping = new TestChannelMapping();
router.setChannelMapping(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
router.setChannelResolver(channelResolver);
Message<String> message = new StringMessage("test");
router.onMessage(message);
}
@Test(expected = MessagingException.class)
public void channelMappingNotAvailable() {
AbstractChannelMappingMessageRouter router = new AbstractChannelMappingMessageRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
return new String[] {"noSuchChannel"};
}

View File

@@ -26,7 +26,7 @@ import org.junit.Test;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.channel.TestChannelMapping;
import org.springframework.integration.channel.TestChannelResolver;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageDeliveryException;
import org.springframework.integration.message.MessagingException;
@@ -85,26 +85,26 @@ public class RouterTests {
@Test
public void nullChannelNameArrayIgnoredByDefault() {
AbstractChannelMappingMessageRouter router = new AbstractChannelMappingMessageRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
return null;
}
};
TestChannelMapping channelMapping = new TestChannelMapping();
router.setChannelMapping(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
router.setChannelResolver(channelResolver);
Message<String> message = new StringMessage("test");
router.onMessage(message);
}
@Test(expected = MessageDeliveryException.class)
public void nullChannelNameArrayThrowsExceptionWhenResolutionRequired() {
AbstractChannelMappingMessageRouter router = new AbstractChannelMappingMessageRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
return null;
}
};
TestChannelMapping channelMapping = new TestChannelMapping();
router.setChannelMapping(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
router.setChannelResolver(channelResolver);
router.setResolutionRequired(true);
Message<String> message = new StringMessage("test");
router.onMessage(message);
@@ -113,26 +113,26 @@ public class RouterTests {
@Test
public void emptyChannelNameArrayIgnoredByDefault() {
AbstractChannelMappingMessageRouter router = new AbstractChannelMappingMessageRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
return new String[] {};
}
};
TestChannelMapping channelMapping = new TestChannelMapping();
router.setChannelMapping(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
router.setChannelResolver(channelResolver);
Message<String> message = new StringMessage("test");
router.onMessage(message);
}
@Test(expected = MessageDeliveryException.class)
public void emptyChannelNameArrayThrowsExceptionWhenResolutionRequired() {
AbstractChannelMappingMessageRouter router = new AbstractChannelMappingMessageRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
return new String[] {};
}
};
TestChannelMapping channelMapping = new TestChannelMapping();
router.setChannelMapping(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
router.setChannelResolver(channelResolver);
router.setResolutionRequired(true);
Message<String> message = new StringMessage("test");
router.onMessage(message);
@@ -150,7 +150,7 @@ public class RouterTests {
@Test(expected = MessagingException.class)
public void channelMappingIsRequiredWhenResolvingChannelNamesWithMultiChannelRouter() {
AbstractChannelMappingMessageRouter router = new AbstractChannelMappingMessageRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
return new String[] { "notImportant" };
}
@@ -176,7 +176,7 @@ public class RouterTests {
@Test
public void beanFactoryWithMultiChannelRouter() {
AbstractChannelMappingMessageRouter router = new AbstractChannelMappingMessageRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
return new String[] { "testChannel" };
}

View File

@@ -23,7 +23,7 @@ import org.junit.Test;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.channel.TestChannelMapping;
import org.springframework.integration.channel.TestChannelResolver;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessagingException;
import org.springframework.integration.message.StringMessage;
@@ -57,9 +57,9 @@ public class SingleChannelRouterTests {
};
QueueChannel channel = new QueueChannel();
channel.setBeanName("testChannel");
TestChannelMapping channelMapping = new TestChannelMapping();
channelMapping.addChannel(channel);
router.setChannelMapping(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
channelResolver.addChannel(channel);
router.setChannelResolver(channelResolver);
Message<String> message = new StringMessage("test");
router.onMessage(message);
Message<?> result = channel.receive(25);
@@ -85,8 +85,8 @@ public class SingleChannelRouterTests {
return "noSuchChannel";
}
};
TestChannelMapping channelMapping = new TestChannelMapping();
router.setChannelMapping(channelMapping);
TestChannelResolver channelResolver = new TestChannelResolver();
router.setChannelResolver(channelResolver);
Message<String> message = new StringMessage("test");
router.onMessage(message);
}