This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new c4297b4 CAMEL-13749: Added MapAccessor to SpEL evaluation context c4297b4 is described below commit c4297b4c4e4e96a894aef5fe7b19db97b47ab412 Author: Soner Koksal <soner.kok...@arvato.com> AuthorDate: Mon Jul 15 11:18:41 2019 +0300 CAMEL-13749: Added MapAccessor to SpEL evaluation context --- components/camel-spring/src/main/docs/spel-language.adoc | 4 ++-- .../main/java/org/apache/camel/language/spel/SpelExpression.java | 2 ++ .../src/test/java/org/apache/camel/language/spel/SpelTest.java | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/components/camel-spring/src/main/docs/spel-language.adoc b/components/camel-spring/src/main/docs/spel-language.adoc index a966c12..f8f2a22 100644 --- a/components/camel-spring/src/main/docs/spel-language.adoc +++ b/components/camel-spring/src/main/docs/spel-language.adoc @@ -124,7 +124,7 @@ Filter]: <route> <from uri="direct:foo"/> <filter> - <spel>#{request.headers['foo'] == 'bar'}</spel> + <spel>#{request.headers.foo == 'bar'}</spel> <to uri="direct:bar"/> </filter> </route> @@ -135,7 +135,7 @@ And the equivalent in Java DSL: [source,java] ---- from("direct:foo") - .filter().spel("#{request.headers['foo'] == 'bar'}") + .filter().spel("#{request.headers.foo == 'bar'}") .to("direct:bar"); ---- diff --git a/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelExpression.java b/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelExpression.java index 3eea7f1..bab9ad8 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelExpression.java +++ b/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelExpression.java @@ -22,6 +22,7 @@ import org.apache.camel.spring.SpringCamelContext; import org.apache.camel.spring.util.RegistryBeanResolver; import org.springframework.context.ApplicationContext; import org.springframework.context.expression.BeanFactoryResolver; +import org.springframework.context.expression.MapAccessor; import org.springframework.expression.BeanResolver; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; @@ -72,6 +73,7 @@ public class SpelExpression extends org.apache.camel.support.ExpressionSupport { private EvaluationContext createEvaluationContext(Exchange exchange) { StandardEvaluationContext evaluationContext = new StandardEvaluationContext(new RootObject(exchange)); + evaluationContext.addPropertyAccessor(new MapAccessor()); if (beanResolver != null) { evaluationContext.setBeanResolver(beanResolver); } else if (exchange.getContext() instanceof SpringCamelContext) { diff --git a/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java b/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java index 58a47ba..529238e 100644 --- a/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java +++ b/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelTest.java @@ -32,6 +32,11 @@ public class SpelTest extends LanguageTestSupport { assertExpression("#{request.Headers['foo'] == 'abc'}", true); assertExpression("#{request.headers['bar'] == 123}", true); assertExpression("#{request.headers['bar'] > 10}", true); + assertExpression("#{request.Headers.foo}", "abc"); + assertExpression("#{getRequest().Headers.foo}", "abc"); + assertExpression("#{request.Headers.foo == 'abc'}", true); + assertExpression("#{request.headers.bar == 123}", true); + assertExpression("#{request.headers.bar > 10}", true); assertExpression("#{6 / -3}", -2); } @@ -40,6 +45,9 @@ public class SpelTest extends LanguageTestSupport { assertPredicate("#{request.headers['foo'].startsWith('a')}"); assertPredicate("#{request.headers['foo'] == 'abc'}"); assertPredicateFails("#{request.headers['foo'] == 'badString'}"); + assertPredicate("#{request.headers.foo.startsWith('a')}"); + assertPredicate("#{request.headers.foo == 'abc'}"); + assertPredicateFails("#{request.headers.foo == 'badString'}"); } @Test