Author: dkulp
Date: Fri Jul  8 19:20:24 2011
New Revision: 1144428

URL: http://svn.apache.org/viewvc?rev=1144428&view=rev
Log:
Merged revisions 1085277 via svnmerge from 
https://svn.apache.org/repos/asf/camel/trunk

........
  r1085277 | cmoulliard | 2011-03-25 04:04:21 -0400 (Fri, 25 Mar 2011) | 1 line
  
  camel-3802: Improve code to support keys with dots in when using Simple 
language and OGNL
........

Modified:
    camel/branches/camel-2.7.x/   (props changed)
    
camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
    
camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java
    
camel/branches/camel-2.7.x/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java

Propchange: camel/branches/camel-2.7.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jul  8 19:20:24 2011
@@ -1 +1 @@
-/camel/trunk:1083696,1083723-1083724,1084150,1085905,1085909,1086231,1087005,1087276,1087612,1087856,1088583,1088916-1088917,1089275,1090166,1090960-1090969,1091518,1091771,1091799,1092068,1092577,1092667,1093978,1094147,1094156,1095405,1095469,1095471,1095475-1095476,1096346,1097909,1097912,1097978,1098630,1099417,1100975,1102162,1102181,1104076,1124497,1127744,1127988,1131411,1134252,1134501,1135223,1135364,1136290,1138285,1139163,1140096-1140102,1141783,1143925,1144248,1144324
+/camel/trunk:1083696,1083723-1083724,1084150,1085277,1085905,1085909,1086231,1087005,1087276,1087612,1087856,1088583,1088916-1088917,1089275,1090166,1090960-1090969,1091518,1091771,1091799,1092068,1092577,1092667,1093978,1094147,1094156,1095405,1095469,1095471,1095475-1095476,1096346,1097909,1097912,1097978,1098630,1099417,1100975,1102162,1102181,1104076,1124497,1127744,1127988,1131411,1134252,1134501,1135223,1135364,1136290,1138285,1139163,1140096-1140102,1141783,1143925,1144248,1144324

Modified: 
camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=1144428&r1=1144427&r2=1144428&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
 (original)
+++ 
camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
 Fri Jul  8 19:20:24 2011
@@ -19,12 +19,7 @@ package org.apache.camel.builder;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.text.SimpleDateFormat;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
-import java.util.Scanner;
+import java.util.*;
 import java.util.regex.Pattern;
 
 import org.apache.camel.Component;
@@ -181,8 +176,19 @@ public final class ExpressionBuilder {
                     return header;
                 }
 
-                // split into first name
-                List<String> methods = OgnlHelper.splitOgnl(ognl);
+                // Split ognl except
+                // when this is not a Map, Array
+                // and we would like to keep the dots
+                // within the key name
+                List<String> methods;
+
+                if (ognl.startsWith("[") && ognl.endsWith("]")) {
+                   methods = new ArrayList<String>();
+                   methods.add(ognl);
+                } else {
+                   methods = OgnlHelper.splitOgnl(ognl);
+                }
+
                 // remove any OGNL operators so we got the pure key name
                 String key = OgnlHelper.removeOperators(methods.get(0));
 

Modified: 
camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java?rev=1144428&r1=1144427&r2=1144428&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java
 (original)
+++ 
camel/branches/camel-2.7.x/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java
 Fri Jul  8 19:20:24 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.language.bean;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -180,7 +181,20 @@ public class BeanExpression implements E
 
             // loop and invoke each method
             Object beanToCall = bean;
-            List<String> methods = OgnlHelper.splitOgnl(ognl);
+
+            // Split ognl except
+            // when this is not a Map, Array
+            // and we would like to keep the dots
+            // within the key name
+            List<String> methods;
+
+            if (ognl.startsWith("[") && ognl.endsWith("]")) {
+               methods = new ArrayList<String>();
+               methods.add(ognl);
+            } else {
+               methods = OgnlHelper.splitOgnl(ognl);
+            }
+
             for (String methodName : methods) {
                 BeanHolder holder = new ConstantBeanHolder(beanToCall, 
exchange.getContext());
 

Modified: 
camel/branches/camel-2.7.x/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java?rev=1144428&r1=1144427&r2=1144428&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
 (original)
+++ 
camel/branches/camel-2.7.x/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
 Fri Jul  8 19:20:24 2011
@@ -389,6 +389,14 @@ public class SimpleTest extends Language
         assertExpression("${header.unknown[cool]}", null);
     }
 
+    public void testOGNLHeaderMapWithDot() throws Exception {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("this.code","This code");
+        exchange.getIn().setHeader("wicket", map);
+
+        assertExpression("${header.wicket[this.code]}","This code");
+    }
+
     public void testOGNLHeaderMapNotMap() throws Exception {
         try {
             assertExpression("${header.foo[bar]}", null);
@@ -417,6 +425,14 @@ public class SimpleTest extends Language
         assertExpression("${in.body[foo]}", "Camel");
         assertExpression("${in.body[bar]}", 6);
     }
+
+    public void testBodyOGNLAsMapWithDot() throws Exception {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("foo.bar", "Camel");
+        exchange.getIn().setBody(map);
+
+        assertExpression("${in.body[foo.bar]}", "Camel");
+    }
     
     public void testBodyOGNLAsMapShorthand() throws Exception {
         Map<String, Object> map = new HashMap<String, Object>();


Reply via email to