> Yes..there is a comma...
>
> The message that would be returned from a processor Call in the route
> would be like this:
> [<Cat xmlns="http://www.openapplications.org/oagis/9"
> xmlns:lw="http://www.org/oagis/9">
> <name>Cat1</name>
> </Cat>,
> <Dog xmlns="http://www.openapplications.org/oagis/9"
> xmlns:lw="http://www.org/oagis/9">
> <name>Dog1</name>
> </Dog>]
Maybe this helps ...
Jan
public class Split2Test extends CamelTestSupport {
@Test
public void animals() throws InterruptedException {
String xml = "<Cat xmlns=\"http://www.openapplications.org/oagis/9\"
xmlns:lw=\"http://www.org/oagis/9\">"
+ " <name>Cat1</name>"
+ "</Cat>,"
+ "<Dog xmlns=\"http://www.openapplications.org/oagis/9\"
xmlns:lw=\"http://www.org/oagis/9\">"
+ " <name>Dog1</name>"
+ "</Dog>";
getMockEndpoint("mock:dog").expectedMessageCount(1);
getMockEndpoint("mock:dog").expectedMessagesMatches(nameIs("Dog1"));
getMockEndpoint("mock:cat").expectedMessageCount(1);
getMockEndpoint("mock:cat").expectedMessagesMatches(nameIs("Cat1"));
template.sendBody("direct:in", xml);
assertMockEndpointsSatisfied();
}
private Predicate nameIs(final String name) {
return new Predicate() {
@Override
public boolean matches(Exchange exchange) {
return
exchange.getIn().getBody(String.class).contains("<name>" + name +
"</name>");
}
};
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:in")
.split(body(String.class).tokenize(","))
.choice()
.when(simple("${body} contains
'Cat'")).to("mock:cat")
.when(simple("${body} contains
'Dog'")).to("mock:dog")
.otherwise().to("mock:unknown");
}
};
}
}