package com.fasterxml.jackson.jaxrs.json;

import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.jaxrs.cfg.Annotations;

JSON content type provider automatically configured to use both Jackson and JAXB annotations (in that order of priority). Otherwise functionally same as JacksonJsonProvider.

Typical usage pattern is to just instantiate instance of this provider for JAX-RS and use as is: this will use both Jackson and JAXB annotations (with Jackson annotations having priority).

Note: class annotations are duplicated from super class, since it is not clear whether JAX-RS implementations are required to check settings of super-classes. It is important to keep annotations in sync if changed.

/** * JSON content type provider automatically configured to use both Jackson * and JAXB annotations (in that order of priority). Otherwise functionally * same as {@link JacksonJsonProvider}. *<p> * Typical usage pattern is to just instantiate instance of this * provider for JAX-RS and use as is: this will use both Jackson and * JAXB annotations (with Jackson annotations having priority). *<p> * Note: class annotations are duplicated from super class, since it * is not clear whether JAX-RS implementations are required to * check settings of super-classes. It is important to keep annotations * in sync if changed. */
@Provider @Consumes(MediaType.WILDCARD) // NOTE: required to support "non-standard" JSON variants @Produces(MediaType.WILDCARD) public class JacksonJaxbJsonProvider extends JacksonJsonProvider {
Default annotation sets to use, if not explicitly defined during construction: use Jackson annotations if found; if not, use JAXB annotations as fallback.
/** * Default annotation sets to use, if not explicitly defined during * construction: use Jackson annotations if found; if not, use * JAXB annotations as fallback. */
public final static Annotations[] DEFAULT_ANNOTATIONS = { Annotations.JACKSON, Annotations.JAXB };
Default constructor, usually used when provider is automatically configured to be used with JAX-RS implementation.
/** * Default constructor, usually used when provider is automatically * configured to be used with JAX-RS implementation. */
public JacksonJaxbJsonProvider() { this(null, DEFAULT_ANNOTATIONS); }
Params:
  • annotationsToUse – Annotation set(s) to use for configuring data binding
/** * @param annotationsToUse Annotation set(s) to use for configuring * data binding */
public JacksonJaxbJsonProvider(Annotations... annotationsToUse) { this(null, annotationsToUse); }
Constructor to use when a custom mapper (usually components like serializer/deserializer factories that have been configured) is to be used.
/** * Constructor to use when a custom mapper (usually components * like serializer/deserializer factories that have been configured) * is to be used. */
public JacksonJaxbJsonProvider(ObjectMapper mapper, Annotations[] annotationsToUse) { super(mapper, annotationsToUse); } }