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