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/

Reply via email to