camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Stiborský <martin.stibor...@gmail.com>
Subject Re: JSON (de)serializing with Jackson - version problem
Date Tue, 10 Sep 2013 11:17:48 GMT
Aaaand problem is solved.
I have quite often monolog here leading to fixing the problem :D
This dependency fixed it:

<dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-jackson</artifactId>
            <version>${camel.version}</version>
            <scope>test</scope>
        </dependency>

Where camel.version is 2.11.0 for my case and thanks to the test scope the
correct artifact version is used for testing :)


On Tue, Sep 10, 2013 at 1:15 PM, Martin Stiborský <
martin.stiborsky@gmail.com> wrote:

> I see that JacksonDataFormat for Camel 2.11.x is using already the newer
> Jackson:
>
> https://github.com/apache/camel/blob/camel-2.11.x/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
>
> So the problem I have is most probably wrong camel-jackson artifact used
> while running the unit tests (my guess :))
>
>
> On Tue, Sep 10, 2013 at 12:42 PM, Martin Stiborský <
> martin.stiborsky@gmail.com> wrote:
>
>> Hello guys,
>> I have this problem, it was first quite strange, why it's happening, but
>> then I saw the obvious problem...
>> It's about POJO classes and (de)serializing to/from JSON.
>>
>> I have a simple route, where jaxrs takes a JSON request body from POST
>> http request.
>> Then the JSON string is deserialized into corresponding class, with
>> "unmarshall" and Jackson library.
>>
>> .unmarshal().json(JsonLibrary.Jackson, MyPojo.class)
>>
>> This works without problems on production. But, I have a problem to write
>> unittests for this route.
>> Because the JSON string is not deserialized:
>>
>> org.codehaus.jackson.map.JsonMappingException: No suitable constructor
>> found for type...
>>
>> I know this error, and it was strange to me because there is public
>> constructor with @JsonProperty annotations for each pojo property.
>> Plus, it works on production and tests for the POJO itself passed as well.
>>
>> The problem is in jackson version. For the unit tests, there have to be
>> some older version of Jackson used, you can see there is the old package
>> name - org.codehaus.jackson...
>>
>> I'm using newer version of Jackson in the project - 2.1.2, they changed
>> package name to "com.fasterxml...".
>>
>> My biggest question is now - how is the Jackson version resolved in
>> CamelContext?
>> I'm trying to digg the corresponding DataFormat object, to find out, but
>> if you can give me good hint, that would be nice.
>>
>> The version of Apache Camel is 2.11.0 and the unittest - nothing special,
>> CamelTestSupport is inherited.
>> I guess, I have to somehow pass the DataFormat object with Jackson to the
>> testing CamelContext?
>> I know there is the "createJndiContext" method, I'm using it to pass
>> mocked dependencies for the routes in test...is this the way?
>>
>> Thanks!
>>
>> --
>> S pozdravem / Best regards
>> Martin Stiborský
>>
>> Jabber: stibi@njs.netlab.cz
>>  Twitter: http://www.twitter.com/stibi
>>
>
>
>
> --
> S pozdravem / Best regards
> Martin Stiborský
>
> Jabber: stibi@njs.netlab.cz
> Twitter: http://www.twitter.com/stibi
>



-- 
S pozdravem / Best regards
Martin Stiborský

Jabber: stibi@njs.netlab.cz
Twitter: http://www.twitter.com/stibi

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message