Hi Ron,
for Jackson you need to add support for Java 8+ features explicitly.

Have a look at how to do it here:

https://github.com/FasterXML/jackson-modules-java8

Jackson JSON data format has a `objectMapper`[2] property that you can
use to set the customized ObjectMapper.

zoran

[2] https://camel.apache.org/components/latest/json-jackson-dataformat.html

On Mon, Dec 2, 2019 at 6:21 AM Ron Cecchini <roncecch...@comcast.net> wrote:
>
> TL;DR: unmarshalling JSON to POJO with Jackson is no longer working on a 
> java.time.OffsetDateTime since migrating to Camel 3.0.  java.util.Date still 
> works fine though.
>
> Ok, after 2 days of googling and trying all manner of sorcery (except for 
> sacrificing a chicken... maybe I should?), I'm waving the white flag on this 
> one...
>
> Basically, I had worked through all the migration stuff.  I also updated 
> Spring Boot to 2.2.1.RELEASE, and updated all the *-starter dependencies, 
> etc.  Everything was working great.
>
> Eventually I uncommented some code I hadn't been using for a while - and 
> that's when the "fun" began...
>
> The input to the route in question is a JSON array upon which I do a 
> .split().jsonpathWriteAsString("$") and eventually an .unmarshal(pojoJson) 
> where 'pojoJson' is:
>
>     JacksonDataFormat pojoJson = new JacksonDataFormat(MyPojo.class);
>
> Things were working fantastic before the migration, but now I get:
>
>     com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
>     Cannot construct instance of `java.time.OffsetDateTime` (no Creators, 
> like default construct, exist):
>     no String-argument constructor/factory method to deserialize from String 
> value ('2019-11-14T04:41:33.302711Z')
>
> Googling revealed all kinds of stuff related to Jackson and Java 8 date/times 
> posted over the last few years.
>
> I tried a few of the suggestions, including adding several Jackson-specific 
> dependencies (to go along with 
> 'org.apache.camel.springboot:camel-jackson-starter') - and adding the 
> dependencies in different orders (someone said that could be a factor) - and 
> nothing worked.
>
> Based on a few suggestions, I even created the following @PostConstruct 
> method in my @SpringBootApplication class, and again got the same "no 
> Creators" error:
>
>     @PostConstruct
>     public void setUp ()
>     {
>         context.getGlobalOptions().put("CamelJacksonEnableTypeConverter", 
> "true");
>         context.getGlobalOptions().put("CamelJacksonTypeConverterToPojo", 
> "true");
>
>         objectMapper.registerModule(new JavaTimeModule());
>         objectMapper.registerModule(new JSR310Module());
>         objectMapper.registerModule(new Jdk8Module());
>         objectMapper.findAndRegisterModules();
>     }
>
> I even tried switching jsonpathWriteAsString("$") to jsonpath("$"), setting 
> pojoJson.useMap(), and passing the Map from jsonpath() to unmarshal, and this 
> time got:
>
>     Caused by: org.apache.camel.NoTypeConversionAvailableException:
>     No type converter available to convert from type: java.util.LinkedHashMap 
> to the required type:
>     java.io.InputStream with value [...]
>
> I finally hit on a temporary workaround - going back to using a 
> java.util.Date instead of a java.time.OffsetDateTime - and it again all works 
> great with Camel 3.0.  But eventually I'll probably need to figure out how to 
> use the newer Java date/times.
>
> Thanks for reading this far and helping me figure out where I went wrong...
>
> > On November 28, 2019 at 2:09 PM Ron Cecchini <roncecch...@comcast.net> 
> > wrote:
> >
> >
> > Christmas has come early!
> >
> > There's so much new stuff I'm not even sure what I should be excited about 
> > at the moment - but I'm excited!
> >
> > Thank you for all your efforts, guys!
> >
> > (and now I can spend pre-Thanksgiving feasting working through the 
> > Migration and eliminating the run-time crashes...)
> >
> > > On November 28, 2019 at 9:12 AM Gregor Zurowski 
> > > <gre...@list.zurowski.org> wrote:
> > >
> > >
> > > It's finally here - after four release candidates and three milestone
> > > releases, the Camel community announces the immediate availability of
> > > Camel 3.0.0, a new major release with over 1000 new features,
> > > improvements and fixes.
> > >
> > > Please read our migration guide [1] that describes how to upgrade
> > > Camel 2.x applications to Camel 3.0.
> > >
> > > The artifacts are published and ready for you to download [2] either
> > > from the Apache mirrors or from the Central Maven repository. For more
> > > details please take a look at the release notes [3, 4].
> > >
> > > Many thanks to all who made this release possible.
> > >
> > > On behalf of the Camel PMC,
> > > Gregor Zurowski
> > >
> > > [1] https://camel.apache.org/manual/latest/camel-3-migration-guide.html
> > > [1] http://camel.apache.org/download.html
> > > [2] https://camel.apache.org/blog/release-3-0-0.html
> > > [3] 
> > > https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12315691&projectId=12311211



-- 
Zoran Regvart

Reply via email to