[
https://issues.apache.org/jira/browse/CAMEL-11891?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Önder Sezgin resolved CAMEL-11891.
----------------------------------
Resolution: Fixed
> XML2JSON Data Format and empty requests
> ---------------------------------------
>
> Key: CAMEL-11891
> URL: https://issues.apache.org/jira/browse/CAMEL-11891
> Project: Camel
> Issue Type: Improvement
> Components: camel-xmljson
> Affects Versions: 2.19.3
> Reporter: Richard Groote
> Assignee: Önder Sezgin
> Fix For: 2.19.4, 2.20.1
>
>
> It would be nice if the XmlJsonDataFormat can handle empty body.
> In our project we upgraded from 2.14.0 to 2.19.3.
> The below code no longer works in 2.19.3 when a GET request is made to a
> servlet component. In our situation the body contains a stream cache and the
> xml2json will fail.
> A possible solution is to check the http method before doing the
> unmarshalling.
> <camel:choice>
> <camel:when>
> <camel:simple>${body} != null</camel:simple>
> <camel:unmarshal ref="xml2json"/>
> </camel:when>
> </camel:choice>
> The current solution in our project is a extension of the XmlJsonDataFormat.
> In the extension the method unmarshall is overriden
> {code:java}
> @Override
> public Object unmarshal(Exchange exchange, InputStream stream) throws
> Exception {
> Object inBody = exchange.getIn().getBody();
>
> if(inBody == null) {
> return null;
> }
>
> if(inBody instanceof StreamCache) {
> long length = ((StreamCache) inBody).length();
> if(length <= 0) {
> return null;
> }
> } else {
> if(!(inBody instanceof JSON)) {
> String jsonString =
> exchange.getContext().getTypeConverter().convertTo(String.class, exchange,
> inBody);
> if(StringUtils.isEmpty(jsonString)) {
> return null;
> }
> }
> }
>
>
>
> return super.unmarshal(exchange, stream);
> }
> {code}
>
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)