diff --git a/spring-integration-core/src/main/java/org/springframework/integration/router/PayloadTypeRouter.java b/spring-integration-core/src/main/java/org/springframework/integration/router/PayloadTypeRouter.java
index d2ade7c078..c507157a25 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/router/PayloadTypeRouter.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/router/PayloadTypeRouter.java
@@ -52,8 +52,15 @@ public class PayloadTypeRouter extends AbstractMessageRouter {
private String getChannelName(Message> message) {
Class> type = message.getPayload().getClass();
while (type != null && !CollectionUtils.isEmpty(this.channelIdentifierMap)) {
- // first, check for an exact type match
- String channelName = this.channelIdentifierMap.get(type.getName());
+
+ String mappingName = null;
+ if (type.isArray()){
+ mappingName = type.getComponentType().getName()+"[]";
+ }
+ else {
+ mappingName = type.getName();
+ }
+ String channelName = this.channelIdentifierMap.get(mappingName);
if (StringUtils.hasText(channelName)) {
return channelName;
}
diff --git a/spring-integration-core/src/test/java/org/springframework/integration/router/config/PayloadTypeRouterParserTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/router/config/PayloadTypeRouterParserTests-context.xml
index 8711ac0c22..511656dc5f 100644
--- a/spring-integration-core/src/test/java/org/springframework/integration/router/config/PayloadTypeRouterParserTests-context.xml
+++ b/spring-integration-core/src/test/java/org/springframework/integration/router/config/PayloadTypeRouterParserTests-context.xml
@@ -13,11 +13,15 @@
+
+
+
+
message1 = MessageBuilder.withPayload("Hello").build();
Message> message2 = MessageBuilder.withPayload(25).build();
+ Message> message3 = MessageBuilder.withPayload(new Integer[]{23, 24, 34}).build();
testService.foo(message1);
testService.foo(message2);
+ testService.foo(message3);
PollableChannel chanel1 = (PollableChannel) context.getBean("channel1");
PollableChannel chanel2 = (PollableChannel) context.getBean("channel2");
+ PollableChannel chanel3 = (PollableChannel) context.getBean("channel3");
assertTrue(chanel1.receive(0).getPayload() instanceof String);
assertTrue(chanel2.receive(0).getPayload() instanceof Integer);
+ System.out.println(chanel3.receive(0).getPayload());
}
@Test(expected=BeanDefinitionStoreException.class)