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


Reply via email to