You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Artem St (Jira)" <ji...@apache.org> on 2023/02/18 11:31:00 UTC

[jira] [Created] (CAMEL-19075) camel-bean. Incorrect choice of overloaded method with several arguments, if one of them has brackets.

Artem St created CAMEL-19075:
--------------------------------

             Summary: camel-bean. Incorrect choice of overloaded method with several arguments, if one of them has brackets.
                 Key: CAMEL-19075
                 URL: https://issues.apache.org/jira/browse/CAMEL-19075
             Project: Camel
          Issue Type: Bug
          Components: camel-bean
    Affects Versions: 3.20.2, 3.14.7
            Reporter: Artem St


camel-bean incorectly choice method if class has overloaded methods and one of the paramets has bracket close symbol ")".

 

Here is a test case:

 
{code:java}
@ExtendWith(MockitoExtension.class)
public class BeanProcessorOverloadedMethodsWithBracketsTest extends CamelTestSupport {

    private final String strArgWithBrackets = ")(string_with_brackets()))())";

    @Test
    public void testOverloadedMethodWithBracketsParams() throws InterruptedException {
        template.sendBody("direct:start", null);
        MockEndpoint mock = getMockEndpoint("mock:result");
        String receivedExchangeBody = mock.getExchanges().get(0).getMessage().getBody(String.class);
        assertEquals(new MyOverloadedClass().myMethod(strArgWithBrackets, strArgWithBrackets), receivedExchangeBody);
    }

    @Override
    protected RouteBuilder createRouteBuilder() {
        return new RouteBuilder() {
            public void configure() {
                from("direct:start")
                        .bean(MyOverloadedClass.class, "myMethod('" + strArgWithBrackets + "', '" + strArgWithBrackets + "')")
                        .to("mock:result");
            }
        };
    }

    public static class MyOverloadedClass {
        public String myMethod() {
            return "";
        }

        public String myMethod(String str) {
            return str;
        }

        public String myMethod(String str1, String str2) {
            return str1 + str2;
        }
    }
} {code}
In test example above I am trying to call myMethod with two arguments, but instead of it camel-bean chooses method with one argument.

Test returns the assertion error:
{code:java}
org.opentest4j.AssertionFailedError: 
Expected :)(string_with_brackets()))()))(string_with_brackets()))())
Actual   :)(string_with_brackets()))()){code}
 



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