You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Joe Fernandez (JIRA)" <ji...@apache.org> on 2015/03/09 18:28:38 UTC
[jira] [Created] (CAMEL-8463) Have Camel Support Method Overloading
With Implicit Binding Of Exchange
Joe Fernandez created CAMEL-8463:
------------------------------------
Summary: Have Camel Support Method Overloading With Implicit Binding Of Exchange
Key: CAMEL-8463
URL: https://issues.apache.org/jira/browse/CAMEL-8463
Project: Camel
Issue Type: Improvement
Components: camel-core
Reporter: Joe Fernandez
Allow overloading of methods that accept a Camel exchange.
Suppose one defines a bean called “helloBean” with the following two methods:
{code}
public void hello(String first)
public void hello(String first, String last)
{code}
The following Camel route will distinguish one method from the other.
{code}
from("timer://foo?repeatCount=1")
.beanRef("helloBean", "hello('Wilma')")
.beanRef("helloBean", "hello('Wilma','Flintstone')");
{code}
Now alter the two methods to have them accept a Camel Exchange, as follows:
{code}
public void hello(String first, Exchange ex1)
public void hello(String first, String last, Exchange ex1)
{code}
The same Camel route will not be able to distinguish one method from the other. The route will throw either an AmbiguousMethodCallException or ParameterBindingException exception.
If, on the other hand, you remove one of the methods, and alter the route accordingly, then the route will work just fine and the exchange will be implicitly passed to the method. For example,
{code}
public void hello(String first, String last, Exchange ex1)
from("timer://foo?repeatCount=1")
.beanRef("helloBean", "hello('Wilma','Flintstone')");
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)