Hi,

You could use direct endpoint instead of activemq endpoint to combine the
below 2  body transforms. In this way the message will not be send and take
from activemq again.

from("activemq:Integration.Status").setHeader("Body")...to("direct:ToJdbc");
from("direct:ToJdbc").setBody().el("declare @h uniqueidentifier; "+ ...
to("jdbc:Status");

I am also try to figure out the real reason of
https://issues.apache.org/activemq/browse/CAMEL-393,
It is may relate with your issue in Camel DSL implementation.
Please feel free to fill the JIRA if you have any thing to comment.

Willem

On Sat, Aug 30, 2008 at 8:17 AM, Vadim Chekan <[EMAIL PROTECTED]> wrote:

> I'm having problem with the following expression:
>                from("activemq:Integration.Status").
>                setHeader("Body").el("${in.body}").
>                setBody().el("${in.headers}").
>                marshal().
>                xstream().convertBodyTo(String.class).
>                setBody().el("declare @h uniqueidentifier; "+
>                           "begin dialog conversation @h "+
>                           "from service StatusResponseService "+
>                           "to service 'StatusService' "+
>                           "with encryption=off; "+
>                           "send on conversation @h
> ('${in.body.replace('\'','\'\'')}'); ").
>                to("jdbc:Status");
>
> The line before last returns Object so it can not be sent "to".
> I'm trying to serialize a message, including all headers into xml,
> than craft a sql expression which would contain this xml as a
> parameter and send it to jdbc endpoint.
> I spent several hors trying all possible combinations and still have
> no clue how to do this double body transform.
> I feel like I need to use "pipeline" pattern but I can not understand
> what two elements should be inside this pipe.
>
> So far I made it working using 2 queues but it feels wrong:
>                from("activemq:Integration.Status").
>                setHeader("Body").el("${in.body}").
>                setBody().el("${in.headers}").
>                marshal().
>                xstream().convertBodyTo(String.class).
>                to("activemq:Integration.Status2");
>
>                from("activemq:Integration.Status2").
>                setBody().el("declare @h uniqueidentifier; "+
>                           "begin dialog conversation @h "+
>                           "from service StatusResponseService "+
>                           "to service 'StatusService' "+
>                           "with encryption=off; "+
>                           "send on conversation @h
> ('${in.body.replace('\'','\'\'')}'); ").
>                to("jdbc:Status");
>
> And another question: in "el" this fragment
> "'${in.body.replace('\'','\'\'')}" gives me an error: syntax error at
> position 187, encountered ',', expected ')'
> How can I replace single quote in the body with two single quote chars?
>
> Vadim.
>
> --
> From RFC 2631: In ASN.1, EXPLICIT tagging is implicit unless IMPLICIT
> is explicitly specified
>

Reply via email to