Camel / Spring не распознает правильный перегруженный метод - PullRequest
0 голосов
/ 23 октября 2018

Я использую Apache Camel 2.16.1.У меня есть класс A с перегруженными методами:

doThing(String, String, String)
doThing(String, String, int)

У меня есть код Camel в Spring DSL:

<setProperty>
    <method method="doThing(${body}, 'blah', 10)" ref="A"/>
</setProperty>

Я получаю неоднозначное исключение метода, когда кажется, что оно должно оченьчетко определить второй метод "String, String, int".Если бы я хотел первый, вызов был бы «doThing (« бла »,« бла »,« 10 »)».Как я могу это исправить без переименования метода?Я пробовал такие вещи безуспешно:

<setProperty>
    <method method="doThing(${body}, 'blah', int 10)" ref="A"/>
</setProperty>

<setProperty>
    <method method="doThing(${body}, 'blah', '10')" ref="A"/>
</setProperty>

<setProperty>
    <method method="doThing(${body}, 'blah', String '10')" ref="A"/>
</setProperty>

1 Ответ

0 голосов
/ 23 октября 2018

Как отмечено в комментариях, это работает в более новых выпусках Camel, так как класс BeanInfo был улучшен для выбора лучшего метода с использованием типов параметров.

С верблюдом 2.17 он уже работает

Однако для более старых версий я предполагаю, что это невозможно, поскольку Документы по связыванию бинов говорят

В настоящее время верблюд поддерживает только указание привязки параметра или тип для параметра в параметре имени метода.Вы не можете указать оба одновременно

...