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