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 <[email protected]>
> 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
>
>
>