Repository: camel Updated Branches: refs/heads/camel-2.18.x 919da2d45 -> 5c791740b
CAMEL-11533-merge #1820 and resolve conflict for 2.18.x Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5c791740 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5c791740 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5c791740 Branch: refs/heads/camel-2.18.x Commit: 5c791740bfbad479b9d966d59324e07d9f96582d Parents: 919da2d Author: onders86 <ondersez...@gmail.com> Authored: Wed Jul 12 07:40:16 2017 +0300 Committer: onders86 <ondersez...@gmail.com> Committed: Thu Jul 13 14:37:22 2017 +0300 ---------------------------------------------------------------------- .../camel/language/simple/SimplePredicateParser.java | 12 +++++++++++- .../apache/camel/language/simple/SimpleTokenizer.java | 5 +++++ .../camel/language/simple/types/BinaryOperatorType.java | 6 +++++- .../camel/language/simple/types/SimpleTokenType.java | 7 +++++++ .../apache/camel/language/simple/types/TokenType.java | 2 +- .../camel/language/simple/SimpleOperatorTest.java | 1 - .../simple/SimpleParserPredicateInvalidTest.java | 4 ++-- 7 files changed, 31 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/5c791740/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java index 56e28da..7b73dd0 100644 --- a/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java +++ b/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java @@ -571,6 +571,7 @@ public class SimplePredicateParser extends BaseSimpleParser { boolean numericSupported = false; boolean booleanSupported = false; boolean nullSupported = false; + boolean minusSupported = false; if (types == null || types.length == 0) { literalWithFunctionsSupported = true; // favor literal with functions over literals without functions @@ -579,6 +580,7 @@ public class SimplePredicateParser extends BaseSimpleParser { numericSupported = true; booleanSupported = true; nullSupported = true; + minusSupported = true; } else { for (BinaryOperatorType.ParameterType parameterType : types) { literalSupported |= parameterType.isLiteralSupported(); @@ -587,6 +589,7 @@ public class SimplePredicateParser extends BaseSimpleParser { nullSupported |= parameterType.isNumericValueSupported(); booleanSupported |= parameterType.isBooleanValueSupported(); nullSupported |= parameterType.isNullValueSupported(); + minusSupported |= parameterType.isMinusValueSupported(); } } @@ -599,7 +602,8 @@ public class SimplePredicateParser extends BaseSimpleParser { || (functionSupported && functionText()) || (numericSupported && numericValue()) || (booleanSupported && booleanValue()) - || (nullSupported && nullValue())) { + || (nullSupported && nullValue()) + || (minusSupported && minusValue())) { // then after the right hand side value, there should be a whitespace if there is more tokens nextToken(); if (!token.getType().isEol()) { @@ -657,5 +661,11 @@ public class SimplePredicateParser extends BaseSimpleParser { return accept(TokenType.nullValue); // no other tokens to check so do not use nextToken } + + protected boolean minusValue() { + nextToken(); + return accept(TokenType.numericValue); + // no other tokens to check so do not use nextToken + } } http://git-wip-us.apache.org/repos/asf/camel/blob/5c791740/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java index 7c3aa1b..ae2a0cd 100644 --- a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java +++ b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java @@ -79,6 +79,11 @@ public final class SimpleTokenizer { // TODO: @deprecated logical operators, to be removed in Camel 3.0 KNOWN_TOKENS.add(new SimpleTokenType(TokenType.logicalOperator, "and")); KNOWN_TOKENS.add(new SimpleTokenType(TokenType.logicalOperator, "or")); + + //binary operator + // it is added as the last item because unary -- has the priority + // if unary not found it is highly possible - operator is run into. + KNOWN_TOKENS.add(new SimpleTokenType(TokenType.minusValue, "-")); } private SimpleTokenizer() { http://git-wip-us.apache.org/repos/asf/camel/blob/5c791740/camel-core/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java b/camel-core/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java index 5a7751b..ab9585d 100644 --- a/camel-core/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java +++ b/camel-core/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java @@ -122,7 +122,7 @@ public enum BinaryOperatorType { * </ul> */ public enum ParameterType { - Literal, LiteralWithFunction, Function, NumericValue, BooleanValue, NullValue; + Literal, LiteralWithFunction, Function, NumericValue, BooleanValue, NullValue, MinusValue; public boolean isLiteralSupported() { return this == Literal; @@ -147,6 +147,10 @@ public enum BinaryOperatorType { public boolean isNullValueSupported() { return this == NullValue; } + + public boolean isMinusValueSupported() { + return this == MinusValue; + } } /** http://git-wip-us.apache.org/repos/asf/camel/blob/5c791740/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java b/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java index f74e12e..cc68328 100644 --- a/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java +++ b/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java @@ -123,6 +123,13 @@ public class SimpleTokenType { public boolean isNullValue() { return type == TokenType.nullValue; } + + /** + * Whether the type is a minus operator + */ + public boolean isMinusValue() { + return type == TokenType.minusValue; + } @Override public String toString() { http://git-wip-us.apache.org/repos/asf/camel/blob/5c791740/camel-core/src/main/java/org/apache/camel/language/simple/types/TokenType.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/types/TokenType.java b/camel-core/src/main/java/org/apache/camel/language/simple/types/TokenType.java index ff1a5d7..da95427 100644 --- a/camel-core/src/main/java/org/apache/camel/language/simple/types/TokenType.java +++ b/camel-core/src/main/java/org/apache/camel/language/simple/types/TokenType.java @@ -23,7 +23,7 @@ public enum TokenType { whiteSpace, character, booleanValue, numericValue, nullValue, - singleQuote, doubleQuote, + singleQuote, doubleQuote, minusValue, escape, functionStart, functionEnd, binaryOperator, unaryOperator, logicalOperator, http://git-wip-us.apache.org/repos/asf/camel/blob/5c791740/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java index d3d5eb0..d1685cd 100644 --- a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java +++ b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java @@ -316,7 +316,6 @@ public class SimpleOperatorTest extends LanguageTestSupport { assertPredicate("${in.header.strNumNegative} not contains '123'", false); assertPredicate("${in.header.strNumNegative} contains '-123'", true); assertPredicate("${in.header.strNumNegative} not contains '-123'", false); - } public void testLessThanOrEqualOperator() throws Exception { http://git-wip-us.apache.org/repos/asf/camel/blob/5c791740/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateInvalidTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateInvalidTest.java b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateInvalidTest.java index 10ee394..d622100 100644 --- a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateInvalidTest.java +++ b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateInvalidTest.java @@ -33,7 +33,7 @@ public class SimpleParserPredicateInvalidTest extends ExchangeTestSupport { parser.parsePredicate(); fail("Should thrown exception"); } catch (SimpleIllegalSyntaxException e) { - assertEquals(18, e.getIndex()); + assertEquals(19, e.getIndex()); } } @@ -106,7 +106,7 @@ public class SimpleParserPredicateInvalidTest extends ExchangeTestSupport { parser.parsePredicate(); fail("Should thrown exception"); } catch (SimpleIllegalSyntaxException e) { - assertEquals(11, e.getIndex()); + assertEquals(13, e.getIndex()); } }