Hi Ah yeah the null safe doesn't apply for methods not found. I am not sure if this is a good idea to add support for that. As if you have a typo in the method name, then the null safe will ignore that also.
And adding more stuff to the syntax would just confuse even more, eg For example with a double ?? to indicate ignore method not found. ${body??.method??.name} The ? is null safe, so its if the getMethod returns null, then break out of the OGNL path. On Wed, Jul 10, 2013 at 7:01 PM, Cristiano Costantini <cristiano.costant...@gmail.com> wrote: > 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 >> -- 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