use of org.apache.camel.component.xquery.XQueryBuilder in project camel by apache.
the class MultiPartClientMarshalTest method testSendPayload.
@Test
public void testSendPayload() throws Exception {
Exchange exchange = template.send("direct:start", new Processor() {
public void process(Exchange exchange) throws Exception {
BeanInvocation beanInvocation = new BeanInvocation();
GetCustomersByName getCustomersByName = new GetCustomersByName();
getCustomersByName.setName("Dr. Multipart");
beanInvocation.setMethod(MultiPartCustomerService.class.getMethod("getCustomersByName", GetCustomersByName.class, com.example.customerservice.multipart.Product.class));
Product product = new Product();
product.setName("Multiuse Product");
product.setDescription("Useful for lots of things.");
Object[] args = new Object[] { getCustomersByName, product };
beanInvocation.setArgs(args);
exchange.getIn().setBody(beanInvocation);
}
});
if (exchange.getException() != null) {
throw exchange.getException();
}
Map<String, String> nsMap = new HashMap<String, String>();
nsMap.put("soap", "http://schemas.xmlsoap.org/soap/envelope/");
nsMap.put("example", "http://multipart.customerservice.example.com/");
XQueryBuilder builder = XQueryBuilder.xquery("//soap:Envelope/soap:Header/example:product/name");
builder.setNamespaces(nsMap);
String result = builder.evaluateAsString(exchange);
assertTrue(result.equals("Multiuse Product"));
builder = XQueryBuilder.xquery("//soap:Envelope/soap:Body/example:getCustomersByName/name");
builder.setNamespaces(nsMap);
result = builder.evaluateAsString(exchange);
assertTrue(result.equals("Dr. Multipart"));
}
Aggregations