This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new da30b6b71ce Addresses ujson.IncompleteParseException: exhausted input
error when body is null or empty (#8023)
da30b6b71ce is described below
commit da30b6b71ce009405f0d58b511ebacfb81124783
Author: javaduke <[email protected]>
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>