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>