we should move all jsonb adapter in mapper module Romain Manni-Bucau @rmannibucau | Blog | Old Blog | Github | LinkedIn
2017-10-14 16:46 GMT+02:00 Paul Carter-Brown <[email protected]>: > Great. I will do a pull request for that. I think it will require its own > converter or should I do this change on the jsonb adapter and refer to that? > > On Sat, Oct 14, 2017 at 4:34 PM, Romain Manni-Bucau <[email protected]> > wrote: > >> if the performances are the same we can, I guess doing a contains('-') >> is enough to switch between two formatters. Issue on j7 was there was >> no built-in way to have this pattern (the SimpleDateFormat hack you >> sometimes see *doesn't* work). Now we are on j8 I guess you are right >> and can support both OOTB. >> >> Romain Manni-Bucau >> @rmannibucau | Blog | Old Blog | Github | LinkedIn >> >> >> 2017-10-14 16:09 GMT+02:00 Paul Carter-Brown >> <[email protected]>: >> > Hi Romain, >> > >> > Any way we can allow it to happily parse boih long and short ISO 8601 >> > strings. Technically its possible but would you have an objection? The >> > issue is that less and less people are using the short format in JSON due >> > to the default way javascript maps date to string. >> > >> > On Sat, Oct 14, 2017 at 3:32 PM, Romain Manni-Bucau < >> [email protected]> >> > wrote: >> > >> >> Hi Paul, >> >> >> >> answered, story short we should just import the ones from jsonb >> >> modules (all are there I think) now master is java 8 - was the only >> >> reason why it was not in mapper, because mapper was java 7. >> >> >> >> A small side note: we can probably not break the java.util.Date >> >> formatter which uses short iso8061 pattern instead of the long one. >> >> >> >> Romain Manni-Bucau >> >> @rmannibucau | Blog | Old Blog | Github | LinkedIn >> >> >> >> >> >> 2017-10-14 15:10 GMT+02:00 Paul Carter-Brown >> <paul.carter-brown@smilecoms. >> >> com>: >> >> > Hi Romain, >> >> > >> >> > With JDK 1.8 becoming mainstream there will be a lot more use of >> >> > java.time.Instant as the standard way of handling dates as opposed to >> >> > java.util.date. In addition, rest services are standardising more and >> >> more >> >> > on the ISO 8061 date format (e.g. 2007-12-03T17:15:30+03:00). I thus >> >> > believe that Johnzon should support this out of the box In this >> regard >> >> > I've created a pull request for this functionality so it can be >> included >> >> in >> >> > future TomEE releases https://github.com/apache/johnzon/pull/13 >> >> > >> >> > I've use my fork on TomEE 7.0.4 and it now natively works with POJO's >> >> using >> >> > Instant data type >> >> > >> >> > Paul >> >> > >> >> > On 14 October 2017 at 11:07, Romain Manni-Bucau < >> [email protected]> >> >> > wrote: >> >> > >> >> >> that was the question ;) >> >> >> >> >> >> you can extend JohnzonProvider and pass it the mapper instance you >> >> >> want - pre configured. >> >> >> >> >> >> Romain Manni-Bucau >> >> >> @rmannibucau | Blog | Old Blog | Github | LinkedIn >> >> >> >> >> >> >> >> >> 2017-10-14 10:39 GMT+02:00 Paul Carter-Brown >> >> <paul.carter-brown@smilecoms. >> >> >> com>: >> >> >> > Yea bit of a false positive I'm afraid. I ended up getting it to be >> >> used >> >> >> in >> >> >> > a manual mapping operation and saw it was being called but >> >> unfortunately >> >> >> > its not being used when called via jax-rs >> >> >> > >> >> >> > Will battle on a bit more before reverting to annotations >> >> >> > >> >> >> > On 14 October 2017 at 10:27, Romain Manni-Bucau < >> >> [email protected]> >> >> >> > wrote: >> >> >> > >> >> >> >> Hmm, earlier in the boot process shouldn't change anything if you >> >> >> >> manage yourself the builder, can you add why it impacted the >> behavior >> >> >> >> please (for completeness of this thread)? >> >> >> >> >> >> >> >> side note: you can add annotations on generated jaxb models -> >> >> >> >> https://github.com/highsource/jaxb2-annotate-plugin . >> >> >> >> >> >> >> >> Romain Manni-Bucau >> >> >> >> @rmannibucau | Blog | Old Blog | Github | LinkedIn >> >> >> >> >> >> >> >> >> >> >> >> 2017-10-14 10:08 GMT+02:00 Paul Carter-Brown >> >> >> <paul.carter-brown@smilecoms. >> >> >> >> com>: >> >> >> >> > Hi Romain, >> >> >> >> > >> >> >> >> > I managed to get it to work by calling new >> >> >> MapperBuilder().addAdapter(new >> >> >> >> > JavascriptDate()).build(); far earlier in the bootup process. >> >> >> >> > >> >> >> >> > On 14 October 2017 at 09:40, Paul Carter-Brown < >> >> >> >> > [email protected]> wrote: >> >> >> >> > >> >> >> >> >> Hi Romain, >> >> >> >> >> >> >> >> >> >> The model is generated using jaxb from an XSD. Jaxb has been >> set >> >> up >> >> >> to >> >> >> >> map >> >> >> >> >> xs:dateTime to java.time.Instant >> >> >> >> >> >> >> >> >> >> getters/setters look like this: >> >> >> >> >> public Instant getDate() { >> >> >> >> >> return date; >> >> >> >> >> } >> >> >> >> >> >> >> >> >> >> public void setDate(Instant value) { >> >> >> >> >> this.date = value; >> >> >> >> >> } >> >> >> >> >> >> >> >> >> >> As the model is generated I don't have the option of adding >> >> >> annotations >> >> >> >> on >> >> >> >> >> it and need to configure Johnzon to globally deal with Instant >> >> data >> >> >> type >> >> >> >> >> >> >> >> >> >> Paul >> >> >> >> >> >> >> >> >> >> On 14 October 2017 at 09:36, Romain Manni-Bucau < >> >> >> [email protected]> >> >> >> >> >> wrote: >> >> >> >> >> >> >> >> >> >>> Hi >> >> >> >> >>> >> >> >> >> >>> What is your model? >> >> >> >> >>> >> >> >> >> >>> Did you try @JohnzonConverter too? >> >> >> >> >>> >> >> >> >> >>> Tomee uses an old johnzon too so can need some enhancements >> from >> >> >> >> master. >> >> >> >> >>> >> >> >> >> >>> Le 14 oct. 2017 03:10, "Paul Carter-Brown" >> >> >> >> <[email protected] >> >> >> >> >>> om> >> >> >> >> >>> a écrit : >> >> >> >> >>> >> >> >> >> >>> > Hi, >> >> >> >> >>> > >> >> >> >> >>> > I've created an adapter as follows: >> >> >> >> >>> > >> >> >> >> >>> > public class JavascriptDate implements Adapter<String, >> >> Instant> { >> >> >> >> >>> > >> >> >> >> >>> > @Override >> >> >> >> >>> > public String to(Instant instance) { >> >> >> >> >>> > final Calendar cal = GregorianCalendar.getInstance( >> ); >> >> >> >> >>> > cal.setTime(Date.from(instance)); >> >> >> >> >>> > return DatatypeConverter.printDateTime(cal); >> >> >> >> >>> > } >> >> >> >> >>> > >> >> >> >> >>> > @Override >> >> >> >> >>> > public Instant from(String text) { >> >> >> >> >>> > return DatatypeConverter. >> >> parseDateTime(text).getTime(). >> >> >> >> >>> > toInstant(); >> >> >> >> >>> > } >> >> >> >> >>> > } >> >> >> >> >>> > >> >> >> >> >>> > and register it globally like this in a servlet init: >> >> >> >> >>> > >> >> >> >> >>> > new MapperBuilder().addAdapter(new >> JavascriptDate()).build(); >> >> >> >> >>> > >> >> >> >> >>> > When I call a rest service passing a date formatted string >> >> field >> >> >> that >> >> >> >> >>> needs >> >> >> >> >>> > to map to an Instant I get an error: >> >> >> >> >>> > >> >> >> >> >>> > org.apache.johnzon.mapper.MapperException: Using fallback >> >> >> converter, >> >> >> >> >>> this >> >> >> >> >>> > only works in write mode but not in read. Please register a >> >> custom >> >> >> >> >>> > converter to do so. >> >> >> >> >>> > at >> >> >> >> >>> > org.apache.johnzon.mapper.MappingParserImpl$ >> FallbackConverte >> >> >> >> >>> r.fromString( >> >> >> >> >>> > MappingParserImpl.java:715) >> >> >> >> >>> > at org.apache.johnzon.mapper.internal.ConverterAdapter.to >> >> >> >> >>> > (ConverterAdapter.java:37) >> >> >> >> >>> > at org.apache.johnzon.mapper.internal.ConverterAdapter.to >> >> >> >> >>> > (ConverterAdapter.java:24) >> >> >> >> >>> > at >> >> >> >> >>> > org.apache.johnzon.mapper.MappingParserImpl.convertTo( >> >> >> >> >>> > MappingParserImpl.java:682) >> >> >> >> >>> > at >> >> >> >> >>> > org.apache.johnzon.mapper.MappingParserImpl.toObject( >> >> >> >> >>> > MappingParserImpl.java:523) >> >> >> >> >>> > at >> >> >> >> >>> > org.apache.johnzon.mapper.MappingParserImpl.toValue( >> >> >> >> >>> > MappingParserImpl.java:634) >> >> >> >> >>> > at >> >> >> >> >>> > org.apache.johnzon.mapper.MappingParserImpl.buildObject( >> >> >> >> >>> > MappingParserImpl.java:318) >> >> >> >> >>> > at >> >> >> >> >>> > org.apache.johnzon.mapper.MappingParserImpl.readObject( >> >> >> >> >>> > MappingParserImpl.java:133) >> >> >> >> >>> > >> >> >> >> >>> > >> >> >> >> >>> > Any ideas why my mapper is not being used? >> >> >> >> >>> > >> >> >> >> >>> > Thanks >> >> >> >> >>> > Paul >> >> >> >> >>> > >> >> >> >> >>> > -- >> >> >> >> >>> > >> >> >> >> >>> > >> >> >> >> >>> > This email is subject to the disclaimer of Smile >> >> Communications at >> >> >> >> >>> > http://www.smilecoms.com/home/email-disclaimer/ < >> >> >> >> >>> http://www.smilecoms.com/ >> >> >> >> >>> > disclaimer> >> >> >> >> >>> > >> >> >> >> >>> > >> >> >> >> >>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> > >> >> >> >> > >> >> >> >> > -- >> >> >> >> > >> >> >> >> > *Paul Carter-Brown* >> >> >> >> > >> >> >> >> > *Group Chief Information Officer* >> >> >> >> > >> >> >> >> > *Smile Communications Pty (Ltd) * >> >> >> >> > Smile +234 (0) 702 000 1234 >> >> >> >> > Mobile +27 (0) 83 4427 179 >> >> >> >> > Skype PaulC-B >> >> >> >> > [email protected] >> >> >> >> > www.smilecoms.com >> >> >> >> > >> >> >> >> > -- >> >> >> >> > >> >> >> >> > >> >> >> >> > This email is subject to the disclaimer of Smile Communications >> at >> >> >> >> http://www.smilecoms.com/home/email-disclaimer/ < >> >> >> http://www.smilecoms.com/ >> >> >> >> disclaimer> >> >> >> >> > >> >> >> >> >> >> >> > >> >> >> > >> >> >> > >> >> >> > -- >> >> >> > >> >> >> > *Paul Carter-Brown* >> >> >> > >> >> >> > *Group Chief Information Officer* >> >> >> > >> >> >> > *Smile Communications Pty (Ltd) * >> >> >> > Smile +234 (0) 702 000 1234 >> >> >> > Mobile +27 (0) 83 4427 179 >> >> >> > Skype PaulC-B >> >> >> > [email protected] >> >> >> > www.smilecoms.com >> >> >> > >> >> >> > -- >> >> >> > >> >> >> > >> >> >> > This email is subject to the disclaimer of Smile Communications at >> >> >> http://www.smilecoms.com/home/email-disclaimer/ < >> >> http://www.smilecoms.com/ >> >> >> disclaimer> >> >> >> > >> >> >> >> >> > >> >> > >> >> > >> >> > -- >> >> > >> >> > *Paul Carter-Brown* >> >> > >> >> > *Group Chief Information Officer* >> >> > >> >> > *Smile Communications Pty (Ltd) * >> >> > Smile +234 (0) 702 000 1234 >> >> > Mobile +27 (0) 83 4427 179 >> >> > Skype PaulC-B >> >> > [email protected] >> >> > www.smilecoms.com >> >> > >> >> > -- >> >> > >> >> > >> >> > This email is subject to the disclaimer of Smile Communications at >> >> http://www.smilecoms.com/home/email-disclaimer/ < >> http://www.smilecoms.com/ >> >> disclaimer> >> >> > >> >> >>
