Hi Raul upgraded to 2.9.2 (and set all headers on the In message) all works now!
thx a lot for ur help!!!! finally i see the light after 5hrs of failures :) w/kindest regards marco On Sat, Sep 22, 2012 at 7:20 PM, Raul Kripalani <[email protected]> wrote: > Can you try with the expression ${in.header.jsonHeader} == 'foo'? > > The notation you are using is available as of Camel 2.9.2 as I mentioned in > the other thread. > > Thanks, > Raúl. > > Sent from a mobile device > On Sep 22, 2012 7:14 PM, "Marco Mistroni" <[email protected]> wrote: > > > Hello Raul > > i understand , but in my <choice> i am routing basing on > headers..... i > > am not really concerned with > > body, only with headers. > > I have now modified my processor > > > > > > exchange.getIn().setHeader("jsonHeader", action); > > exchange.getIn().setHeader("jsonContent", jsonData); > > exchange.getIn().setHeader("action", action); > > > > > > still it's evading the jsonRouting for some reason > > > > if instead going to the <choice> route i make it go straight to > > > > <camel:route id="Jetty_Sample"> > > <camel:from uri="jetty:http://localhost:8888/myJettyService > " > > <!-- camel:marshal ref="jsonFormatter" /--> > > <camel:process ref="myJettyService" /> > > <camel:to uri="seda:json" /> > > </camel:route> > > > > will try to debug more... > > > > thanks for help > > > > w/kindest regards > > marco > > > > > > On Sat, Sep 22, 2012 at 6:25 PM, Raul Kripalani <[email protected]> > wrote: > > > > > The processor is not transferring the original IN message body to the > OUT > > > message body, so the result is a Message with headers but with a null > > body. > > > > > > Take a look at [1] and you should be fine. > > > > > > I suggest you set the headers in the IN message, and Camel will take > care > > > of reusing the modified IN message for the next processor along. > > > > > > [1] > > http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html > > > > > > Hope that helps, > > > Raúl. > > > On Sep 22, 2012 6:17 PM, "Marco Mistroni" <[email protected]> wrote: > > > > > > > Hi all > > > > i have a camel app in which i am using a jetty route to process > json > > > > messages. those messages are then routed to the proper route to > > produce a > > > > response. > > > > Here's the configuration > > > > > > > > <camel:route id="Jetty_Sample"> > > > > <camel:from uri="jetty: > > http://localhost:8888/myJettyService" > > > > /> > > > > <!-- camel:marshal ref="jsonFormatter" /--> > > > > <camel:process ref="myJettyService" /> > > > > <camel:to uri="seda:jsonRouting" /> > > > > > > > > </camel:route> > > > > > > > > <camel:route id="jettyRouting"> > > > > <camel:from uri="seda:jsonRouting" /> > > > > > > > > <camel:choice> > > > > <camel:when> > > > > <camel:simple>${in.headers[action]} == > > > > 'shareManagement' > > > > </camel:simple> > > > > <camel:to uri="seda:jsonShares" /> > > > > </camel:when> > > > > ........ > > > > <camel:otherwise> > > > > <camel:to uri="seda:json" /> > > > > </camel:otherwise> > > > > </camel:choice> > > > > > > > > </camel:route> > > > > > > > > > > > > <camel:route> > > > > <camel:from uri="seda:json" /> > > > > <camel:process ref="myJettyService2" /> > > > > <camel:marshal ref="jsonFormatter" /> > > > > </camel:route> > > > > > > > > There's a Processor which gets the input message, set few headers and > > the > > > > pass the message through (myJettyService), whose code i sbelow > > > > > > > > @Override > > > > public void process(Exchange exchange) throws Exception { > > > > // TODO Auto-generated method stub > > > > > > > > ObjectMapper mapper = new ObjectMapper(); > > > > > > > > String body = exchange.getIn().getBody(String.class); > > > > > > > > LOGGER.info("REceived:" + body); > > > > Map<String, Object> jsonData = mapper.readValue(body, > > Map.class); > > > > LOGGER.info("Setting new body to:" + jsonData); > > > > > > > > String action = (String) jsonData.get("action"); > > > > > > > > LOGGER.info("Setting jsonHeader to:" + action); > > > > > > > > exchange.getOut().setHeader("jsonHeader", action); > > > > exchange.getOut().setHeader("jsonContent", jsonData); > > > > exchange.getOut().setHeader("action", action); > > > > > > > > LOGGER.info("Out of Processor" + action); > > > > > > > > > > > > } > > > > > > > > Now, as this processor sets the header 'action', then the <choice> > > > > component of the destination route (jsonRouting) should pick the > header > > > up > > > > and forward the message to the appropriate route. > > > > If it cannot find hte header, the <otherwise> choice would be > > selected > > > > and the message should end up somewhere (seda:json, route which > > contains > > > a > > > > processor) > > > > > > > > Now , for some reason . after hte above processor is invoked the > > message > > > > end up nowhere (apparently, the message never arrives at the > > > <camel:choice> > > > > component). > > > > > > > > I have tried to put a <processor> after <camel:from > > > uri="seda:jsonRouting" > > > > />, and i can see the new headers (jsonHeader, jsonContent and > action > > > > being populated) > > > > > > > > If i skip the routing, replacing > > > > <camel:route id="Jetty_Sample"> > > > > <camel:from uri="jetty: > > http://localhost:8888/myJettyService" > > > > /> > > > > <!-- camel:marshal ref="jsonFormatter" /--> > > > > <camel:process ref="myJettyService" /> > > > > <camel:to uri="seda:jsonRouting" /> > > > > > > > > </camel:route> > > > > with > > > > <camel:route id="Jetty_Sample"> > > > > <camel:from uri="jetty: > > http://localhost:8888/myJettyService" > > > > /> > > > > <!-- camel:marshal ref="jsonFormatter" /--> > > > > <camel:process ref="myJettyService" /> > > > > <camel:to uri="seda:json" /> > > > > > > > > </camel:route> > > > > > > > > the message gets processed correctly. > > > > > > > > I cannnot understand what's going on..... if none of the camel:choice > > > > conditions are satisified the message should be routed to the > > > <otherwise> > > > > route... But it does not > > > > > > > > Is it because i am using a processor (myJettyService) in the Jetty > > route? > > > > does that screw up things because it is processing the message? > > > > > > > > thanks in advance and regards > > > > marco > > > > > > > > > >
