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.stibor...@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: st...@njs.netlab.cz > Twitter: http://www.twitter.com/stibi > -- S pozdravem / Best regards Martin Stiborský Jabber: st...@njs.netlab.cz Twitter: http://www.twitter.com/stibi