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 2018/03/16 08:58:35 UTC
[camel] branch master updated: CAMEL-12355: simple - Body.ognl
function should validate that OGNL starts with a dot
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 38318ed CAMEL-12355: simple - Body.ognl function should validate that OGNL starts with a dot
38318ed is described below
commit 38318ed4c4f2410aceafed08e808e415aba8d4bd
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Mar 16 09:57:31 2018 +0100
CAMEL-12355: simple - Body.ognl function should validate that OGNL starts with a dot
---
.../language/simple/ast/SimpleFunctionExpression.java | 4 +++-
.../java/org/apache/camel/language/simple/SimpleTest.java | 14 ++++++++++++++
.../java/org/apache/camel/catalog/CamelCatalogTest.java | 7 +++++++
3 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java b/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
index 7c4caf3..b3c5674 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
@@ -306,7 +306,9 @@ public class SimpleFunctionExpression extends LiteralExpression {
remainder = ifStartsWithReturnRemainder("in.body", function);
}
if (remainder != null) {
- boolean invalid = OgnlHelper.isInvalidValidOgnlExpression(remainder);
+ // OGNL must start with a . ? or [
+ boolean ognlStart = remainder.startsWith(".") || remainder.startsWith("?") || remainder.startsWith("[");
+ boolean invalid = !ognlStart || OgnlHelper.isInvalidValidOgnlExpression(remainder);
if (invalid) {
throw new SimpleParserException("Valid syntax: ${body.OGNL} was: " + function, token.getIndex());
}
diff --git a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
index 0f1e357..71ccc22 100644
--- a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
+++ b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
@@ -40,6 +40,7 @@ import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.language.bean.RuntimeBeanExpressionException;
import org.apache.camel.language.simple.types.SimpleIllegalSyntaxException;
import org.apache.camel.spi.Language;
+
/**
* @version
*/
@@ -154,6 +155,19 @@ public class SimpleTest extends LanguageTestSupport {
assertNotNull(exp);
}
+ public void testBodyOgnlExpression() throws Exception {
+ Expression exp = SimpleLanguage.simple("${body.xxx}");
+ assertNotNull(exp);
+
+ // must start with a dot
+ try {
+ SimpleLanguage.simple("${bodyxxx}");
+ fail("Should throw exception");
+ } catch (SimpleIllegalSyntaxException e) {
+ // expected
+ }
+ }
+
public void testBodyExpressionUsingAlternativeStartToken() throws Exception {
Expression exp = SimpleLanguage.simple("$simple{body}");
assertNotNull(exp);
diff --git a/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index b825e90..bb9173d 100644
--- a/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ b/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -983,6 +983,13 @@ public class CamelCatalogTest {
assertTrue(result.getError().startsWith("expected symbol functionEnd but was eol at location 5"));
assertEquals("expected symbol functionEnd but was eol", result.getShortError());
assertEquals(5, result.getIndex());
+
+ result = catalog.validateSimpleExpression(null, "${bodyxxx}");
+ assertFalse(result.isSuccess());
+ assertEquals("${bodyxxx}", result.getSimple());
+ LOG.info(result.getError());
+ assertEquals("Valid syntax: ${body.OGNL} was: bodyxxx", result.getShortError());
+ assertEquals(0, result.getIndex());
}
@Test
--
To stop receiving notification emails like this one, please contact
davsclaus@apache.org.