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