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 2012/07/04 09:23:53 UTC

svn commit: r1357115 - in /camel/branches/camel-2.9.x: ./ camel-core/src/main/java/org/apache/camel/language/simple/ast/ camel-core/src/test/java/org/apache/camel/language/simple/

Author: davsclaus
Date: Wed Jul  4 07:23:53 2012
New Revision: 1357115

URL: http://svn.apache.org/viewvc?rev=1357115&view=rev
Log:
CAMEL-5415: Fixed simple empty quoted literals to be empty expression when used in predicates, so you can compare against empty strings.

Modified:
    camel/branches/camel-2.9.x/   (props changed)
    camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
    camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
    camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1357114

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java?rev=1357115&r1=1357114&r2=1357115&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java Wed Jul  4 07:23:53 2012
@@ -17,6 +17,7 @@
 package org.apache.camel.language.simple.ast;
 
 import org.apache.camel.Expression;
+import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.language.simple.types.SimpleToken;
 
 /**
@@ -39,11 +40,15 @@ public class DoubleQuoteStart extends Ba
 
     @Override
     public Expression createExpression(String expression) {
+        Expression answer = null;
         if (block != null) {
-            return block.createExpression(expression);
-        } else {
-            return null;
+            answer = block.createExpression(expression);
         }
+        if (answer == null) {
+            // there quoted literal is empty
+            answer = ExpressionBuilder.constantExpression("");
+        }
+        return answer;
     }
 
     @Override

Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java?rev=1357115&r1=1357114&r2=1357115&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java Wed Jul  4 07:23:53 2012
@@ -17,6 +17,7 @@
 package org.apache.camel.language.simple.ast;
 
 import org.apache.camel.Expression;
+import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.language.simple.types.SimpleToken;
 
 /**
@@ -39,11 +40,15 @@ public class SingleQuoteStart extends Ba
 
     @Override
     public Expression createExpression(String expression) {
+        Expression answer = null;
         if (block != null) {
-            return block.createExpression(expression);
-        } else {
-            return null;
+            answer = block.createExpression(expression);
         }
+        if (answer == null) {
+            // there quoted literal is empty
+            answer = ExpressionBuilder.constantExpression("");
+        }
+        return answer;
     }
 
     @Override

Modified: camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java?rev=1357115&r1=1357114&r2=1357115&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java Wed Jul  4 07:23:53 2012
@@ -48,6 +48,24 @@ public class SimpleOperatorTest extends 
         assertPredicate("${body} != null", false);
     }
 
+    public void testEmptyValue() throws Exception {
+        exchange.getIn().setBody("");
+        assertPredicate("${in.body} == null", false);
+        assertPredicate("${body} == null", false);
+
+        exchange.getIn().setBody("");
+        assertPredicate("${in.body} == ''", true);
+        assertPredicate("${body} == \"\"", true);
+
+        exchange.getIn().setBody(" ");
+        assertPredicate("${in.body} == ''", false);
+        assertPredicate("${body} == \"\"", false);
+
+        exchange.getIn().setBody("Value");
+        assertPredicate("${in.body} == ''", false);
+        assertPredicate("${body} == \"\"", false);
+    }
+
     public void testAnd() throws Exception {
         assertPredicate("${in.header.foo} == 'abc' && ${in.header.bar} == 123", true);
         assertPredicate("${in.header.foo} == 'abc' && ${in.header.bar} == 444", false);