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 2013/08/15 13:22:54 UTC

[1/2] git commit: CAMEL-6639: Added statis methods to simple language for predicate vs expression.

Updated Branches:
  refs/heads/master 2368ed213 -> 903327e8f


CAMEL-6639: Added statis methods to simple language for predicate vs expression.


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

Branch: refs/heads/master
Commit: 903327e8f0d3c0c0f1eba24ab3f19f8f91dbe652
Parents: 90c30f8
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Aug 15 12:15:09 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Aug 15 13:22:42 2013 +0200

----------------------------------------------------------------------
 .../camel/language/simple/SimpleLanguage.java   | 38 +++++++++++++++-
 .../util/PredicateToExpressionAdapter.java      | 48 ++++++++++++++++++++
 .../camel/language/simple/SimpleTest.java       | 26 +++++++++++
 3 files changed, 110 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/903327e8/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
index ff0a9e2..76db93a 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
@@ -21,6 +21,7 @@ import org.apache.camel.Predicate;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.support.LanguageSupport;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.PredicateToExpressionAdapter;
 
 /**
  * A <a href="http://camel.apache.org/simple.html">simple language</a>
@@ -158,14 +159,47 @@ public class SimpleLanguage extends LanguageSupport {
         return answer;
     }
 
+    /**
+     * Creates a new {@link Expression}.
+     * <p/>
+     * <b>Important:</b> If you need to use a predicate (function to return true|false) then use
+     * {@link #predicate(String)} instead.
+     */
     public static Expression simple(String expression) {
-        return SIMPLE.createExpression(expression);
+        return expression(expression);
     }
 
+    /**
+     * Creates a new {@link Expression} (or {@link Predicate}
+     * if the resultType is a <tt>Boolean</tt>, or <tt>boolean</tt> type).
+     */
     public static Expression simple(String expression, Class<?> resultType) {
         SimpleLanguage answer = new SimpleLanguage();
         answer.setResultType(resultType);
-        return answer.createExpression(expression);
+        if (resultType == Boolean.class || resultType == boolean.class) {
+            // if its a boolean as result then its a predicate
+            Predicate predicate = answer.createPredicate(expression);
+            return PredicateToExpressionAdapter.toExpression(predicate);
+        } else {
+            return answer.createExpression(expression);
+        }
+    }
+
+    /**
+     * Creates a new {@link Expression}.
+     * <p/>
+     * <b>Important:</b> If you need to use a predicate (function to return true|false) then use
+     * {@link #predicate(String)} instead.
+     */
+    public static Expression expression(String expression) {
+        return SIMPLE.createExpression(expression);
+    }
+
+    /**
+     * Creates a new {@link Predicate}.
+     */
+    public static Predicate predicate(String predicate) {
+        return SIMPLE.createPredicate(predicate);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/903327e8/camel-core/src/main/java/org/apache/camel/util/PredicateToExpressionAdapter.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/util/PredicateToExpressionAdapter.java b/camel-core/src/main/java/org/apache/camel/util/PredicateToExpressionAdapter.java
new file mode 100644
index 0000000..8f76abf
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/util/PredicateToExpressionAdapter.java
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.util;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.Predicate;
+
+public final class PredicateToExpressionAdapter implements Expression {
+    private final Predicate predicate;
+
+    public PredicateToExpressionAdapter(Predicate predicate) {
+        this.predicate = predicate;
+    }
+
+    @Override
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        boolean matches = predicate.matches(exchange);
+        return exchange.getContext().getTypeConverter().convertTo(type, exchange, matches);
+    }
+
+    @Override
+    public String toString() {
+        return predicate.toString();
+    }
+
+    /**
+     * Converts the given predicate into an {@link org.apache.camel.Expression}
+     */
+    public static Expression toExpression(final Predicate predicate) {
+        return new PredicateToExpressionAdapter(predicate);
+    }
+    
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/903327e8/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
index e66de80..7eca1b5 100644
--- a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
+++ b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
@@ -32,6 +32,7 @@ import org.apache.camel.Expression;
 import org.apache.camel.ExpressionIllegalSyntaxException;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.LanguageTestSupport;
+import org.apache.camel.Predicate;
 import org.apache.camel.component.bean.MethodNotFoundException;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.bean.RuntimeBeanExpressionException;
@@ -51,6 +52,31 @@ public class SimpleTest extends LanguageTestSupport {
         return jndi;
     }
 
+    public void testSimpleExpressionOrPredicate() throws Exception {
+        Predicate predicate = SimpleLanguage.predicate("${header.bar} == 123");
+        assertTrue(predicate.matches(exchange));
+
+        predicate = SimpleLanguage.predicate("${header.bar} == 124");
+        assertFalse(predicate.matches(exchange));
+
+        Expression expression = SimpleLanguage.expression("${body}");
+        assertEquals("<hello id='m123'>world!</hello>", expression.evaluate(exchange, String.class));
+
+        expression = SimpleLanguage.simple("${body}");
+        assertEquals("<hello id='m123'>world!</hello>", expression.evaluate(exchange, String.class));
+        expression = SimpleLanguage.simple("${body}", String.class);
+        assertEquals("<hello id='m123'>world!</hello>", expression.evaluate(exchange, String.class));
+
+        expression = SimpleLanguage.simple("${header.bar} == 123", boolean.class);
+        assertEquals(Boolean.TRUE, expression.evaluate(exchange, Object.class));
+        expression = SimpleLanguage.simple("${header.bar} == 124", boolean.class);
+        assertEquals(Boolean.FALSE, expression.evaluate(exchange, Object.class));
+        expression = SimpleLanguage.simple("${header.bar} == 123", Boolean.class);
+        assertEquals(Boolean.TRUE, expression.evaluate(exchange, Object.class));
+        expression = SimpleLanguage.simple("${header.bar} == 124", Boolean.class);
+        assertEquals(Boolean.FALSE, expression.evaluate(exchange, Object.class));
+    }
+
     public void testResultType() throws Exception {
         assertEquals(123, SimpleLanguage.simple("${header.bar}", int.class).evaluate(exchange, Object.class));
         assertEquals("123", SimpleLanguage.simple("${header.bar}", String.class).evaluate(exchange, Object.class));


[2/2] git commit: Dependency upgrade

Posted by da...@apache.org.
Dependency upgrade


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

Branch: refs/heads/master
Commit: 90c30f827baa0abe2b31677d8a5b46f5ce76c7e2
Parents: 2368ed2
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Aug 15 10:49:19 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Aug 15 13:22:42 2013 +0200

----------------------------------------------------------------------
 parent/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/90c30f82/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index cf6afa6..9811fcc 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -331,7 +331,7 @@
     <rhino-version>1.7R2</rhino-version>
     <rome-bundle-version>1.0_3</rome-bundle-version>
     <rome-version>1.0</rome-version>
-    <rxjava-version>0.9.1</rxjava-version>
+    <rxjava-version>0.9.2</rxjava-version>
     <saaj-impl-version>1.3.2_2</saaj-impl-version>
     <saxon-bundle-version>9.5.0.2_1</saxon-bundle-version>
     <saxon-version>9.5.0.2</saxon-version>