Hi Reji,

Thanks for the response. I added an .otherwise().log("xpath predicate failed...") and found out that I was running into an issue with namespaces. Once I addressed the namespace issue, I was able to send a notification and have it work through the route correctly.

Here is what I ended up with:

DataFormat jaxb = new JaxbDataFormat("com.example.services.schemas.notification"); Namespaces ns = new Namespaces("tns", "http://www.example.com/services/notifications";);

from("activemq:cdw.Notifications")
    .log("Recieved notification ${id}: ")
  .choice()
        .when(ns.xpath("/tns:notification/tns:type = 'email'"))
        .process(new Processor() {
            @Override
            public void process(Exchange exchange) throws Exception {
                String body = exchange.getIn().getBody(String.class);
                exchange.getOut().setBody(body);
            }
        })
            .unmarshal(jaxb).bean(notifier, "send")
        .otherwise().log("No match for message: ${id}").stop();

I'm not entirely positive that I require the processor before unmarshaling, however it works and I may end up removing that and testing it again. But, it was a namespace issue in the XML and xpath wasn't matching as a result.

John

On 11/14/13 7:04 PM, Reji Mathews wrote:
John

What is the error?  Anything in log?  And to which component are u sending the 
message after removing the processor

Reji

[email protected] wrote:

Can you share the sample xml message ? Does it have namespace in it ?
________________________________________
From: John Dubchak [[email protected]]
Sent: Friday, November 15, 2013 1:42 AM
To: [email protected]
Subject: xpath filter question

Hi,

I am trying to create a JavaDSL route that filters an incoming XML from
an ActiveMQ queue.  The message is being delivered correctly and I can
print it out if I short-circuit it with a processor that dumps the
message.  However, removing the processor, I cannot seem to get the
correct xpath expression to match on a particular value:

from("activemq:cdw.Notifications")
   .filter()
.xpath("/parent_node[child_node = 'value of text']")

Any insight into what I've messed up?

Thanks,
John





This e-mail and any files transmitted with it are for the sole use of the 
intended recipient(s) and may contain confidential and privileged information. 
If you are not the intended recipient(s), please reply to the sender and 
destroy all copies of the original message. Any unauthorized review, use, 
disclosure, dissemination, forwarding, printing or copying of this email, 
and/or any action taken in reliance on the contents of this e-mail is strictly 
prohibited and may be unlawful.

Reply via email to