On Tue, Mar 3, 2009 at 7:56 AM, Peter Maas <[email protected]> wrote: > I think you've solved my problem. I was looking at the 'in' message of the > resource exchange, whereas I should be looking at the 'out' message. And, > btw, yes the CinemaQueryAssembler is thread-safe, I actually think all code > should be threadsafe ;) Yeah if we could just got some basic annotations in the JDK, eg @ThreadSafe then you could document it like that :)
Maybe we need to improve the wiki for using the enricher to state you should check the OUT for the response. http://camel.apache.org/content-enricher.html > > On Tue, Mar 3, 2009 at 7:02 AM, Martin Krasser <[email protected]>wrote: > >> Hi Peter, >> >> the route looks good to me. >> >> * The in-messages of the original exchange and the resource exchange are >> always identical. The out-message of the resource exchange will contain the >> result from 'direct:enrichMovie'. >> * What message exchange pattern do you use when you test (print the >> contents of) the 'direct:enrichMovie' route? >> * Is the CinemaQueryAssembler thread-safe? You're doing parallel processing >> of split messages. >> >> Martin >> >> Peter Maas schrieb: >> >> Hi list, >>> >>> I'm developing a proof-of-concept application using Camel 2.0. Everything >>> seems to work just find... except for the content-enricher. Both the >>> resource exchange passed to my AggregationStrategy look identical. Whilst if >>> I print the contents of the resource route I the the correct xml in the >>> exchange after calling the http service. My routes look like this: >>> >>> // split messages when received from the incoming mq >>> // enrich if move. Always stor in database >>> from("activemq:topic:incomingVPROGuide") >>> .split(vpro.xpath("//vpro:program")).parallelProcessing(true) >>> .choice() >>> .when(vpro.xpath("/vpro:progr...@ismovie = 'true']")) >>> .enrich("direct:enrichMovie", new ProgramMerger()) >>> .to("direct:save") >>> .otherwise().to("direct:save"); >>> // the generic save route >>> from("direct:save") >>> .setHeader("xmldb.resource.name", >>> vpro.xpath("//vpro:program/@id", String.class)) >>> .process(sanitize("xmldb.resource.name")) >>> .to("xmldb:/programs"); >>> // route to retrieve data from external >>> // rest service >>> from("direct:enrichMovie") >>> .setHeader("title", >>> vpro.xpath("/vpro:program/vpro:title[1]/text()", String.class)) >>> .setHeader("director", vpro.xpath("//vpro:pers...@urn = >>> 'urn:mpeg:mpeg7:cs:RoleCS:2001:DIRECTOR' and 1]/vpro:familyName/text()", >>> String.class)) >>> .setHeader("year", vpro.xpath("//vpro:year[1]/text()", >>> String.class)) >>> .process(new CinemaQueryAssembler()) >>> .to("http://cinema.test.vpro.nl/api/1/rest/movie/find.xml"); >>> >>> The xmldb producer is a patched version of the camel-extra project. >>> Everything works fine, apart from the enricher... >>> >>> Any hints? >>> >>> kind regards, >>> >>> Peter Maas >>> >> >> > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/
