Class JacksonXMLProvider
- java.lang.Object
-
- com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonXMLProvider,com.fasterxml.jackson.dataformat.xml.XmlMapper,XMLEndpointConfig,XMLMapperConfigurator>
-
- com.fasterxml.jackson.jakarta.rs.xml.JacksonXMLProvider
-
- All Implemented Interfaces:
com.fasterxml.jackson.core.Versioned,jakarta.ws.rs.ext.MessageBodyReader<Object>,jakarta.ws.rs.ext.MessageBodyWriter<Object>
- Direct Known Subclasses:
JacksonXmlBindXMLProvider
@Provider @Consumes("*/*") @Produces("*/*") public class JacksonXMLProvider extends com.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonXMLProvider,com.fasterxml.jackson.dataformat.xml.XmlMapper,XMLEndpointConfig,XMLMapperConfigurator>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
Providerthat returnsXmlMappers. - By doing none of above, in which case a default mapper instance is constructed (and configured if configuration methods are called)
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 -- (
JacksonXmlBindXMLProvider) -- that is configured by default to use both Jackson and Jakarta XmlBind 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 jakarta.ws.rs.ext.Providers_providersInjectable context object used to locate configured instance ofXmlMapperto use for actual serialization.static com.fasterxml.jackson.jakarta.rs.cfg.Annotations[]BASIC_ANNOTATIONSDefault 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 JacksonXMLProvider()Default constructor, usually used when provider is automatically configured to be used with Jakarta-RS implementation.JacksonXMLProvider(com.fasterxml.jackson.dataformat.xml.XmlMapper mapper)JacksonXMLProvider(com.fasterxml.jackson.dataformat.xml.XmlMapper 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.JacksonXMLProvider(com.fasterxml.jackson.jakarta.rs.cfg.Annotations... annotationsToUse)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected XMLEndpointConfig_configForReading(com.fasterxml.jackson.databind.ObjectReader reader, Annotation[] annotations)protected XMLEndpointConfig_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.xml.XmlMapper_locateMapperViaProvider(Class<?> type, jakarta.ws.rs.core.MediaType mediaType)Method called to locateXmlMapperto use for serialization and deserialization.protected booleanhasMatchingMediaType(jakarta.ws.rs.core.MediaType mediaType)Helper method used to check whether given media type is XML type or sub type.com.fasterxml.jackson.core.Versionversion()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, _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.
-
_providers
@Context protected jakarta.ws.rs.ext.Providers _providers
Injectable context object used to locate configured instance ofXmlMapperto use for actual serialization.
-
-
Constructor Detail
-
JacksonXMLProvider
public JacksonXMLProvider()
Default constructor, usually used when provider is automatically configured to be used with Jakarta-RS implementation.
-
JacksonXMLProvider
public JacksonXMLProvider(com.fasterxml.jackson.jakarta.rs.cfg.Annotations... annotationsToUse)
- Parameters:
annotationsToUse- Annotation set(s) to use for configuring data binding
-
JacksonXMLProvider
public JacksonXMLProvider(com.fasterxml.jackson.dataformat.xml.XmlMapper mapper)
-
JacksonXMLProvider
public JacksonXMLProvider(com.fasterxml.jackson.dataformat.xml.XmlMapper 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.
-
_configForReading
protected XMLEndpointConfig _configForReading(com.fasterxml.jackson.databind.ObjectReader reader, Annotation[] annotations)
- Specified by:
_configForReadingin classcom.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonXMLProvider,com.fasterxml.jackson.dataformat.xml.XmlMapper,XMLEndpointConfig,XMLMapperConfigurator>
-
_configForWriting
protected XMLEndpointConfig _configForWriting(com.fasterxml.jackson.databind.ObjectWriter writer, Annotation[] annotations)
- Specified by:
_configForWritingin classcom.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonXMLProvider,com.fasterxml.jackson.dataformat.xml.XmlMapper,XMLEndpointConfig,XMLMapperConfigurator>
-
hasMatchingMediaType
protected boolean hasMatchingMediaType(jakarta.ws.rs.core.MediaType mediaType)
Helper method used to check whether given media type is XML type or sub type. Current implementation essentially checks to see whetherMediaType.getSubtype()returns "xml" or something ending with "+xml".- Specified by:
hasMatchingMediaTypein classcom.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonXMLProvider,com.fasterxml.jackson.dataformat.xml.XmlMapper,XMLEndpointConfig,XMLMapperConfigurator>
-
_locateMapperViaProvider
public com.fasterxml.jackson.dataformat.xml.XmlMapper _locateMapperViaProvider(Class<?> type, jakarta.ws.rs.core.MediaType mediaType)
Method called to locateXmlMapperto use for serialization and deserialization. If an instance has been explicitly defined byProviderBase.setMapper(MAPPER)(or non-null instance passed in constructor), that will be used. If not, will try to locate it using standard Jakarta-RSContextResolvermechanism, if it has been properly configured to access it (by Jakarta-RS runtime). Finally, if no mapper is found, will return a default unconfiguredObjectMapperinstance (one constructed with default constructor and not modified in any way)- Specified by:
_locateMapperViaProviderin classcom.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonXMLProvider,com.fasterxml.jackson.dataformat.xml.XmlMapper,XMLEndpointConfig,XMLMapperConfigurator>- 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 toContextResolveras is.mediaType- Declared media type for the instance to process: not used by this method, but will be passed toContextResolveras is.
-
_createParser
protected com.fasterxml.jackson.core.JsonParser _createParser(com.fasterxml.jackson.databind.ObjectReader reader, InputStream rawStream) throws IOException- Overrides:
_createParserin classcom.fasterxml.jackson.jakarta.rs.base.ProviderBase<JacksonXMLProvider,com.fasterxml.jackson.dataformat.xml.XmlMapper,XMLEndpointConfig,XMLMapperConfigurator>- Throws:
IOException
-
-