Class JacksonJsonProvider

  • All Implemented Interfaces:
    com.fasterxml.jackson.core.Versioned, jakarta.ws.rs.ext.MessageBodyReader<Object>, jakarta.ws.rs.ext.MessageBodyWriter<Object>
    Direct Known Subclasses:
    JacksonXmlBindJsonProvider

    @Provider
    @Consumes("*/*")
    @Produces("*/*")
    public class JacksonJsonProvider
    extends com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonJsonProvider,​com.fasterxml.jackson.databind.ObjectMapper,​JsonEndpointConfig,​JsonMapperConfigurator>
    Basic implementation of Jakarta-RS abstractions (MessageBodyReader, MessageBodyWriter) needed for binding JSON ("application/json") content to and from Java Objects ("POJO"s).

    Actual data binding functionality is implemented by ObjectMapper: mapper to use can be configured in multiple ways:

    • By explicitly passing mapper to use in constructor
    • By explictly setting mapper to use by ProviderBase.setMapper(MAPPER)
    • By defining Jakarta-RS Provider that returns ObjectMappers.
    • By doing none of above, in which case a default mapper instance is constructed (and configured if configuration methods are called)
    The last method ("do nothing specific") is often good enough; explicit passing of Mapper is simple and explicit; and Provider-based method may make sense with Dependency Injection frameworks, or if Mapper has to be configured differently for different media types.

    Note that the default mapper instance will be automatically created if one of explicit configuration methods (like ProviderBase.configure(com.fasterxml.jackson.jakarta.rs.cfg.JakartaRSFeature, boolean)) is called: if so, Provider-based introspection is NOT used, but the resulting Mapper is used as configured.

    There is also (JacksonXmlBindJsonProvider) which is configured by default to use both Jackson and Jakarta XmlBin annotations for configuration (base class when used as-is defaults to using just Jackson annotations)

    Author:
    Tatu Saloranta
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected String _jsonpFunctionName
      JSONP function name to use for automatic JSONP wrapping, if any; if null, no JSONP wrapping is done.
      protected jakarta.ws.rs.ext.Providers _providers
      Injectable context object used to locate configured instance of ObjectMapper to use for actual serialization.
      static com.fasterxml.jackson.jakarta.rs.cfg.Annotations[] BASIC_ANNOTATIONS
      Default annotation sets to use, if not explicitly defined during construction: only Jackson annotations are used for the base class.
      static String MIME_JAVASCRIPT  
      static String MIME_JAVASCRIPT_MS  
      • Fields inherited from class com.fasterxml.jackson.jakarta.rs.base.ProviderBase

        _cfgCheckCanDeserialize, _cfgCheckCanSerialize, _cfgCustomUntouchables, _defaultReadView, _defaultWriteView, _jakartaRSFeatures, _mapperConfig, _readers, _unreadableClasses, _untouchables, _unwritableClasses, _writers, DEFAULT_UNREADABLES, DEFAULT_UNTOUCHABLES, DEFAULT_UNWRITABLES, HEADER_CONTENT_TYPE_OPTIONS, JAKARTA_RS_FEATURE_DEFAULTS
    • Constructor Summary

      Constructors 
      Constructor Description
      JacksonJsonProvider()
      Default constructor, usually used when provider is automatically configured to be used with Jakarta-RS implementation.
      JacksonJsonProvider​(com.fasterxml.jackson.databind.ObjectMapper mapper)  
      JacksonJsonProvider​(com.fasterxml.jackson.databind.ObjectMapper mapper, com.fasterxml.jackson.jakarta.rs.cfg.Annotations[] annotationsToUse)
      Constructor to use when a custom mapper (usually components like serializer/deserializer factories that have been configured) is to be used.
      JacksonJsonProvider​(com.fasterxml.jackson.jakarta.rs.cfg.Annotations... annotationsToUse)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected JsonEndpointConfig _configForReading​(com.fasterxml.jackson.databind.ObjectReader reader, Annotation[] annotations)  
      protected JsonEndpointConfig _configForWriting​(com.fasterxml.jackson.databind.ObjectWriter writer, Annotation[] annotations)  
      protected com.fasterxml.jackson.databind.ObjectMapper _locateMapperViaProvider​(Class<?> type, jakarta.ws.rs.core.MediaType mediaType)  
      protected boolean hasMatchingMediaType​(jakarta.ws.rs.core.MediaType mediaType)
      Helper method used to check whether given media type is supported by this provider.
      void setJSONPFunctionName​(String fname)  
      com.fasterxml.jackson.core.Version version()
      Method that will return version information stored in and read from jar that contains this class.
      • Methods inherited from class com.fasterxml.jackson.jakarta.rs.base.ProviderBase

        _addSuperTypes, _configForReading, _configForWriting, _containedIn, _createGenerator, _createNoContentException, _createParser, _endpointForReading, _endpointForWriting, _findCustomUntouchable, _isIgnorableForReading, _isIgnorableForWriting, _isSpecialReadable, _modifyHeaders, addUntouchable, checkCanDeserialize, checkCanSerialize, configure, configure, configure, configure, configure, disable, disable, disable, disable, disable, disable, enable, enable, enable, enable, enable, enable, findEncoding, findSuperTypes, findSuperTypes, getSize, hasMatchingMediaTypeForReading, hasMatchingMediaTypeForWriting, isEnabled, isReadable, isWriteable, locateMapper, readFrom, removeUntouchable, setAnnotationsToUse, setDefaultReadView, setDefaultView, setDefaultWriteView, setMapper, writeTo
    • Field Detail

      • BASIC_ANNOTATIONS

        public static final com.fasterxml.jackson.jakarta.rs.cfg.Annotations[] BASIC_ANNOTATIONS
        Default annotation sets to use, if not explicitly defined during construction: only Jackson annotations are used for the base class. Sub-classes can use other settings.
      • _jsonpFunctionName

        protected String _jsonpFunctionName
        JSONP function name to use for automatic JSONP wrapping, if any; if null, no JSONP wrapping is done. Note that this is the default value that can be overridden on per-endpoint basis.
      • _providers

        @Context
        protected jakarta.ws.rs.ext.Providers _providers
        Injectable context object used to locate configured instance of ObjectMapper to use for actual serialization.
    • Constructor Detail

      • JacksonJsonProvider

        public JacksonJsonProvider()
        Default constructor, usually used when provider is automatically configured to be used with Jakarta-RS implementation.
      • JacksonJsonProvider

        public JacksonJsonProvider​(com.fasterxml.jackson.jakarta.rs.cfg.Annotations... annotationsToUse)
        Parameters:
        annotationsToUse - Annotation set(s) to use for configuring data binding
      • JacksonJsonProvider

        public JacksonJsonProvider​(com.fasterxml.jackson.databind.ObjectMapper mapper)
      • JacksonJsonProvider

        public JacksonJsonProvider​(com.fasterxml.jackson.databind.ObjectMapper mapper,
                                   com.fasterxml.jackson.jakarta.rs.cfg.Annotations[] annotationsToUse)
        Constructor to use when a custom mapper (usually components like serializer/deserializer factories that have been configured) is to be used.
        Parameters:
        annotationsToUse - Sets of annotations (Jackson, XmlBind) that provider should support
    • Method Detail

      • version

        public com.fasterxml.jackson.core.Version version()
        Method that will return version information stored in and read from jar that contains this class.
      • setJSONPFunctionName

        public void setJSONPFunctionName​(String fname)
      • hasMatchingMediaType

        protected boolean hasMatchingMediaType​(jakarta.ws.rs.core.MediaType mediaType)
        Helper method used to check whether given media type is supported by this provider. Current implementation essentially checks to see whether MediaType.getSubtype() returns "json" or something ending with "+json". Or "text/x-json" (since 2.3)
        Specified by:
        hasMatchingMediaType in class com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonJsonProvider,​com.fasterxml.jackson.databind.ObjectMapper,​JsonEndpointConfig,​JsonMapperConfigurator>
        Since:
        2.2
      • _locateMapperViaProvider

        protected com.fasterxml.jackson.databind.ObjectMapper _locateMapperViaProvider​(Class<?> type,
                                                                                       jakarta.ws.rs.core.MediaType mediaType)
        Specified by:
        _locateMapperViaProvider in class com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonJsonProvider,​com.fasterxml.jackson.databind.ObjectMapper,​JsonEndpointConfig,​JsonMapperConfigurator>