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 <[email protected]>
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);