[ 
https://issues.apache.org/jira/browse/CAMEL-8303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-8303.
--------------------------------
       Resolution: Fixed
    Fix Version/s: 2.15.0
                   2.14.2
         Assignee: Claus Ibsen

Thanks for reporting and with the patch

> InvalidPayloadException when storing a String using camel-couchdb
> -----------------------------------------------------------------
>
>                 Key: CAMEL-8303
>                 URL: https://issues.apache.org/jira/browse/CAMEL-8303
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-couchdb
>            Reporter: Lars Rothberg-Hansen
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 2.14.2, 2.15.0
>
>
> According to the documentation, it should be possible to send through an 
> Exchange with the body containing a String
> "If the body is an instance of String, then it will be marshalled into a GSON 
> object before insert."
> When doing this, an InvalidPayloadException occurs.
> The culprit is this line in the CouchDbProducer:
> "return new Gson().toJsonTree(body)"
> According to the Gson documentation, this should not be executed on Generic 
> types as the String will not be parsed, but stored in a JsonPrimitive as 
> opposed to the expected JsonObject.
> In order to correct it, is to use the code which parses the String (Sorry, 
> don't have time just now to do a proper patch):
> try{
>    return new JsonParser().parse((String)body);
> }catch(JsonSyntaxException jse){
>    throw new InvalidPayloadException(exchange, body != null ? body.getClass() 
> : null);
> }
> It's also worth mentioning that existing test cases does not result in this 
> Exception and the original 2.14.1 code base as long as my local modified 
> version both passes the tests.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to