You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/03/18 09:39:24 UTC

[6/6] git commit: CAMEL-7303: Simple language accesing header with key quoted should unqoute, as headerAs does.

CAMEL-7303: Simple language accesing header with key quoted should unqoute, as headerAs does.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7569a4b1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7569a4b1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7569a4b1

Branch: refs/heads/camel-2.12.x
Commit: 7569a4b1830842590d27de718925dd456711834d
Parents: c0d3d44
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Mar 18 09:25:10 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Mar 18 09:42:00 2014 +0100

----------------------------------------------------------------------
 .../simple/ast/SimpleFunctionExpression.java      | 10 ++++++----
 .../apache/camel/language/simple/SimpleTest.java  | 18 ++++++++++++++++++
 2 files changed, 24 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7569a4b1/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java b/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
index 985857a..d02f050 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
@@ -268,19 +268,21 @@ public class SimpleFunctionExpression extends LiteralExpression {
             if (remainder.startsWith("[") && remainder.endsWith("]")) {
                 remainder = remainder.substring(1, remainder.length() - 1);
             }
+            // remove quotes from key
+            String key = StringHelper.removeLeadingAndEndingQuotes(remainder);
 
             // validate syntax
-            boolean invalid = OgnlHelper.isInvalidValidOgnlExpression(remainder);
+            boolean invalid = OgnlHelper.isInvalidValidOgnlExpression(key);
             if (invalid) {
                 throw new SimpleParserException("Valid syntax: ${header.name[key]} was: " + function, token.getIndex());
             }
 
-            if (OgnlHelper.isValidOgnlExpression(remainder)) {
+            if (OgnlHelper.isValidOgnlExpression(key)) {
                 // ognl based header
-                return ExpressionBuilder.headersOgnlExpression(remainder);
+                return ExpressionBuilder.headersOgnlExpression(key);
             } else {
                 // regular header
-                return ExpressionBuilder.headerExpression(remainder);
+                return ExpressionBuilder.headerExpression(key);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/7569a4b1/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
index 407f755..c9e22a3 100644
--- a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
+++ b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
@@ -524,6 +524,24 @@ public class SimpleTest extends LanguageTestSupport {
         assertExpression("${in.headers}", headers);
     }
 
+    public void testHeaderKeyWithSpace() throws Exception {
+        Map<String, Object> headers = exchange.getIn().getHeaders();
+        headers.put("some key", "Some Value");
+        assertEquals(3, headers.size());
+
+        assertExpression("${headerAs(foo,String)}", "abc");
+        assertExpression("${headerAs(some key,String)}", "Some Value");
+        assertExpression("${headerAs('some key',String)}", "Some Value");
+
+        assertExpression("${header[foo]}", "abc");
+        assertExpression("${header[some key]}", "Some Value");
+        assertExpression("${header['some key']}", "Some Value");
+
+        assertExpression("${headers[foo]}", "abc");
+        assertExpression("${headers[some key]}", "Some Value");
+        assertExpression("${headers['some key']}", "Some Value");
+    }
+
     public void testHeaderAs() throws Exception {
         assertExpression("${headerAs(foo,String)}", "abc");