Added @Header parameter annotation test to SplitterMessageHandlerTests.

This commit is contained in:
Mark Fisher
2008-08-19 18:21:52 +00:00
parent ce87fef7ac
commit a43315e17e

View File

@@ -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<String> message = MessageBuilder.fromPayload("ignored")
.setHeader("testHeader", "foo.bar").build();
SplitterMessageHandler handler = this.getHandler("splitHeader");
List<Message<?>> 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<String> 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<Message<?>> 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<String> splitPayloadAndHeader(String payload, @Header("testHeader") String header) {
String regex = "\\.";
List<String> results = new ArrayList<String>();
for (String s: payload.split(regex)) {
results.add(s);
}
for (String s: header.split(regex)) {
results.add(s);
}
return results;
}
}
}