Federico Mariani created CAMEL-24102:
----------------------------------------

             Summary: camel-bean: AmbiguousMethodCallException from 
body-conversion matching lists the same method twice instead of the actual 
candidates
                 Key: CAMEL-24102
                 URL: https://issues.apache.org/jira/browse/CAMEL-24102
             Project: Camel
          Issue Type: Bug
          Components: camel-bean
    Affects Versions: 4.21.0
            Reporter: Federico Mariani


When bean method selection falls into the body-conversion matching loop and 
more than one method's body parameter is convertible from the message body, 
{{BeanInfo.chooseBestPossibleMethodInfo}} throws:

{code:java}
if (matchCounter > 1) {
    throw new AmbiguousMethodCallException(exchange, Arrays.asList(matched, 
matched));
}
{code}

{{matched}} only holds the *last* convertible method, so the exception reports 
one method *listed twice* and omits the other candidate(s) entirely. Users 
debugging the ambiguity get actively misleading information. Present since 2010 
(commit a455c4bb8041).

*Suggested fix*

Collect the convertible candidates in a list during the loop and pass that list 
to the exception.

*Reproducer*

Attached test {{BeanAmbiguousExceptionDuplicateMethodTest}} fails on main 
(4.22.0-SNAPSHOT). With a bean having {{foo(Integer)}} and {{bar(Double)}} and 
a String body {{"123"}} (convertible to both), the exception reports:
{noformat}
[public java.lang.String ...MyAmbiguousBean.foo(java.lang.Integer),
 public java.lang.String ...MyAmbiguousBean.foo(java.lang.Integer)]
{noformat}
i.e. {{foo}} twice, {{bar}} not mentioned at all.

_This issue was found by an AI-assisted code review. Reported by Claude Code on 
behalf of [~fmariani] (GitHub: Croway)._



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to