2016-07-27 6 views
1

Привет Я хотел бы использовать значение заголовка из моей замены верблюда как условие фильтра в моем выражении JsonPath.Можно ли использовать выражение Camel Simple Expression внутри JsonPath Language?

Somethink так:

.setBody().jsonpath("$.person[?(@.role=='${headers.role}')]") 

Простое выражение не будет решена таким образом.

Как это сделать с помощью Apache Camel?

ответ

3

Я открыл один из способов, чтобы сделать это с компонентом процессора и некоторых Java-код:

String jsonpathFilter = SimpleLanguage.simple(
    "$.person[?(@.role=='${headers.role}')]").evaluate(exchange, String.class); 
String result = new JsonPathExpression(jsonpathFilter).evaluate(exchange, String.class); 
exchange.getIn().setBody(result); 

Но я не очень доволен этим решением. Поэтому, если вы знаете лучший способ, пожалуйста, дайте мне знать.

+0

Gotcha - ваше собственное решение в этом случае предпочтительнее, пока не будет разрешен CAMEL-10189 (что более или менее делает то же, что и вы). Я удалил свой ответ. –

1

Нет, это невозможно напрямую в синтаксисе, но это хорошая идея. Поэтому я зарегистрировал билет: https://issues.apache.org/jira/browse/CAMEL-10189

Если у нас есть это из коробки, то он работает для любых DSL, таких как Java и XML DSL.

+0

Спасибо, что облегчило бы в будущем. – JBernhardt

 Смежные вопросы

  • Нет связанных вопросов^_^