Apache Camel - Groovy Scripting

1

Я пытаюсь использовать скрипт Groovy в Spring DSL следующим образом:

<from uri="file://{{my.path}}">
    <choice>
        <when>
            <groovy>properties.resolve 'file.one.isActive' == 'true'</groovy>
            <to uri="file://{{file.one}}"/>
        </when>
        <otherwise>
            <to uri="file://{{file.two}}"/>
        </otherwise>
    </choice>
</from>

Однако я получаю следующее исключение:

    Exhausted after delivery attempt:
     1 caught: groovy.lang.MissingMethodException: 
       No signature of method: java.util.LinkedHashMap.resolve() 
           is applicable for argument types: 
                     (java.lang.Boolean) values: [false]

У меня есть эти зависимости в моем pom.xml:

       <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-script</artifactId>
            <version>2.13.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-groovy</artifactId>
            <version>2.13.1</version>
        </dependency>

На основе http://camel.apache.org/groovy.html я должен иметь возможность использовать ссылку на properties с помощью метода resolve.

Любая идея, что не так?

Теги:
groovy
apache-camel

2 ответа

1
Лучший ответ

Я столкнулся с такой же проблемой, чтобы опубликовать решение для других людей, которые столкнутся с этим в будущем.

Несмотря на информацию в документе camel, в которой говорится, что контекст скрипта предварительно сконфигурирован с атрибутом свойств org.apache.camel.builder.script.PropertiesФункция типа не происходит. Атрибут свойства разрешен для обмена свойствами. Похоже, что это дефект Верблюда (с помощью Camel 2.16.1).

Временное решение:

camelContext.resolvePropertyPlaceholders("{{file.one.isActive}}")
1

Я думаю, что он оценивает ('file.one.isActive' == 'true') до его разрешения. Лучше разрешить ( 'file.one.isActive' ) == 'true' для ясности

Ещё вопросы

Сообщество Overcoder
Наверх
Меню