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 2012/11/01 10:26:32 UTC

svn commit: r1404512 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/builder/ExpressionBuilder.java main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java test/java/org/apache/camel/language/simple/SimpleTest.java

Author: davsclaus
Date: Thu Nov  1 09:26:32 2012
New Revision: 1404512

URL: http://svn.apache.org/viewvc?rev=1404512&view=rev
Log:
CAMEL-5674: Added camelContext to simple language

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=1404512&r1=1404511&r2=1404512&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Thu Nov  1 09:26:32 2012
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Scanner;
 import java.util.regex.Pattern;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
@@ -728,6 +729,29 @@ public final class ExpressionBuilder {
     }
 
     /**
+     * Returns the expression for the exchanges camelContext invoking methods defined
+     * in a simple OGNL notation
+     *
+     * @param ognl  methods to invoke on the body in a simple OGNL syntax
+     */
+    public static Expression camelContextOgnlExpression(final String ognl) {
+        return new ExpressionAdapter() {
+            public Object evaluate(Exchange exchange) {
+                CamelContext context = exchange.getContext();
+                if (context == null) {
+                    return null;
+                }
+                return new MethodCallExpression(context, ognl).evaluate(exchange);
+            }
+
+            @Override
+            public String toString() {
+                return "camelContextOgnl(" + ognl + ")";
+            }
+        };
+    }
+
+    /**
      * Returns the expression for the exchanges inbound message body converted
      * to the given type
      */

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java?rev=1404512&r1=1404511&r2=1404512&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java Thu Nov  1 09:26:32 2012
@@ -96,6 +96,16 @@ public class SimpleFunctionExpression ex
             return ExpressionBuilder.bodyOgnlExpression(remainder);
         }
 
+        // camelContext OGNL
+        remainder = ifStartsWithReturnRemainder("camelContext", function);
+        if (remainder != null) {
+            boolean invalid = OgnlHelper.isInvalidValidOgnlExpression(remainder);
+            if (invalid) {
+                throw new SimpleParserException("Valid syntax: ${camelContext.OGNL} was: " + function, token.getIndex());
+            }
+            return ExpressionBuilder.camelContextOgnlExpression(remainder);
+        }
+
         // Exception OGNL
         remainder = ifStartsWithReturnRemainder("exception", function);
         if (remainder != null) {

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java?rev=1404512&r1=1404511&r2=1404512&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java Thu Nov  1 09:26:32 2012
@@ -1165,6 +1165,11 @@ public class SimpleTest extends Language
         assertExpression("$${body}", "$Something");
     }
 
+    public void testCamelContextOGNL() throws Exception {
+        assertExpression("${camelContext.getName()}", context.getName());
+        assertExpression("${camelContext.version}", context.getVersion());
+    }
+
     protected String getLanguageName() {
         return "simple";
     }