You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Paul Carter-Brown <pa...@smilecoms.com> on 2017/10/14 01:10:35 UTC

Registering Mapper in Johnzon

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$FallbackConverter.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>


Re: Registering Mapper in Johnzon

Posted by Paul Carter-Brown <pa...@smilecoms.com>.
Ok. I'll work on that in the week

On 14 October 2017 at 16:47, Romain Manni-Bucau <rm...@gmail.com>
wrote:

> 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
> <pa...@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
> >> <pa...@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>
> >> >> >
> >> >>
> >>
>



-- 

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


Re: Registering Mapper in Johnzon

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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
<pa...@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 <rm...@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
>> <pa...@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>
>> >> >
>> >>
>>

Re: Registering Mapper in Johnzon

Posted by Paul Carter-Brown <pa...@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 <rm...@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
> <pa...@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>
> >> >
> >>
>

Re: Registering Mapper in Johnzon

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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
<pa...@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 <rm...@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 <rm...@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>
>> >
>>

Re: Registering Mapper in Johnzon

Posted by Paul Carter-Brown <pa...@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 <rm...@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 <rm...@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>
> >
>

Re: Registering Mapper in Johnzon

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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 <pa...@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 <rm...@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 <rm...@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>
>

Re: Registering Mapper in Johnzon

Posted by Paul Carter-Brown <pa...@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 <rm...@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 <rm...@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>


Re: Registering Mapper in Johnzon

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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 <pa...@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 <rm...@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 <rm...@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>
>

Re: Registering Mapper in Johnzon

Posted by Paul Carter-Brown <pa...@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 <rm...@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 <rm...@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>


Re: Registering Mapper in Johnzon

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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 <pa...@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 <rm...@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>
>

Re: Registering Mapper in Johnzon

Posted by Paul Carter-Brown <pa...@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 <rm...@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>


Re: Registering Mapper in Johnzon

Posted by Paul Carter-Brown <pa...@smilecoms.com>.
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 <rm...@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.
> com>
> 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$
> FallbackConverter.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>
> >
> >
>

-- 


This email is subject to the disclaimer of Smile Communications at http://www.smilecoms.com/home/email-disclaimer/ <http://www.smilecoms.com/disclaimer>


Re: Registering Mapper in Johnzon

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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" <pa...@smilecoms.com>
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$FallbackConverter.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>
>
>