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> > >> > > >> >
