You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2016/04/07 21:27:29 UTC

[1/2] camel git commit: CAMEL-9838 - Add ends with operator to simple language

Repository: camel
Updated Branches:
  refs/heads/camel-2.17.x f465ab51d -> 8bdbe398c
  refs/heads/master c134e5a6e -> ff085260d


CAMEL-9838 - Add ends with operator to simple language


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ff085260
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ff085260
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ff085260

Branch: refs/heads/master
Commit: ff085260d530e7bc5b23c124acdca8094739ee7d
Parents: c134e5a
Author: Jonathan Anstey <ja...@gmail.com>
Authored: Thu Apr 7 16:33:06 2016 -0230
Committer: Jonathan Anstey <ja...@gmail.com>
Committed: Thu Apr 7 16:33:12 2016 -0230

----------------------------------------------------------------------
 .../apache/camel/language/simple/SimpleTokenizer.java   |  1 +
 .../camel/language/simple/ast/BinaryExpression.java     |  2 ++
 .../camel/language/simple/types/BinaryOperatorType.java |  8 +++++++-
 .../camel/language/simple/SimpleOperatorTest.java       | 12 +++++++++++-
 4 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/ff085260/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 3977260..8956fad 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
@@ -66,6 +66,7 @@ public final class SimpleTokenizer {
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.binaryOperator, "in"));
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.binaryOperator, "range"));
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.binaryOperator, "not range"));
+        KNOWN_TOKENS.add(new SimpleTokenType(TokenType.binaryOperator, "ends with"));
 
         // unary operators
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.unaryOperator, "++"));

http://git-wip-us.apache.org/repos/asf/camel/blob/ff085260/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java b/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
index 6d0e779..3c76c31 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
@@ -104,6 +104,8 @@ public class BinaryExpression extends BaseSimpleNode {
             return createInExpression(leftExp, rightExp);
         } else if (operator == BinaryOperatorType.RANGE || operator == BinaryOperatorType.NOT_RANGE) {
             return createRangeExpression(expression, leftExp, rightExp);
+        } else if (operator == BinaryOperatorType.ENDS_WITH) {
+            return createExpression(leftExp, rightExp, PredicateBuilder.endsWith(leftExp, rightExp));
         }
 
         throw new SimpleParserException("Unknown binary operator " + operator, token.getIndex());

http://git-wip-us.apache.org/repos/asf/camel/blob/ff085260/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 2156c30..02e7665 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
@@ -22,7 +22,7 @@ package org.apache.camel.language.simple.types;
 public enum BinaryOperatorType {
 
     EQ, EQ_IGNORE, GT, GTE, LT, LTE, NOT_EQ, CONTAINS, NOT_CONTAINS, REGEX, NOT_REGEX,
-    IN, NOT_IN, IS, NOT_IS, RANGE, NOT_RANGE;
+    IN, NOT_IN, IS, NOT_IS, RANGE, NOT_RANGE, ENDS_WITH;
 
     public static BinaryOperatorType asOperator(String text) {
         if ("==".equals(text)) {
@@ -59,6 +59,8 @@ public enum BinaryOperatorType {
             return RANGE;
         } else if ("not range".equals(text)) {
             return NOT_RANGE;
+        } else if ("ends with".equals(text)) {
+            return ENDS_WITH;
         }
         throw new IllegalArgumentException("Operator not supported: " + text);
     }
@@ -98,6 +100,8 @@ public enum BinaryOperatorType {
             return "range";
         } else if (operator == NOT_RANGE) {
             return "not range";
+        } else if (operator == ENDS_WITH) {
+            return "ends with";
         }
         return "";
     }
@@ -182,6 +186,8 @@ public enum BinaryOperatorType {
             return new ParameterType[]{ParameterType.LiteralWithFunction, ParameterType.Function};
         } else if (operator == NOT_RANGE) {
             return new ParameterType[]{ParameterType.LiteralWithFunction, ParameterType.Function};
+        } else if (operator == ENDS_WITH) {
+            return null;
         }
         return null;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/ff085260/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 d464ef9..dd315bf 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
@@ -321,7 +321,7 @@ public class SimpleOperatorTest extends LanguageTestSupport {
         assertPredicate("${in.header.foo} contains 'abc'", true);
         assertPredicate("${in.header.foo} contains 'def'", false);
     }
-
+  
     public void testNotContains() throws Exception {
         assertPredicate("${in.header.foo} not contains 'a'", false);
         assertPredicate("${in.header.foo} not contains 'ab'", false);
@@ -500,6 +500,16 @@ public class SimpleOperatorTest extends LanguageTestSupport {
         assertPredicate("${in.header.bar}-- == 124", false);
     }
 
+    public void testEndsWith() throws Exception {
+        exchange.getIn().setBody("Hello there");
+        assertPredicate("${in.body} ends with 'there'", true);
+        assertPredicate("${in.body} ends with 're'", true);
+        assertPredicate("${in.body} ends with ' there'", true);
+        assertPredicate("${in.body} ends with 'Hello there'", true);
+        assertPredicate("${in.body} ends with 'Hello ther'", false);        
+        assertPredicate("${in.body} ends with 'Hi'", false);
+    }
+    
     protected String getLanguageName() {
         return "simple";
     }


[2/2] camel git commit: CAMEL-9838 - Add ends with operator to simple language

Posted by ja...@apache.org.
CAMEL-9838 - Add ends with operator to simple language


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8bdbe398
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8bdbe398
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8bdbe398

Branch: refs/heads/camel-2.17.x
Commit: 8bdbe398c2231de0f8e5e269f015e0fb7f716f57
Parents: f465ab5
Author: Jonathan Anstey <ja...@gmail.com>
Authored: Thu Apr 7 16:33:06 2016 -0230
Committer: Jonathan Anstey <ja...@gmail.com>
Committed: Thu Apr 7 16:55:45 2016 -0230

----------------------------------------------------------------------
 .../apache/camel/language/simple/SimpleTokenizer.java   |  1 +
 .../camel/language/simple/ast/BinaryExpression.java     |  2 ++
 .../camel/language/simple/types/BinaryOperatorType.java |  8 +++++++-
 .../camel/language/simple/SimpleOperatorTest.java       | 12 +++++++++++-
 4 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/8bdbe398/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 3977260..8956fad 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
@@ -66,6 +66,7 @@ public final class SimpleTokenizer {
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.binaryOperator, "in"));
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.binaryOperator, "range"));
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.binaryOperator, "not range"));
+        KNOWN_TOKENS.add(new SimpleTokenType(TokenType.binaryOperator, "ends with"));
 
         // unary operators
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.unaryOperator, "++"));

http://git-wip-us.apache.org/repos/asf/camel/blob/8bdbe398/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java b/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
index 6d0e779..3c76c31 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
@@ -104,6 +104,8 @@ public class BinaryExpression extends BaseSimpleNode {
             return createInExpression(leftExp, rightExp);
         } else if (operator == BinaryOperatorType.RANGE || operator == BinaryOperatorType.NOT_RANGE) {
             return createRangeExpression(expression, leftExp, rightExp);
+        } else if (operator == BinaryOperatorType.ENDS_WITH) {
+            return createExpression(leftExp, rightExp, PredicateBuilder.endsWith(leftExp, rightExp));
         }
 
         throw new SimpleParserException("Unknown binary operator " + operator, token.getIndex());

http://git-wip-us.apache.org/repos/asf/camel/blob/8bdbe398/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 2156c30..02e7665 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
@@ -22,7 +22,7 @@ package org.apache.camel.language.simple.types;
 public enum BinaryOperatorType {
 
     EQ, EQ_IGNORE, GT, GTE, LT, LTE, NOT_EQ, CONTAINS, NOT_CONTAINS, REGEX, NOT_REGEX,
-    IN, NOT_IN, IS, NOT_IS, RANGE, NOT_RANGE;
+    IN, NOT_IN, IS, NOT_IS, RANGE, NOT_RANGE, ENDS_WITH;
 
     public static BinaryOperatorType asOperator(String text) {
         if ("==".equals(text)) {
@@ -59,6 +59,8 @@ public enum BinaryOperatorType {
             return RANGE;
         } else if ("not range".equals(text)) {
             return NOT_RANGE;
+        } else if ("ends with".equals(text)) {
+            return ENDS_WITH;
         }
         throw new IllegalArgumentException("Operator not supported: " + text);
     }
@@ -98,6 +100,8 @@ public enum BinaryOperatorType {
             return "range";
         } else if (operator == NOT_RANGE) {
             return "not range";
+        } else if (operator == ENDS_WITH) {
+            return "ends with";
         }
         return "";
     }
@@ -182,6 +186,8 @@ public enum BinaryOperatorType {
             return new ParameterType[]{ParameterType.LiteralWithFunction, ParameterType.Function};
         } else if (operator == NOT_RANGE) {
             return new ParameterType[]{ParameterType.LiteralWithFunction, ParameterType.Function};
+        } else if (operator == ENDS_WITH) {
+            return null;
         }
         return null;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/8bdbe398/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 d464ef9..dd315bf 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
@@ -321,7 +321,7 @@ public class SimpleOperatorTest extends LanguageTestSupport {
         assertPredicate("${in.header.foo} contains 'abc'", true);
         assertPredicate("${in.header.foo} contains 'def'", false);
     }
-
+  
     public void testNotContains() throws Exception {
         assertPredicate("${in.header.foo} not contains 'a'", false);
         assertPredicate("${in.header.foo} not contains 'ab'", false);
@@ -500,6 +500,16 @@ public class SimpleOperatorTest extends LanguageTestSupport {
         assertPredicate("${in.header.bar}-- == 124", false);
     }
 
+    public void testEndsWith() throws Exception {
+        exchange.getIn().setBody("Hello there");
+        assertPredicate("${in.body} ends with 'there'", true);
+        assertPredicate("${in.body} ends with 're'", true);
+        assertPredicate("${in.body} ends with ' there'", true);
+        assertPredicate("${in.body} ends with 'Hello there'", true);
+        assertPredicate("${in.body} ends with 'Hello ther'", false);        
+        assertPredicate("${in.body} ends with 'Hi'", false);
+    }
+    
     protected String getLanguageName() {
         return "simple";
     }