The router hierarchy abstract method names are now 'determineTargetChannel', 'determineTargetChannelNames', etc (instead of "resolve..."). This clarifies the distinction between the target channel decision and the resolution of a channel *name* to a channel instance. The latter is now the responsibility of a ChannelResolver strategy, and all subclasses of AbstractChannelNameResolvingMessageRouter now delegate to a ChannelResolver after 'determineTargetChannelNames' has returned the channel name(s). In most cases, it will be a BeanFactoryChannelResolver.

This commit is contained in:
Mark Fisher
2008-10-12 17:58:36 +00:00
parent 0754889c5c
commit b34e416093
19 changed files with 71 additions and 59 deletions

View File

@@ -35,7 +35,7 @@ public class MultiChannelRouterTests {
@Test
public void routeWithChannelMapping() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
public String[] determineTargetChannelNames(Message<?> message) {
return new String[] {"channel1", "channel2"};
}
};
@@ -60,7 +60,7 @@ public class MultiChannelRouterTests {
@Test(expected = MessagingException.class)
public void channelNameLookupFailure() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
public String[] determineTargetChannelNames(Message<?> message) {
return new String[] {"noSuchChannel"};
}
};
@@ -73,7 +73,7 @@ public class MultiChannelRouterTests {
@Test(expected = MessagingException.class)
public void channelMappingNotAvailable() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
public String[] determineTargetChannelNames(Message<?> message) {
return new String[] {"noSuchChannel"};
}
};

View File

@@ -46,8 +46,8 @@ public class PayloadTypeRouterTests {
router.setPayloadTypeChannelMap(payloadTypeChannelMap);
Message<String> message1 = new StringMessage("test");
Message<Integer> message2 = new GenericMessage<Integer>(123);
MessageChannel result1 = router.resolveChannel(message1);
MessageChannel result2 = router.resolveChannel(message2);
MessageChannel result1 = router.determineTargetChannel(message1);
MessageChannel result2 = router.determineTargetChannel(message2);
assertEquals(stringChannel, result1);
assertEquals(integerChannel, result2);
}

View File

@@ -49,7 +49,7 @@ public class RecipientListRouterTests {
router.setChannels(channels);
router.afterPropertiesSet();
Message<String> message = new StringMessage("test");
Collection<MessageChannel> resolved = router.resolveChannels(message);
Collection<MessageChannel> resolved = router.determineTargetChannels(message);
assertEquals(2, resolved.size());
assertTrue(resolved.contains(channel1));
assertTrue(resolved.contains(channel2));

View File

@@ -40,7 +40,7 @@ public class RouterTests {
@Test
public void nullChannelIgnoredByDefault() {
AbstractMessageRouter router = new AbstractMessageRouter() {
public List<MessageChannel> resolveChannels(Message<?> message) {
public List<MessageChannel> determineTargetChannels(Message<?> message) {
return null;
}
};
@@ -51,7 +51,7 @@ public class RouterTests {
@Test(expected = MessageDeliveryException.class)
public void nullChannelThrowsExceptionWhenResolutionRequired() {
AbstractMessageRouter router = new AbstractMessageRouter() {
public List<MessageChannel> resolveChannels(Message<?> message) {
public List<MessageChannel> determineTargetChannels(Message<?> message) {
return null;
}
};
@@ -63,7 +63,7 @@ public class RouterTests {
@Test
public void emptyChannelListIgnoredByDefault() {
AbstractMessageRouter router = new AbstractMessageRouter() {
public List<MessageChannel> resolveChannels(Message<?> message) {
public List<MessageChannel> determineTargetChannels(Message<?> message) {
return Collections.emptyList();
}
};
@@ -74,7 +74,7 @@ public class RouterTests {
@Test(expected = MessageDeliveryException.class)
public void emptyChannelListThrowsExceptionWhenResolutionRequired() {
AbstractMessageRouter router = new AbstractMessageRouter() {
public List<MessageChannel> resolveChannels(Message<?> message) {
public List<MessageChannel> determineTargetChannels(Message<?> message) {
return Collections.emptyList();
}
};
@@ -86,7 +86,7 @@ public class RouterTests {
@Test
public void nullChannelNameArrayIgnoredByDefault() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
public String[] determineTargetChannelNames(Message<?> message) {
return null;
}
};
@@ -99,7 +99,7 @@ public class RouterTests {
@Test(expected = MessageDeliveryException.class)
public void nullChannelNameArrayThrowsExceptionWhenResolutionRequired() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
public String[] determineTargetChannelNames(Message<?> message) {
return null;
}
};
@@ -114,7 +114,7 @@ public class RouterTests {
@Test
public void emptyChannelNameArrayIgnoredByDefault() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
public String[] determineTargetChannelNames(Message<?> message) {
return new String[] {};
}
};
@@ -127,7 +127,7 @@ public class RouterTests {
@Test(expected = MessageDeliveryException.class)
public void emptyChannelNameArrayThrowsExceptionWhenResolutionRequired() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
public String[] determineTargetChannelNames(Message<?> message) {
return new String[] {};
}
};
@@ -141,7 +141,7 @@ public class RouterTests {
@Test(expected = MessagingException.class)
public void channelMappingIsRequiredWhenResolvingChannelNamesWithSingleChannelRouter() {
AbstractSingleChannelNameRouter router = new AbstractSingleChannelNameRouter() {
public String resolveChannelName(Message<?> message) {
public String determineTargetChannelName(Message<?> message) {
return "notImportant";
}
};
@@ -151,7 +151,7 @@ public class RouterTests {
@Test(expected = MessagingException.class)
public void channelMappingIsRequiredWhenResolvingChannelNamesWithMultiChannelRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
public String[] determineTargetChannelNames(Message<?> message) {
return new String[] { "notImportant" };
}
};
@@ -161,7 +161,7 @@ public class RouterTests {
@Test
public void beanFactoryWithSingleChannelRouter() {
AbstractSingleChannelNameRouter router = new AbstractSingleChannelNameRouter() {
public String resolveChannelName(Message<?> message) {
public String determineTargetChannelName(Message<?> message) {
return "testChannel";
}
};
@@ -177,7 +177,7 @@ public class RouterTests {
@Test
public void beanFactoryWithMultiChannelRouter() {
AbstractChannelNameResolvingMessageRouter router = new AbstractChannelNameResolvingMessageRouter() {
public String[] resolveChannelNames(Message<?> message) {
public String[] determineTargetChannelNames(Message<?> message) {
return new String[] { "testChannel" };
}
};

View File

@@ -37,7 +37,7 @@ public class SingleChannelRouterTests {
public void routeWithChannelResolver() {
final QueueChannel channel = new QueueChannel();
AbstractSingleChannelRouter router = new AbstractSingleChannelRouter() {
public MessageChannel resolveChannel(Message<?> message) {
public MessageChannel determineTargetChannel(Message<?> message) {
return channel;
}
};
@@ -51,7 +51,7 @@ public class SingleChannelRouterTests {
@Test
public void routeWithChannelNameResolver() {
AbstractSingleChannelNameRouter router = new AbstractSingleChannelNameRouter() {
public String resolveChannelName(Message<?> message) {
public String determineTargetChannelName(Message<?> message) {
return "testChannel";
}
};
@@ -70,7 +70,7 @@ public class SingleChannelRouterTests {
@Test
public void nullChannelResultIgnored() {
AbstractSingleChannelRouter router = new AbstractSingleChannelRouter() {
public MessageChannel resolveChannel(Message<?> message) {
public MessageChannel determineTargetChannel(Message<?> message) {
return null;
}
};
@@ -81,7 +81,7 @@ public class SingleChannelRouterTests {
@Test(expected = MessagingException.class)
public void channelNameResolutionFailure() {
AbstractSingleChannelNameRouter router = new AbstractSingleChannelNameRouter() {
public String resolveChannelName(Message<?> message) {
public String determineTargetChannelName(Message<?> message) {
return "noSuchChannel";
}
};