Camel/Spring не распознает правильный перегруженный метод

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

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 ответ

Решение

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

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

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

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

Другие вопросы по тегам