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

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


The following commit(s) were added to refs/heads/camel-3.18.x by this push:
     new 4d1752c0693 Addresses ujson.IncompleteParseException: exhausted input 
error when body is null or empty (#8023)
4d1752c0693 is described below

commit 4d1752c06937a17ebab5a999bc30fc78f9e57f3e
Author: javaduke <eugene.ber...@modusbox.com>
AuthorDate: Tue Jul 26 00:43:54 2022 -0400

    Addresses ujson.IncompleteParseException: exhausted input error when body 
is null or empty (#8023)
---
 .../apache/camel/language/datasonnet/DatasonnetExpression.java   | 8 +++++++-
 .../org/apache/camel/language.datasonnet/camel-context.xml       | 9 +++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git 
a/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/DatasonnetExpression.java
 
b/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/DatasonnetExpression.java
index 14b21c3b8c9..b1c72374551 100644
--- 
a/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/DatasonnetExpression.java
+++ 
b/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/DatasonnetExpression.java
@@ -114,12 +114,18 @@ public class DatasonnetExpression extends 
ExpressionAdapter implements Expressio
         }
 
         Document<?> body;
+
+        String bodyAsString = 
MessageHelper.extractBodyAsString(exchange.getMessage());
+
         if (exchange.getMessage().getBody() instanceof Document) {
             body = (Document<?>) exchange.getMessage().getBody();
+        } else if (exchange.getMessage().getBody() == null || 
"".equals(bodyAsString)) {
+            //Empty body, force type to be application/java
+            body = new DefaultDocument<>("", MediaTypes.APPLICATION_JAVA);
         } else if (MediaTypes.APPLICATION_JAVA.equalsTypeAndSubtype(bodyMT) || 
bodyMT == null) {
             body = new DefaultDocument<>(exchange.getMessage().getBody());
         } else {
-            body = new 
DefaultDocument<>(MessageHelper.extractBodyAsString(exchange.getMessage()), 
bodyMT);
+            body = new DefaultDocument<>(bodyAsString, bodyMT);
         }
 
         // the mapper is pre initialized
diff --git 
a/components/camel-datasonnet/src/test/resources/org/apache/camel/language.datasonnet/camel-context.xml
 
b/components/camel-datasonnet/src/test/resources/org/apache/camel/language.datasonnet/camel-context.xml
index 91d33d838f1..a7ca6d87cdc 100644
--- 
a/components/camel-datasonnet/src/test/resources/org/apache/camel/language.datasonnet/camel-context.xml
+++ 
b/components/camel-datasonnet/src/test/resources/org/apache/camel/language.datasonnet/camel-context.xml
@@ -191,6 +191,15 @@
             <to uri="mock:direct:end"/>
         </route>
 
+        <route id="transformEmptyBody">
+            <from uri="direct:transformEmptyBody"/>
+            <transform>
+                <datasonnet bodyMediaType="application/xml" 
outputMediaType="application/json"
+                            resultType="java.lang.String">{ "hello": "world" 
}</datasonnet>
+            </transform>
+            <to uri="mock:direct:end"/>
+        </route>
+
     </camelContext>
 
 </beans>

Reply via email to