This one works for me
Jan
import org.apache.camel.EndpointInject;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
import static org.apache.camel.builder.SimpleBuilder.simple;
public class XmlFilterTest extends CamelTestSupport {
@EndpointInject(uri="mock:end")
MockEndpoint mock;
String bodyTemplate =
"<MY_LIST><MSG><ID>@id@</ID></MSG><SOURCE>@source@</SOURCE></MY_LIST>";
private void send(String id, String source) {
template.sendBody("direct:in", bodyTemplate.replace("@id@",
id).replace("@source@", source));
}
@Test
public void test() throws InterruptedException {
mock.expectedMessageCount(2);
mock.expectedMessagesMatches(
simple("${body} contains 'source1'"),
simple("${body} contains 'source1'")
);
send("1", "source1");
send("2", "source2");
send("3", "source1");
assertMockEndpointsSatisfied();
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:in")
.filter().xpath("/MY_LIST/SOURCE/text() = 'source1'")
.to("mock:end");
}
};
}
}
> -----Ursprüngliche Nachricht-----
> Von: geppo [mailto:[email protected]]
> Gesendet: Montag, 23. Juni 2014 18:44
> An: [email protected]
> Betreff: Filter on content of a tag
>
> Hi,
> I have a Camel route that reads from a queue containing XML messages
> e.g.
>
> <MY_LIST>
> <MSG>
> <ID>1234</ID>
> </MSG>
> <SOURCE>source1</SOURCE>
> ...
>
> I want to process only messages of type MyList and where SOURCE=source1
> I've written the filter for the check MyList.class and it works fine,
> but I don't know how to write the filter that checks the SOURCE tag.
> Any idea?
>
> from(inboundQueue)
> .routeId(id)
> .filter().body(MyList.class)
> .filter().body(MyList.getSource().equals("source1")) <-- Just some
> random code!
> .unmarshal(jaxb)
> .process(myProcessor)
> .log("Completed")
>
>
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Filter-
> on-content-of-a-tag-tp5752705.html
> Sent from the Camel Development mailing list archive at Nabble.com.