tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: Registering Mapper in Johnzon
Date Sat, 14 Oct 2017 14:47:47 GMT
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
<paul.carter-brown@opposablethumbs.io>:
> 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 <rmannibucau@gmail.com>
> 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
>> <paul.carter-brown@opposablethumbs.io>:
>> > 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
View raw message