There is a ? operator, so you can do

<simple>${body?.method?.name</simple>

Then it will be null if the body if the body doesnt have a getMethod().getName()

There is also a bodyAs(type) to use the Camel type converter.



On Wed, Jul 10, 2013 at 4:48 PM, Cristiano Costantini
<cristiano.costant...@gmail.com> wrote:
> mmm, it seems that "<simple>${body.method.name}</simple>" works:
>
> <setHeader headerName="methodName">
> <simple>${body.method.name}</simple>
> </setHeader>
>
>
> Any comment about this solution? (is it good?)
>
> What happens if the body is not of class
> org.apache.camel.component.bean.BeanInvocation?
> Is there a way to check if body is of the right instance?
>
> Many thanks!!!
>
> Cristiano
>
>
>
>
>
> 2013/7/10 Cristiano Costantini <cristiano.costant...@gmail.com>
>
>> Hi All,
>>
>> I have a Camel Proxy that pushes "BeanInvokation" exchanges  to a camel
>> route, and I want to route these messages depending on the method name that
>> is invoked.
>>
>> Is there any way to extract this information and put into an header so to
>> use it in a <choice>?
>>
>>
>> For example, considering the following XML code:
>>
>> <camelContext id="camelContext" xmlns="
>> http://camel.apache.org/schema/spring";>
>> <proxy id="myServiceProxy" serviceInterface="org.example.MyService"
>>  serviceUrl="direct:entry" />
>>
>> <route>
>> <from uri="direct:entry" />
>>  <setHeader headerName="methodName">
>>  <?? how to extract the method name ??>
>>  </setHeader>
>>
>> <choice>
>> <when>
>>  <simple>${header.methodName} == 'myMethod1'</simple>
>> <to uri="log:endoint_1?showAll=true" />
>>  </when>
>> <when>
>> <simple>${header.methodName} == 'myMethod2'</simple>
>>  <to uri="log:endoint_2?showAll=true" />
>> </when>
>> <otherwise>
>>  <throwException ref="unsupportedException" />
>> </otherwise>
>> </choice>
>>  </route>
>> </camelContext>
>>
>>
>> I'm searching for a solution to be used between the two <setHeader> tags.
>>
>> I know I can write a processor, but I will have problems deploying it to
>> the classpath where I put the route, so I need a solution that rely on the
>> default camel capability (like using simple language or other expression
>> languages available with camel).
>>
>>
>> Any idea?
>> Thank you all!
>>
>> Cristiano
>>
>>
>>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to