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

Reply via email to