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 2012/03/31 14:51:36 UTC

svn commit: r1307792 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java test/java/org/apache/camel/language/simple/SimpleTest.java

Author: davsclaus
Date: Sat Mar 31 12:51:36 2012
New Revision: 1307792

URL: http://svn.apache.org/viewvc?rev=1307792&view=rev
Log:
CAMEL-5134: Simple language can now refer to headers using square bracket notation.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java?rev=1307792&r1=1307791&r2=1307792&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java Sat Mar 31 12:51:36 2012
@@ -142,7 +142,13 @@ public class SimpleFunctionExpression ex
         }
         if (remainder != null) {
             // remove leading character (dot or ?)
-            remainder = remainder.substring(1);
+            if (remainder.startsWith(".") || remainder.startsWith("?")) {
+                remainder = remainder.substring(1);
+            }
+            // remove starting and ending brackets
+            if (remainder.startsWith("[") && remainder.endsWith("]")) {
+                remainder = remainder.substring(1, remainder.length() - 1);
+            }
 
             // validate syntax
             boolean invalid = OgnlHelper.isInvalidValidOgnlExpression(remainder);
@@ -172,7 +178,13 @@ public class SimpleFunctionExpression ex
         remainder = ifStartsWithReturnRemainder("property", function);
         if (remainder != null) {
             // remove leading character (dot or ?)
-            remainder = remainder.substring(1);
+            if (remainder.startsWith(".") || remainder.startsWith("?")) {
+                remainder = remainder.substring(1);
+            }
+            // remove starting and ending brackets
+            if (remainder.startsWith("[") && remainder.endsWith("]")) {
+                remainder = remainder.substring(1, remainder.length() - 1);
+            }
 
             // validate syntax
             boolean invalid = OgnlHelper.isInvalidValidOgnlExpression(remainder);

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java?rev=1307792&r1=1307791&r2=1307792&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java Sat Mar 31 12:51:36 2012
@@ -432,6 +432,12 @@ public class SimpleTest extends Language
         assertExpression("${in.headers.foo}", "abc");
     }
 
+    public void testHeadersWithBracket() throws Exception {
+        assertExpression("headers[foo]", "abc");
+        assertExpression("${headers[foo]}", "abc");
+        assertExpression("${in.headers[foo]}", "abc");
+    }
+
     public void testIsInstanceOfEmptyBody() throws Exception {
         // set an empty body
         exchange.getIn().setBody(null);