Repository: camel
Updated Branches:
  refs/heads/camel-2.12.x 7eec1d39b -> 60d60e825
  refs/heads/camel-2.13.x 11dc3c675 -> 86be25f51


CAMEL-7359 Throwing exception when bodyAs(type) has some addition text


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/86be25f5
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/86be25f5
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/86be25f5

Branch: refs/heads/camel-2.13.x
Commit: 86be25f5147803469e8d8b62797d0a9c8c7d4e1e
Parents: 11dc3c6
Author: Willem Jiang <willem.ji...@gmail.com>
Authored: Fri Apr 11 20:39:53 2014 +0800
Committer: Willem Jiang <willem.ji...@gmail.com>
Committed: Fri Apr 11 20:42:00 2014 +0800

----------------------------------------------------------------------
 .../simple/ast/SimpleFunctionExpression.java       |  7 +++++--
 .../apache/camel/language/simple/SimpleTest.java   | 17 ++++++++++++++++-
 2 files changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/86be25f5/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
----------------------------------------------------------------------
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 d02f050..32a22b2 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
@@ -195,9 +195,11 @@ public class SimpleFunctionExpression extends 
LiteralExpression {
         String remainder = ifStartsWithReturnRemainder("bodyAs", function);
         if (remainder != null) {
             String type = ObjectHelper.between(remainder, "(", ")");
-            if (type == null) {
+            remainder = ObjectHelper.after(remainder, ")");
+            if (type == null || ObjectHelper.isNotEmpty(remainder)) {
                 throw new SimpleParserException("Valid syntax: ${bodyAs(type)} 
was: " + function, token.getIndex());
             }
+            
             type = StringHelper.removeQuotes(type);
             return ExpressionBuilder.bodyExpression(type);
         }
@@ -205,7 +207,8 @@ public class SimpleFunctionExpression extends 
LiteralExpression {
         remainder = ifStartsWithReturnRemainder("mandatoryBodyAs", function);
         if (remainder != null) {
             String type = ObjectHelper.between(remainder, "(", ")");
-            if (type == null) {
+            remainder = ObjectHelper.after(remainder, ")");
+            if (type == null || ObjectHelper.isNotEmpty(remainder)) {
                 throw new SimpleParserException("Valid syntax: 
${mandatoryBodyAs(type)} was: " + function, token.getIndex());
             }
             type = StringHelper.removeQuotes(type);

http://git-wip-us.apache.org/repos/asf/camel/blob/86be25f5/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
----------------------------------------------------------------------
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 c9e22a3..53dae26 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
@@ -440,7 +440,7 @@ public class SimpleTest extends LanguageTestSupport {
     public void testBodyAs() throws Exception {
         assertExpression("${bodyAs(String)}", "<hello 
id='m123'>world!</hello>");
         assertExpression("${bodyAs('String')}", "<hello 
id='m123'>world!</hello>");
-
+       
         exchange.getIn().setBody(null);
         assertExpression("${bodyAs('String')}", null);
 
@@ -455,6 +455,14 @@ public class SimpleTest extends LanguageTestSupport {
         } catch (CamelExecutionException e) {
             assertIsInstanceOf(ClassNotFoundException.class, e.getCause());
         }
+        
+        exchange.getIn().setBody("hello");
+        try {
+            assertExpression("${bodyAs(String).test}", "hello.test");
+            fail("should have thrown an exception");
+        } catch (SimpleIllegalSyntaxException e) {
+            assertTrue("Get a wrong message", 
e.getMessage().indexOf("bodyAs(String).test") > 0);
+        }
     }
 
     public void testMandatoryBodyAs() throws Exception {
@@ -480,6 +488,13 @@ public class SimpleTest extends LanguageTestSupport {
         } catch (CamelExecutionException e) {
             assertIsInstanceOf(ClassNotFoundException.class, e.getCause());
         }
+        
+        try {
+            assertExpression("${mandatoryBodyAs(String).test}", "hello.test");
+            fail("should have thrown an exception");
+        } catch (SimpleIllegalSyntaxException e) {
+            assertTrue("Get a wrong message", 
e.getMessage().indexOf("mandatoryBodyAs(String).test") > 0);
+        }
     }
 
     public void testHeaderEmptyBody() throws Exception {

Reply via email to