mmmm,
I would need exactly that, but I've tested sending a string with a producer
template and I got this error:

Failed to invoke method: ?.method?.name on null due to:
org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to
invoke method: method on null due to:
org.apache.camel.component.bean.MethodNotFoundException: Method with name:
method not found on bean: Hello World! of type: java.lang.String.
Exchange[Message: Hello World!]

caused by

Failed to invoke method: method on null due to:
org.apache.camel.component.bean.MethodNotFoundException: Method with name:
method not found on bean: Hello World! of type: java.lang.String.
Exchange[Message: Hello World!]


again caused by


Method with name: method not found on bean: Hello World! of type:
java.lang.String. Exchange[Message: Hello World!]


I'm using camel 2.10.4...
Any suggestion?

Thanks,
Cristiano






2013/7/10 Claus Ibsen <claus.ib...@gmail.com>

> 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