camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CAMEL-11891) XML2JSON Data Format and empty requests
Date Tue, 24 Oct 2017 07:27:02 GMT

    [ https://issues.apache.org/jira/browse/CAMEL-11891?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16216447#comment-16216447
] 

ASF GitHub Bot commented on CAMEL-11891:
----------------------------------------

oscerd commented on issue #2048: CAMEL-11891 - incase of empty body unmarshalling needed
URL: https://github.com/apache/camel/pull/2048#issuecomment-338899406
 
 
   @onders86 can you push your commit?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> 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)

Mime
View raw message