Author: davsclaus
Date: Mon Sep 12 09:41:28 2011
New Revision: 1169668

URL: http://svn.apache.org/viewvc?rev=1169668&view=rev
Log:
CAMEL-3619: Simple language fixed issue with parsing on windows which uses file 
separators that clashes with escaped values

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/TokenType.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserExpressionTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java?rev=1169668&r1=1169667&r2=1169668&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
 Mon Sep 12 09:41:28 2011
@@ -442,10 +442,10 @@ public class SimplePredicateParser exten
 
     protected boolean singleQuotedLiteralWithFunctionsText() {
         if (accept(TokenType.singleQuote)) {
-            nextToken(TokenType.singleQuote, TokenType.eol, 
TokenType.functionStart, TokenType.functionEnd, TokenType.escapedValue);
+            nextToken(TokenType.singleQuote, TokenType.eol, 
TokenType.functionStart, TokenType.functionEnd);
             while (!token.getType().isSingleQuote() && 
!token.getType().isEol()) {
                 // we need to loop until we find the ending single quote, or 
the eol
-                nextToken(TokenType.singleQuote, TokenType.eol, 
TokenType.functionStart, TokenType.functionEnd, TokenType.escapedValue);
+                nextToken(TokenType.singleQuote, TokenType.eol, 
TokenType.functionStart, TokenType.functionEnd);
             }
             expect(TokenType.singleQuote);
             return true;
@@ -468,10 +468,10 @@ public class SimplePredicateParser exten
 
     protected boolean doubleQuotedLiteralWithFunctionsText() {
         if (accept(TokenType.doubleQuote)) {
-            nextToken(TokenType.doubleQuote, TokenType.eol, 
TokenType.functionStart, TokenType.functionEnd, TokenType.escapedValue);
+            nextToken(TokenType.doubleQuote, TokenType.eol, 
TokenType.functionStart, TokenType.functionEnd);
             while (!token.getType().isDoubleQuote() && 
!token.getType().isEol()) {
                 // we need to loop until we find the ending double quote, or 
the eol
-                nextToken(TokenType.doubleQuote, TokenType.eol, 
TokenType.functionStart, TokenType.functionEnd, TokenType.escapedValue);
+                nextToken(TokenType.doubleQuote, TokenType.eol, 
TokenType.functionStart, TokenType.functionEnd);
             }
             expect(TokenType.doubleQuote);
             return true;
@@ -609,27 +609,18 @@ public class SimplePredicateParser exten
     }
 
     protected boolean numericValue() {
-        if (accept(TokenType.numericValue)) {
-            // no other tokens to check so do not use nextToken
-            return true;
-        }
-        return false;
+        return accept(TokenType.numericValue);
+        // no other tokens to check so do not use nextToken
     }
 
     protected boolean booleanValue() {
-        if (accept(TokenType.booleanValue)) {
-            // no other tokens to check so do not use nextToken
-            return true;
-        }
-        return false;
+        return accept(TokenType.booleanValue);
+        // no other tokens to check so do not use nextToken
     }
 
     protected boolean nullValue() {
-        if (accept(TokenType.nullValue)) {
-            // no other tokens to check so do not use nextToken
-            return true;
-        }
-        return false;
+        return accept(TokenType.nullValue);
+        // no other tokens to check so do not use nextToken
     }
 
 }

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java?rev=1169668&r1=1169667&r2=1169668&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
 Mon Sep 12 09:41:28 2011
@@ -131,16 +131,6 @@ public final class SimpleTokenizer {
 
     private static SimpleToken doNextToken(String expression, int index, 
TokenType... filters) {
 
-        boolean escapedAllowed = acceptType(TokenType.escapedValue, filters);
-        if (escapedAllowed) {
-            // is it an escaped value
-            if (expression.charAt(index) == '\\' && index < 
expression.length() - 1) {
-                String text = "" + expression.charAt(index + 1);
-                // use 2 as length for escaped as we need to jump to the next 
symbol
-                return new SimpleToken(new 
SimpleTokenType(TokenType.escapedValue, text), index, 2);
-            }
-        }
-
         boolean numericAllowed = acceptType(TokenType.numericValue, filters);
         if (numericAllowed) {
             // is it a numeric value

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/TokenType.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/TokenType.java?rev=1169668&r1=1169667&r2=1169668&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/TokenType.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/TokenType.java
 Mon Sep 12 09:41:28 2011
@@ -22,10 +22,10 @@ package org.apache.camel.language.simple
 public enum TokenType {
 
     whiteSpace, character,
-    escapedValue, booleanValue, numericValue, nullValue,
+    booleanValue, numericValue, nullValue,
     singleQuote, doubleQuote,
     functionStart, functionEnd,
     binaryOperator, unaryOperator, logicalOperator,
-    eol;
+    eol
 
 }

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserExpressionTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserExpressionTest.java?rev=1169668&r1=1169667&r2=1169668&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserExpressionTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserExpressionTest.java
 Mon Sep 12 09:41:28 2011
@@ -69,15 +69,15 @@ public class SimpleParserExpressionTest 
         assertEquals("World", exp.evaluate(exchange, String.class));
     }
 
-    public void testSimpleSingleQuoteWithEscape() throws Exception {
-        SimpleExpressionParser parser = new SimpleExpressionParser("Pay 200\\$ 
today");
+    public void testSimpleSingleQuoteDollar() throws Exception {
+        SimpleExpressionParser parser = new SimpleExpressionParser("Pay 200$ 
today");
         Expression exp = parser.parseExpression();
 
         assertEquals("Pay 200$ today", exp.evaluate(exchange, String.class));
     }
 
-    public void testSimpleSingleQuoteWithEscapeEnd() throws Exception {
-        SimpleExpressionParser parser = new SimpleExpressionParser("Pay 
200\\$");
+    public void testSimpleSingleQuoteDollarEnd() throws Exception {
+        SimpleExpressionParser parser = new SimpleExpressionParser("Pay 200$");
         Expression exp = parser.parseExpression();
 
         assertEquals("Pay 200$", exp.evaluate(exchange, String.class));
@@ -115,13 +115,4 @@ public class SimpleParserExpressionTest 
         assertEquals(Integer.valueOf(121), exp.evaluate(exchange, 
Integer.class));
     }
 
-    public void testSimpleEscape() throws Exception {
-        exchange.getIn().setBody("World");
-        // we escape the $ which mean it will not be a function
-        SimpleExpressionParser parser = new SimpleExpressionParser("Hello 
\\${body\\} how are you?");
-        Expression exp = parser.parseExpression();
-
-        assertEquals("Hello ${body} how are you?", exp.evaluate(exchange, 
String.class));
-    }
-
 }


Reply via email to