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 c507157a25..dc3b0404da 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
@@ -51,11 +51,15 @@ public class PayloadTypeRouter extends AbstractMessageRouter {
private String getChannelName(Message> message) {
Class> type = message.getPayload().getClass();
+ boolean array = type.isArray();
+ if (array){
+ type = type.getComponentType();
+ }
while (type != null && !CollectionUtils.isEmpty(this.channelIdentifierMap)) {
String mappingName = null;
- if (type.isArray()){
- mappingName = type.getComponentType().getName()+"[]";
+ if (array){
+ mappingName = type.getName()+"[]";
}
else {
mappingName = type.getName();
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 511656dc5f..41a7d2edc3 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
@@ -16,12 +16,16 @@
+
+
+
-
+
+
message1 = MessageBuilder.withPayload("Hello").build();
Message> message2 = MessageBuilder.withPayload(25).build();
Message> message3 = MessageBuilder.withPayload(new Integer[]{23, 24, 34}).build();
+ Message> message4 = MessageBuilder.withPayload(new Long[]{23L, 24L, 34L}).build();
testService.foo(message1);
testService.foo(message2);
testService.foo(message3);
+ testService.foo(message4);
PollableChannel chanel1 = (PollableChannel) context.getBean("channel1");
PollableChannel chanel2 = (PollableChannel) context.getBean("channel2");
PollableChannel chanel3 = (PollableChannel) context.getBean("channel3");
+ PollableChannel chanel4 = (PollableChannel) context.getBean("channel4");
assertTrue(chanel1.receive(0).getPayload() instanceof String);
assertTrue(chanel2.receive(0).getPayload() instanceof Integer);
- System.out.println(chanel3.receive(0).getPayload());
+ assertTrue(chanel3.receive(0).getPayload().getClass().isArray());
+ assertTrue(chanel4.receive(0).getPayload().getClass().isArray());
}
@Test(expected=BeanDefinitionStoreException.class)