This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 2d16785  CAMEL-15704: camel-csimple - Compiled simple language.
2d16785 is described below

commit 2d167853ab3f69d028de914d038250f431a15013
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat Nov 28 23:57:54 2020 +0100

    CAMEL-15704: camel-csimple - Compiled simple language.
---
 .../language/csimple/joor/OriginalSimpleTest.java  | 28 ++++++++++------------
 .../camel/language/csimple/CSimpleHelper.java      |  1 +
 .../simple/ast/SimpleFunctionExpression.java       |  2 +-
 3 files changed, 15 insertions(+), 16 deletions(-)

diff --git 
a/components/camel-csimple-joor/src/test/java/org/apache/camel/language/csimple/joor/OriginalSimpleTest.java
 
b/components/camel-csimple-joor/src/test/java/org/apache/camel/language/csimple/joor/OriginalSimpleTest.java
index 4469519..8b29d79 100644
--- 
a/components/camel-csimple-joor/src/test/java/org/apache/camel/language/csimple/joor/OriginalSimpleTest.java
+++ 
b/components/camel-csimple-joor/src/test/java/org/apache/camel/language/csimple/joor/OriginalSimpleTest.java
@@ -342,14 +342,14 @@ public class OriginalSimpleTest extends 
LanguageTestSupport {
 
         exchange.getIn().setBody(map);
 
-        assertExpression("${in.body?.get(\"list\")[0].toString}", null);
+        assertExpression("${BodyAs(Map)?.get(\"list\")[0].toString}", null);
     }
 
     @Test
     public void testOGNLBodyExpression() throws Exception {
         exchange.getIn().setBody("hello world");
         assertPredicate("${body} == \"hello world\"", true);
-        assertPredicate("${body.toUpperCase()} == \"HELLO WORLD\"", true);
+        assertPredicate("${bodyAs(String).toUpperCase()} == \"HELLO WORLD\"", 
true);
     }
 
     @Test
@@ -360,11 +360,10 @@ public class OriginalSimpleTest extends 
LanguageTestSupport {
         // there is no upper case method on byte array, but we can convert to
         // String as below
         try {
-            assertPredicate("${body.toUpperCase()} == \"HELLO WORLD\"", true);
+            assertPredicate("${bodyAs(byte[]).toUpperCase()} == \"HELLO 
WORLD\"", true);
             fail("Should throw exception");
-        } catch (RuntimeBeanExpressionException e) {
-            MethodNotFoundException cause = 
assertIsInstanceOf(MethodNotFoundException.class, e.getCause());
-            assertEquals("toUpperCase()", cause.getMethodName());
+        } catch (JoorCSimpleCompilationException e) {
+            assertTrue(e.getCause().getMessage().contains("method 
toUpperCase()"));
         }
 
         assertPredicate("${bodyAs(String)} == \"hello world\"", true);
@@ -382,11 +381,10 @@ public class OriginalSimpleTest extends 
LanguageTestSupport {
         // there is no upper case method on byte array, but we can convert to
         // String as below
         try {
-            assertPredicate("${body.toUpperCase()} == \"HELLO WORLD\"", true);
+            assertPredicate("${bodyAs(byte[]).toUpperCase()} == \"HELLO 
WORLD\"", true);
             fail("Should throw exception");
-        } catch (RuntimeBeanExpressionException e) {
-            MethodNotFoundException cause = 
assertIsInstanceOf(MethodNotFoundException.class, e.getCause());
-            assertEquals("toUpperCase()", cause.getMethodName());
+        } catch (JoorCSimpleCompilationException e) {
+            assertTrue(e.getCause().getMessage().contains("method 
toUpperCase()"));
         }
 
         assertPredicate("${mandatoryBodyAs(String)} == \"hello world\"", true);
@@ -403,7 +401,7 @@ public class OriginalSimpleTest extends LanguageTestSupport 
{
         map.put("dude", "Hey dude");
         exchange.getIn().setHeaders(map);
 
-        assertExpression("${headers.cool.replaceAll(\"rocks\", \"is so 
cool\")}", "Camel is so cool");
+        assertExpression("${headerAs(cool, String).replaceAll(\"rocks\", \"is 
so cool\")}", "Camel is so cool");
     }
 
     @Test
@@ -458,8 +456,8 @@ public class OriginalSimpleTest extends LanguageTestSupport 
{
         lines.add(new OrderLine(456, "ActiveMQ in Action"));
         exchange.setProperty("wicket", lines);
 
-        assertExpression("${exchangeProperty.wicket[0].getId}", 123);
-        assertExpression("${exchangeProperty.wicket[1].getName}", "ActiveMQ in 
Action");
+        assertExpression("${exchangePropertyAs(wicket, List)[0].getId}", 123);
+        assertExpression("${exchangePropertyAs(wicket, List)[1].getName}", 
"ActiveMQ in Action");
         try {
             assertExpression("${exchangeProperty.wicket[2]}", "");
             fail("Should have thrown an exception");
@@ -899,8 +897,8 @@ public class OriginalSimpleTest extends LanguageTestSupport 
{
         try {
             assertExpression("${headerAs(fool,String).test}", null);
             fail("Should have thrown an exception");
-        } catch (ExpressionIllegalSyntaxException e) {
-            assertTrue(e.getMessage().startsWith("Valid syntax: 
${headerAs(key, type)} was: headerAs(fool,String).test"));
+        } catch (JoorCSimpleCompilationException e) {
+            // expected
         }
 
         try {
diff --git 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
index d923b95..654eab8 100644
--- 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
+++ 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
@@ -83,6 +83,7 @@ public final class CSimpleHelper {
 
     public static <T> T bodyAsIndex(Message message, Class<T> type, String 
key) {
         // TODO: array
+        // TODO: key can have multiple elements [0][foo] or [0][0]
         Object body = message.getBody();
         if (body instanceof Map) {
             Map map = (Map) body;
diff --git 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
index 47462f8..ba986e5 100644
--- 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
+++ 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
@@ -982,7 +982,7 @@ public class SimpleFunctionExpression extends 
LiteralExpression {
             String key = StringHelper.before(keyAndType, ",");
             String type = StringHelper.after(keyAndType, ",");
             remainder = StringHelper.after(remainder, ")");
-            if (ObjectHelper.isEmpty(key) || ObjectHelper.isEmpty(type) || 
ObjectHelper.isNotEmpty(remainder)) {
+            if (ObjectHelper.isEmpty(key) || ObjectHelper.isEmpty(type)) {
                 throw new SimpleParserException("Valid syntax: ${headerAs(key, 
type)} was: " + function, token.getIndex());
             }
             key = StringHelper.removeQuotes(key);

Reply via email to