you have 2 options:

1. extends JacksonJsonProvider
2.

@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Provider
public class MyJsonProvider implements MessageBodyWriter<Object>,
MessageBodyReader<Object> {
    private final JacksonJsonProvider provider = new JacksonJsonProvider();

    @Override
    public boolean isWriteable(final Class<?> aClass, final Type type,
final Annotation[] annotations, final MediaType mediaType) {
        return provider.isWriteable(aClass, type, annotations, mediaType);
    }

    @Override
    public long getSize(final Object o, final Class<?> aClass, final
Type type, final Annotation[] annotations, final MediaType mediaType)
{
        return provider.getSize(o, aClass, type, annotations, mediaType);
    }

    @Override
    public void writeTo(final Object o, final Class<?> aClass, final
Type type, final Annotation[] annotations, final MediaType mediaType,
final MultivaluedMap<String, Object> multivaluedMap, final
OutputStream outputStream) throws IOException, WebApplicationException
{
        provider.writeTo(o, aClass, type, annotations, mediaType,
multivaluedMap, outputStream);
    }

    @Override
    public boolean isReadable(final Class<?> aClass, final Type type,
final Annotation[] annotations, final MediaType mediaType) {
        return provider.isReadable(aClass, type, annotations, mediaType);
    }

    @Override
    public Object readFrom(final Class<Object> aClass, final Type
type, final Annotation[] annotations, final MediaType mediaType, final
MultivaluedMap<String, String> multivaluedMap, final InputStream
inputStream) throws IOException, WebApplicationException {
        return provider.readFrom(aClass, type, annotations, mediaType,
multivaluedMap, inputStream);
    }
}



Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://blog-rmannibucau.rhcloud.com> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
<https://javaeefactory-rmannibucau.rhcloud.com>

2017-03-30 19:19 GMT+02:00 COURTAULT Francois <
francois.courta...@gemalto.com>:

> Hello Romain,
>
> Already tried that:
>     @Override
>     public Object readFrom(Class<Object> aClass, Type type, Annotation[]
> annotations, MediaType mediaType, MultivaluedMap<String, String>
> multivaluedMap, InputStream inputStream) throws IOException,
> WebApplicationException {
>         return null;
>     }
>
> But it doesn't compile:-(   Method doesn't overwrite method from its
> superclass.
>
> Best Regards.
>
> -----Original Message-----
> From: Romain Manni-Bucau [mailto:rmannibu...@gmail.com]
> Sent: jeudi 30 mars 2017 18:57
> To: users@tomee.apache.org
> Subject: [+SPAM+]: Re: [+SPAM+]: Re: [+SPAM+]: Re: Re: No issue with 7.0.2
> but issue with 7.0.3 using @JsonProperty coming from jackson
>
> set the generic=Object
>
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog <
> https://blog-rmannibucau.rhcloud.com> | Old Blog <
> http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau>
> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory <
> https://javaeefactory-rmannibucau.rhcloud.com>
>
> 2017-03-30 18:55 GMT+02:00 COURTAULT Francois <
> francois.courta...@gemalto.com>:
>
> > Hello Romain,
> >
> > I tried your solution but I have one issue.
> > The signature readFrom  is public T readFrom(Class<T> aClass, Type
> > type, Annotation[] annotations, MediaType mediaType,
> > MultivaluedMap<String,
> > String> multivaluedMap, InputStream inputStream) throws IOException,
> > WebApplicationException
> >
> > But JacksonJsonProvider has  the following signature public Object
> > readFrom(Class<Object> type, Type genericType, Annotation[]
> > annotations, MediaType mediaType, MultivaluedMap<String, String>
> > httpHeaders, InputStream entityStream) throws IOException
> >
> > So it doesn't compile with this code:
> >     @Override
> >     public T readFrom(Class<T> aClass, Type type, Annotation[]
> > annotations, MediaType mediaType, MultivaluedMap<String, String>
> > multivaluedMap, InputStream inputStream) throws IOException,
> > WebApplicationException {
> >     return delegate.readFrom(aClass, type, annotations, mediaType,
> > multivaluedMap, inputStream);
> >     }
> >
> > Do you have a solution ?
> >
> > Best Regards.
> >
> > -----Original Message-----
> > From: Romain Manni-Bucau [mailto:rmannibu...@gmail.com]
> > Sent: jeudi 30 mars 2017 18:44
> > To: users@tomee.apache.org
> > Subject: [+SPAM+]: Re: [+SPAM+]: Re: Re: No issue with 7.0.2 but issue
> > with 7.0.3 using @JsonProperty coming from jackson
> >
> > 2017-03-30 18:41 GMT+02:00 COURTAULT Francois <
> > francois.courta...@gemalto.com>:
> >
> > > Hello,
> > >
> > > The thing is that we have only @Provider defined for ExceptionMapper...
> > >
> > > So, if I have understood you well, in order to use Jackson as the
> > > JAX-RS provider instead of Johnzon in TomEE 7.x,  I have to define a
> > > new provider class which delegates, in the methods we have to
> > > implement for the MessageBodyReader, MessageBodyWriter interfaces,
> > > to the JacksonJsonProvider, right ?
> > >
> > >
> > Yep, should be 5 methods only
> >
> >
> > > I will try to send you a test case in order to see what happens and
> > > why we have a different behavior between TomEE 7.0.2 and 7.0.3.
> > >
> >
> > Think it is cause we migrated johnzon default to cxf bus instead of
> > adding it manually to apps and filter it out if johnzon is there. But
> > to be honest issue cause is still a bug in jackson (or a not backward
> > compatible change in jaxrs 2).
> >
> >
> >
> >
> > >
> > > Best Regards.
> > >
> > > -----Original Message-----
> > > From: Romain Manni-Bucau [mailto:rmannibu...@gmail.com]
> > > Sent: jeudi 30 mars 2017 15:14
> > > To: users@tomee.apache.org
> > > Subject: [+SPAM+]: Re: Re: No issue with 7.0.2 but issue with 7.0.3
> > > using @JsonProperty coming from jackson
> > >
> > > 2017-03-30 15:08 GMT+02:00 COURTAULT Francois <
> > > francois.courta...@gemalto.com>:
> > >
> > > > Hello Romain,
> > > >
> > > > All our JAX-RS endpoints are annotated by with @Consumes({
> > > > MediaType.APPLICATION_JSON }) and /or  @Produces({
> > > > MediaType.APPLICATION_JSON }).
> > > > And no specific configuration has been done in order to set
> > > > Jackson as the JAX-RS provider for our application.
> > > >
> > >
> > > Was @Consumers/@Produces on the @Provider (jackson), not your endpoint.
> > >
> > >
> > > >
> > > > So, does it mean that we have to explicitly define the JAX-RS
> > > > provider in TomEE ?
> > > >
> > >
> > > No, scanning still works as requested by users so you can do
> > > something like (pseudo code, didnt check it compiles):
> > >
> > > @Provider
> > > @Consumes(MediaType.APPLICATION_JSON)
> > > @Produces(MediaType.APPLICATION_JSON)
> > > public class JsonProv<T> implements MessageBodyReader<T>,
> > > MessageBodyWriter<T> {  private final JacksonJsonProvider delegate =
> > > new JacksonJsonProvider();
> > >
> > >  // delegate all methods
> > > }
> > >
> > > And that's it
> > >
> > >
> > > > If yes, the right way to do that is to have an openejb-jar.xml in
> > > > the war with the following content ?
> > > > <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1";
> > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > > > xsi:schemaLocation="http://www.openejb.org/openejb-jar/1.1";>
> > > >     <pojo-deployment  class-name="jaxrs-application">
> > > >         <properties>
> > > >             cxf.jaxrs.providers = com.fasterxml.jackson.jaxrs.
> > > > json.JacksonJsonProvider
> > > >         </properties>
> > > >     </pojo-deployment>
> > > > </openejb-jar>
> > > >
> > > >
> > > > Best Regards.
> > > >
> > > > -----Original Message-----
> > > > From: Romain Manni-Bucau [mailto:rmannibu...@gmail.com]
> > > > Sent: jeudi 30 mars 2017 12:47
> > > > To: users@tomee.apache.org
> > > > Subject: [+SPAM+]: Re: [+SPAM+]: Re: No issue with 7.0.2 but issue
> > > > with
> > > > 7.0.3 using @JsonProperty coming from jackson
> > > >
> > > > 2017-03-30 12:15 GMT+02:00 COURTAULT Francois <
> > > > francois.courta...@gemalto.com>:
> > > >
> > > > > Hello Romain,
> > > > >
> > > > > Not sure to understand. TomEE 7.0.2 is JAX-RS 2.0 as well as
> > > > > TomEE 7.0.3, right ?
> > > > >
> > > >
> > > > Yes
> > > >
> > > >
> > > > > What do you mean by "ensure jackson was set with
> > > > > application/json mediatype" ?
> > > > >
> > > >
> > > > By default TomEE uses Johnzon since first 7.0.0 release. It sets
> > > > it as the least prioritized application/json provider to let the
> > > > users use something else and the usage be quite smooth and automatic.
> > > >
> > > > Jackson doesn't respect this JAXRS constraint (yes JAXRS 1 ->
> > > > JAXRS
> > > > 2 resolution got clarified...and broke even if it shouldnt have
> been).
> > > > In 2 words jackson uses */* which means the last one to use if
> > > > none are matching. Since johnzon uses application/json (and
> > > > application/*+json IIRC) then it is used cause matching the
> > > > request
> > > where jackson doesnt.
> > > >
> > > > If you wrap jackson provider in a custom one changing this
> > > > @Consumes and @Produces it will work automatically.
> > > >
> > > > Here is the bug
> > > > https://github.com/FasterXML/jackson-jaxrs-json-provider/
> > > > blob/master/src/main/java/com/fasterxml/jackson/jaxrs/json/
> > > > JacksonJsonProvider.java#L55
> > > > for memories
> > > >
> > > >
> > > > >
> > > > > We just use, as mentioned, Jackson annotations, we don't perform
> > > > > any initialization at Jackson level in our code ?
> > > > >
> > > > > Best Regards.
> > > > >
> > > > > -----Original Message-----
> > > > > From: Romain Manni-Bucau [mailto:rmannibu...@gmail.com]
> > > > > Sent: jeudi 30 mars 2017 11:56
> > > > > To: users@tomee.apache.org
> > > > > Subject: [+SPAM+]: Re: No issue with 7.0.2 but issue with 7.0.3
> > > > > using @JsonProperty coming from jackson
> > > > >
> > > > > Hi
> > > > >
> > > > > did you ensure jackson was set with application/json mediatype
> > > > > and not its default */* which means "least prioritized" since
> JAXRS 2.0?
> > > > >
> > > > >
> > > > > Romain Manni-Bucau
> > > > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog <
> > > > > https://blog-rmannibucau.rhcloud.com> | Old Blog <
> > > > > http://rmannibucau.wordpress.com> | Github
> > > > > <https://github.com/rmannibucau>
> > > > > | LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE
> > > > > | Factory <
> > > > > https://javaeefactory-rmannibucau.rhcloud.com>
> > > > >
> > > > > 2017-03-30 11:54 GMT+02:00 COURTAULT Francois <
> > > > > francois.courta...@gemalto.com>:
> > > > >
> > > > > > Hello,
> > > > > >
> > > > > > We have a rest Api which uses POJO classes with Bean
> > > > > > Validation annotations (like @Pattern, @NotNull) and Jackson
> > > > > > annotations like @JsonProperty.
> > > > > > Previously, using TomEE 7.0.2, we have no issue using the
> > > > > > @JsonProperty Jackson annotation. Indeed, this kind of
> > > > > > annotations was
> > > > > taken into account.
> > > > > >
> > > > > > But when we migrate to 7.0.3, it seems that the @JsonProperty
> > > > > > Jackson annotation is not anymore taking into account ☹ Is
> > > > > > there any way to fix that ?
> > > > > >
> > > > > > Best Regards.
> > > > > > ________________________________  This message and any
> > > > > > attachments are intended solely for the addressees and may
> > > > > > contain confidential information. Any unauthorized use or
> > > > > > disclosure, either whole or partial, is
> > > prohibited.
> > > > > > E-mails are susceptible to alteration. Our company shall not
> > > > > > be liable for the message if altered, changed or falsified. If
> > > > > > you are not the intended recipient of this message, please
> > > > > > delete it and notify the
> > > > > sender.
> > > > > > Although all reasonable efforts have been made to keep this
> > > > > > transmission free from viruses, the sender will not be liable
> > > > > > for damages caused by a transmitted virus.
> > > > > >
> > > > > ________________________________  This message and any
> > > > > attachments are intended solely for the addressees and may
> > > > > contain confidential information. Any unauthorized use or
> > > > > disclosure, either whole or partial, is
> > prohibited.
> > > > > E-mails are susceptible to alteration. Our company shall not be
> > > > > liable for the message if altered, changed or falsified. If you
> > > > > are not the intended recipient of this message, please delete it
> > > > > and notify the
> > > > sender.
> > > > > Although all reasonable efforts have been made to keep this
> > > > > transmission free from viruses, the sender will not be liable
> > > > > for damages caused by a transmitted virus.
> > > > >
> > > > ________________________________
> > > >  This message and any attachments are intended solely for the
> > > > addressees and may contain confidential information. Any
> > > > unauthorized use or disclosure, either whole or partial, is
> prohibited.
> > > > E-mails are susceptible to alteration. Our company shall not be
> > > > liable for the message if altered, changed or falsified. If you
> > > > are not the intended recipient of this message, please delete it
> > > > and notify the
> > > sender.
> > > > Although all reasonable efforts have been made to keep this
> > > > transmission free from viruses, the sender will not be liable for
> > > > damages caused by a transmitted virus.
> > > >
> > > ________________________________
> > >  This message and any attachments are intended solely for the
> > > addressees and may contain confidential information. Any
> > > unauthorized use or disclosure, either whole or partial, is prohibited.
> > > E-mails are susceptible to alteration. Our company shall not be
> > > liable for the message if altered, changed or falsified. If you are
> > > not the intended recipient of this message, please delete it and
> > > notify the
> > sender.
> > > Although all reasonable efforts have been made to keep this
> > > transmission free from viruses, the sender will not be liable for
> > > damages caused by a transmitted virus.
> > >
> > ________________________________
> >  This message and any attachments are intended solely for the
> > addressees and may contain confidential information. Any unauthorized
> > use or disclosure, either whole or partial, is prohibited.
> > E-mails are susceptible to alteration. Our company shall not be liable
> > for the message if altered, changed or falsified. If you are not the
> > intended recipient of this message, please delete it and notify the
> sender.
> > Although all reasonable efforts have been made to keep this
> > transmission free from viruses, the sender will not be liable for
> > damages caused by a transmitted virus.
> >
> ________________________________
>  This message and any attachments are intended solely for the addressees
> and may contain confidential information. Any unauthorized use or
> disclosure, either whole or partial, is prohibited.
> E-mails are susceptible to alteration. Our company shall not be liable for
> the message if altered, changed or falsified. If you are not the intended
> recipient of this message, please delete it and notify the sender.
> Although all reasonable efforts have been made to keep this transmission
> free from viruses, the sender will not be liable for damages caused by a
> transmitted virus.
>

Reply via email to