You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2011/03/25 09:04:21 UTC
svn commit: r1085277 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/builder/ExpressionBuilder.java
main/java/org/apache/camel/language/bean/BeanExpression.java
test/java/org/apache/camel/language/SimpleTest.java
Author: cmoulliard
Date: Fri Mar 25 08:04:21 2011
New Revision: 1085277
URL: http://svn.apache.org/viewvc?rev=1085277&view=rev
Log:
camel-3802: Improve code to support keys with dots in when using Simple language and OGNL
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java
camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=1085277&r1=1085276&r2=1085277&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Fri Mar 25 08:04:21 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/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java?rev=1085277&r1=1085276&r2=1085277&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanExpression.java Fri Mar 25 08:04:21 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/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java?rev=1085277&r1=1085276&r2=1085277&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java Fri Mar 25 08:04:21 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>();