tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Carter-Brown <paul.carter-br...@opposablethumbs.io>
Subject Re: Registering Mapper in Johnzon
Date Sat, 14 Oct 2017 14:09:12 GMT
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 <rmannibucau@gmail.com>
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 <rmannibucau@gmail.com>
> > 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 <
> rmannibucau@gmail.com>
> >> > 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 <
> >> >> > paul.carter-brown@smilecoms.com> 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 <
> >> rmannibucau@gmail.com>
> >> >> >> 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"
> >> >> <paul.carter-brown@smilecoms.c
> >> >> >>> 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
> >> >> > paul.carter-brown@smilecoms.com
> >> >> > 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
> >> > paul.carter-brown@smilecoms.com
> >> > 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
> > paul.carter-brown@smilecoms.com
> > 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>
> >
>

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