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 2010/12/15 17:28:44 UTC

svn commit: r1049635 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/builder/ExpressionBuilder.java test/java/org/apache/camel/builder/PredicateBuilderTest.java

Author: davsclaus
Date: Wed Dec 15 16:28:44 2010
New Revision: 1049635

URL: http://svn.apache.org/viewvc?rev=1049635&view=rev
Log:
CAMEL-3433: Fixed in predicate to handle null results from expressions.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.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=1049635&r1=1049634&r2=1049635&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 Wed Dec 15 16:28:44 2010
@@ -935,12 +935,16 @@ public final class ExpressionBuilder {
     public static Expression convertToExpression(final Expression expression, final Class type) {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
-                return expression.evaluate(exchange, type);
+                if (type != null) {
+                    return expression.evaluate(exchange, type);
+                } else {
+                    return expression;
+                }
             }
 
             @Override
             public String toString() {
-                return "" + expression + ".convertTo(" + type.getCanonicalName() + ".class)";
+                return "" + expression;
             }
         };
     }
@@ -952,12 +956,17 @@ public final class ExpressionBuilder {
     public static Expression convertToExpression(final Expression expression, final Expression type) {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
-                return expression.evaluate(exchange, type.evaluate(exchange, Object.class).getClass());
+                Object result = type.evaluate(exchange, Object.class);
+                if (result != null) {
+                    return expression.evaluate(exchange, result.getClass());
+                } else {
+                    return expression;
+                }
             }
 
             @Override
             public String toString() {
-                return "" + expression + ".convertToEvaluatedType(" + type + ")";
+                return "" + expression;
             }
         };
     }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java?rev=1049635&r1=1049634&r2=1049635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java Wed Dec 15 16:28:44 2010
@@ -85,6 +85,11 @@ public class PredicateBuilderTest extend
         assertMatches(header("name").in("Hiram", "Jonathan", "James", "Claus"));
     }
 
+    public void testEmptyHeaderValueIn() throws Exception {
+        // there is no header with xxx
+        assertDoesNotMatch(header("xxx").in("Hiram", "Jonathan", "James", "Claus"));
+    }
+
     public void testStartsWith() throws Exception {
         assertMatches(header("name").startsWith("J"));
         assertMatches(header("name").startsWith("James"));