Class JacksonYAMLProvider

java.lang.Object
com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonYAMLProvider,com.fasterxml.jackson.dataformat.yaml.YAMLMapper,YAMLEndpointConfig,YAMLMapperConfigurator>
com.fasterxml.jackson.jakarta.rs.yaml.JacksonYAMLProvider
All Implemented Interfaces:
com.fasterxml.jackson.core.Versioned, jakarta.ws.rs.ext.MessageBodyReader<Object>, jakarta.ws.rs.ext.MessageBodyWriter<Object>
Direct Known Subclasses:
JacksonXmlBindYAMLProvider

@Provider @Consumes("*/*") @Produces({"application/yaml","*/*"}) public class JacksonYAMLProvider extends com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonYAMLProvider,com.fasterxml.jackson.dataformat.yaml.YAMLMapper,YAMLEndpointConfig,YAMLMapperConfigurator>
Basic implementation of Jakarta-RS abstractions (MessageBodyReader, MessageBodyWriter) needed for binding YAML 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 explcitly setting mapper to use by ProviderBase.setMapper(MAPPER)
  • By defining Jakarta-RS Provider that returns YAMLMappers.
  • 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.

Note that there is also a sub-class -- (JacksonXmlBindYAMLProvider) -- that is configured by default to use both Jackson and XmlBind annotations for configuration (base class when used as-is defaults to using just Jackson annotations)

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected jakarta.ws.rs.ext.Providers
    Injectable context object used to locate configured instance of YAMLMapper to use for actual serialization.
    static final com.fasterxml.jackson.jakarta.rs.cfg.Annotations[]
    Default annotation sets to use, if not explicitly defined during construction: only Jackson annotations are used for the base class.

    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
    Default constructor, usually used when provider is automatically configured to be used with Jakarta-RS implementation.
    JacksonYAMLProvider(com.fasterxml.jackson.dataformat.yaml.YAMLMapper mapper)
     
    JacksonYAMLProvider(com.fasterxml.jackson.dataformat.yaml.YAMLMapper 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.
    JacksonYAMLProvider(com.fasterxml.jackson.jakarta.rs.cfg.Annotations... annotationsToUse)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    _configForReading(com.fasterxml.jackson.databind.ObjectReader reader, Annotation[] annotations)
     
    _configForWriting(com.fasterxml.jackson.databind.ObjectWriter writer, Annotation[] annotations)
     
    protected com.fasterxml.jackson.core.JsonParser
    _createParser(com.fasterxml.jackson.databind.ObjectReader reader, InputStream rawStream)
     
    com.fasterxml.jackson.dataformat.yaml.YAMLMapper
    _locateMapperViaProvider(Class<?> type, jakarta.ws.rs.core.MediaType mediaType)
    Method called to locate YAMLMapper to use for serialization and deserialization.
    protected boolean
    hasMatchingMediaType(jakarta.ws.rs.core.MediaType mediaType)
    Helper method used to check whether given media type is YAML type or sub type.
    com.fasterxml.jackson.core.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, _endpointForReading, _endpointForWriting, _findCustomUntouchable, _isIgnorableForReading, _isIgnorableForWriting, _isSpecialReadable, _locateMapperViaProvider, _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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • 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.
    • _providers

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

    • JacksonYAMLProvider

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

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

      public JacksonYAMLProvider(com.fasterxml.jackson.dataformat.yaml.YAMLMapper mapper)
    • JacksonYAMLProvider

      public JacksonYAMLProvider(com.fasterxml.jackson.dataformat.yaml.YAMLMapper 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 Details

    • version

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

      protected YAMLEndpointConfig _configForReading(com.fasterxml.jackson.databind.ObjectReader reader, Annotation[] annotations)
      Specified by:
      _configForReading in class com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonYAMLProvider,com.fasterxml.jackson.dataformat.yaml.YAMLMapper,YAMLEndpointConfig,YAMLMapperConfigurator>
    • _configForWriting

      protected YAMLEndpointConfig _configForWriting(com.fasterxml.jackson.databind.ObjectWriter writer, Annotation[] annotations)
      Specified by:
      _configForWriting in class com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonYAMLProvider,com.fasterxml.jackson.dataformat.yaml.YAMLMapper,YAMLEndpointConfig,YAMLMapperConfigurator>
    • hasMatchingMediaType

      protected boolean hasMatchingMediaType(jakarta.ws.rs.core.MediaType mediaType)
      Helper method used to check whether given media type is YAML type or sub type. Current implementation essentially checks to see whether MediaType.getSubtype() returns "xml" or something ending with "+yaml".
      Specified by:
      hasMatchingMediaType in class com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonYAMLProvider,com.fasterxml.jackson.dataformat.yaml.YAMLMapper,YAMLEndpointConfig,YAMLMapperConfigurator>
    • _locateMapperViaProvider

      public com.fasterxml.jackson.dataformat.yaml.YAMLMapper _locateMapperViaProvider(Class<?> type, jakarta.ws.rs.core.MediaType mediaType)
      Method called to locate YAMLMapper to use for serialization and deserialization. If an instance has been explicitly defined by ProviderBase.setMapper(MAPPER) (or non-null instance passed in constructor), that will be used. If not, will try to locate it using standard Jakarta-RS ContextResolver mechanism, if it has been properly configured to access it (by Jakarta-RS runtime). Finally, if no mapper is found, will return a default unconfigured ObjectMapper instance (one constructed with default constructor and not modified in any way)
      Specified by:
      _locateMapperViaProvider in class com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonYAMLProvider,com.fasterxml.jackson.dataformat.yaml.YAMLMapper,YAMLEndpointConfig,YAMLMapperConfigurator>
      Parameters:
      type - Class of object being serialized or deserialized; not checked at this point, since it is assumed that unprocessable classes have been already weeded out, but will be passed to ContextResolver as is.
      mediaType - Declared media type for the instance to process: not used by this method, but will be passed to ContextResolver as is.
    • _createParser

      protected com.fasterxml.jackson.core.JsonParser _createParser(com.fasterxml.jackson.databind.ObjectReader reader, InputStream rawStream) throws IOException
      Overrides:
      _createParser in class com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonYAMLProvider,com.fasterxml.jackson.dataformat.yaml.YAMLMapper,YAMLEndpointConfig,YAMLMapperConfigurator>
      Throws:
      IOException