diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/splitter/SplitterMessageHandlerTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/splitter/SplitterMessageHandlerTests.java index 900531e7b5..e5d47ce733 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/splitter/SplitterMessageHandlerTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/splitter/SplitterMessageHandlerTests.java @@ -26,10 +26,11 @@ import java.util.List; import org.junit.Test; +import org.springframework.integration.handler.annotation.Header; import org.springframework.integration.message.CompositeMessage; import org.springframework.integration.message.Message; +import org.springframework.integration.message.MessageBuilder; import org.springframework.integration.message.StringMessage; -import org.springframework.integration.splitter.SplitterMessageHandler; /** * @author Mark Fisher @@ -281,6 +282,41 @@ public class SplitterMessageHandlerTests { assertEquals(message.getHeaders().getId(), reply2.getHeaders().getCorrelationId()); } + @Test + public void splitMessageHeader() throws Exception { + Message message = MessageBuilder.fromPayload("ignored") + .setHeader("testHeader", "foo.bar").build(); + SplitterMessageHandler handler = this.getHandler("splitHeader"); + List> replies = invokeHandler(handler, message); + Message reply1 = replies.get(0); + assertNotNull(reply1); + assertEquals("foo", reply1.getPayload()); + Message reply2 = replies.get(1); + assertNotNull(reply2); + assertEquals("bar", reply2.getPayload()); + } + + @Test + public void splitPayloadAndHeader() throws Exception { + Message message = MessageBuilder.fromPayload("a.b") + .setHeader("testHeader", "c.d").build(); + Method splittingMethod = this.testBean.getClass().getMethod("splitPayloadAndHeader", String.class, String.class); + SplitterMessageHandler handler = new SplitterMessageHandler(testBean, splittingMethod); + List> replies = invokeHandler(handler, message); + Message reply1 = replies.get(0); + assertNotNull(reply1); + assertEquals("a", reply1.getPayload()); + Message reply2 = replies.get(1); + assertNotNull(reply2); + assertEquals("b", reply2.getPayload()); + Message reply3 = replies.get(2); + assertNotNull(reply3); + assertEquals("c", reply3.getPayload()); + Message reply4 = replies.get(3); + assertNotNull(reply4); + assertEquals("d", reply4.getPayload()); + } + private SplitterMessageHandler getHandler(String methodName) throws Exception { Class paramType = methodName.startsWith("message") ? Message.class : String.class; @@ -346,6 +382,22 @@ public class SplitterMessageHandlerTests { } return messages; } + + public String[] splitHeader(@Header("testHeader") String input) { + return input.split("\\."); + } + + public List splitPayloadAndHeader(String payload, @Header("testHeader") String header) { + String regex = "\\."; + List results = new ArrayList(); + for (String s: payload.split(regex)) { + results.add(s); + } + for (String s: header.split(regex)) { + results.add(s); + } + return results; + } } }