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>();