Hi,

We have another issue with camel bean and methid invocation  but this time
its on the bean menthod invocation  thats done thru toD uri. Calling a bean
method using the below snippet works when access the header stored
properties .the property1 in headers gets resolved to the custom class type
and gets called to the correct overloaded method  in the bean.
 <bean ref="bean-ref" method="method1(${body}, <custom class type>.class
${headers[property1]})">

But when the same bean is called thru the
The below snippet the property1 under headers is always resolved as string
and it ends up being called as a string parameter there by throwing method
invocation error.
<toD uri="bean-ref?method1(${body}, <custom class type>.class
${headers[property1]})">

The very purpose we are using toD  is for Dynamic routing to the required
bean reference there by limiting us to just configurations on the route
DSL.Any advise on this issue or fix is highly  appreciated.

*Camel version:4.8.1*
*Springboot based app: 3.3.5*

Thanks
Logeshwaran Devakar


On Fri, Jul 5, 2024, 9:02 PM logesh <logeshro...@gmail.com> wrote:

> I am trying to use bean with reference and method call.The bean has
> overloaded methods and hence it is being called in this way.The below
> method call was populated with parameter type and value in reference to the
> guidanct provided in  here.
>
> https://camel.apache.org/manual/bean-binding.html#_declaring_parameter_type_and_value
>
> My bean spring DSL looks as below
>
> <bean ref=bean1 method="Sendmsg(java.lang.String.class ${body},
> Java.lang.String.class {{appsproperty.value}})"
>
> I get  ambiguous method invocation possible exception.
> On investigating further this was drilled down to issue happening during
> the matchmethod call in BeanInfo class under org.apache.camel.component.
>
> The matchmethod was calling the method splitsafequote method with 4
> parameters (input seperator trime:true and keepquote:true) in
> strignquotehelper class under org.apache.camel.util which splits the
> parameters and types.The problem was isolated to the type and value
> concatenated with space between them ignored.The flag skipleadingwhitespace
> is set to true and is never changed which ignores the space and is missed
> in the parsing logic.
> This in turn breaks at the match method which looks for the indexof(32)
> which is for a whitespace and since it's not there it returns -1 and there
> by breaking the whole purpose of passing parameter type and value.
>
> Camel version used :4.5.0
> Camel components:camel-bean and camel-util
>
> Please let know if this is a bug or if any missing configuration from.my
> side
>
> PS:I changed the flag to false and it works fine with the above bean
> method call
>
> Thanks
> Logeshwaran Devakar
>
>
>

Reply via email to