Class Jaxb2CollectionHttpMessageConverter<T extends Collection>
java.lang.Object
org.springframework.http.converter.AbstractHttpMessageConverter<T>
org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter<T>
org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter<T>
org.springframework.http.converter.xml.Jaxb2CollectionHttpMessageConverter<T>
- Type Parameters:
T
- the converted object type
- All Implemented Interfaces:
GenericHttpMessageConverter<T>
,HttpMessageConverter<T>
public class Jaxb2CollectionHttpMessageConverter<T extends Collection>
extends AbstractJaxb2HttpMessageConverter<T>
implements GenericHttpMessageConverter<T>
An
HttpMessageConverter
that can read XML collections using JAXB2.
This converter can read collections that contain classes
annotated with XmlRootElement
and XmlType
. Note that this converter
does not support writing.
- Since:
- 3.2
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Sam Brannen
-
Field Summary
Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Always returnsfalse
since Jaxb2CollectionHttpMessageConverter required generic type information in order to read a Collection.boolean
Indicates whether the given type can be read by this converter.boolean
Always returnsfalse
since Jaxb2CollectionHttpMessageConverter does not convert collections to XML.boolean
Always returnsfalse
since Jaxb2CollectionHttpMessageConverter does not convert collections to XML.protected T
createCollection
(Class<?> collectionClass) Create a Collection of the given type, with the given initial capacity (if supported by the Collection type).protected XMLInputFactory
Create anXMLInputFactory
that this converter will use to createXMLStreamReader
andXMLEventReader
objects.read
(Type type, Class<?> contextClass, HttpInputMessage inputMessage) Read an object of the given type form the given input message, and returns it.protected T
readFromSource
(Class<? extends T> clazz, HttpHeaders headers, Source source) Abstract template method called fromAbstractHttpMessageConverter.read(Class, HttpInputMessage)
.protected boolean
Indicates whether the given class is supported by this converter.void
write
(T t, Type type, MediaType contentType, HttpOutputMessage outputMessage) Write a given object to the given output message.protected void
writeToResult
(T t, HttpHeaders headers, Result result) Abstract template method called fromAbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage)
.Methods inherited from class org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter
createMarshaller, createUnmarshaller, customizeMarshaller, customizeUnmarshaller, getJaxbContext
Methods inherited from class org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter
readInternal, transform, writeInternal
Methods inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
addDefaultHeaders, canRead, canWrite, getContentLength, getDefaultCharset, getDefaultContentType, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, write
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.http.converter.HttpMessageConverter
getSupportedMediaTypes, getSupportedMediaTypes, read, write
-
Constructor Details
-
Jaxb2CollectionHttpMessageConverter
public Jaxb2CollectionHttpMessageConverter()
-
-
Method Details
-
canRead
Always returnsfalse
since Jaxb2CollectionHttpMessageConverter required generic type information in order to read a Collection.- Specified by:
canRead
in interfaceHttpMessageConverter<T extends Collection>
- Overrides:
canRead
in classAbstractHttpMessageConverter<T extends Collection>
- Parameters:
clazz
- the class to test for readabilitymediaType
- the media type to read (can benull
if not specified); typically the value of aContent-Type
header.- Returns:
true
if readable;false
otherwise
-
canRead
Indicates whether the given type can be read by this converter. This method should perform the same checks asHttpMessageConverter.canRead(Class, MediaType)
with additional ones related to the generic type.Jaxb2CollectionHttpMessageConverter can read a generic
Collection
where the generic type is a JAXB type annotated withXmlRootElement
orXmlType
.- Specified by:
canRead
in interfaceGenericHttpMessageConverter<T extends Collection>
- Parameters:
type
- the (potentially generic) type to test for readabilitycontextClass
- a context class for the target type, for example a class in which the target type appears in a method signature (can benull
)mediaType
- the media type to read, can benull
if not specified. Typically, the value of aContent-Type
header.- Returns:
true
if readable;false
otherwise
-
canWrite
Always returnsfalse
since Jaxb2CollectionHttpMessageConverter does not convert collections to XML.- Specified by:
canWrite
in interfaceHttpMessageConverter<T extends Collection>
- Overrides:
canWrite
in classAbstractHttpMessageConverter<T extends Collection>
- Parameters:
clazz
- the class to test for writabilitymediaType
- the media type to write (can benull
if not specified); typically the value of anAccept
header.- Returns:
true
if writable;false
otherwise
-
canWrite
public boolean canWrite(@Nullable Type type, @Nullable Class<?> clazz, @Nullable MediaType mediaType) Always returnsfalse
since Jaxb2CollectionHttpMessageConverter does not convert collections to XML.- Specified by:
canWrite
in interfaceGenericHttpMessageConverter<T extends Collection>
- Parameters:
type
- the (potentially generic) type to test for writability (can benull
if not specified)clazz
- the source object class to test for writabilitymediaType
- the media type to write (can benull
if not specified); typically the value of anAccept
header.- Returns:
true
if writable;false
otherwise
-
supports
Description copied from class:AbstractHttpMessageConverter
Indicates whether the given class is supported by this converter.- Specified by:
supports
in classAbstractHttpMessageConverter<T extends Collection>
- Parameters:
clazz
- the class to test for support- Returns:
true
if supported;false
otherwise
-
readFromSource
protected T readFromSource(Class<? extends T> clazz, HttpHeaders headers, Source source) throws Exception Description copied from class:AbstractXmlHttpMessageConverter
Abstract template method called fromAbstractHttpMessageConverter.read(Class, HttpInputMessage)
.- Specified by:
readFromSource
in classAbstractXmlHttpMessageConverter<T extends Collection>
- Parameters:
clazz
- the type of object to returnheaders
- the HTTP input headerssource
- the HTTP input body- Returns:
- the converted object
- Throws:
Exception
- in case of I/O or conversion errors
-
read
public T read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException Description copied from interface:GenericHttpMessageConverter
Read an object of the given type form the given input message, and returns it.- Specified by:
read
in interfaceGenericHttpMessageConverter<T extends Collection>
- Parameters:
type
- the (potentially generic) type of object to return. This type must have previously been passed to thecanRead
method of this interface, which must have returnedtrue
.contextClass
- a context class for the target type, for example a class in which the target type appears in a method signature (can benull
)inputMessage
- the HTTP input message to read from- Returns:
- the converted object
- Throws:
IOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errors
-
createCollection
Create a Collection of the given type, with the given initial capacity (if supported by the Collection type).- Parameters:
collectionClass
- the type of Collection to instantiate- Returns:
- the created Collection instance
-
write
public void write(T t, @Nullable Type type, @Nullable MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException Description copied from interface:GenericHttpMessageConverter
Write a given object to the given output message.- Specified by:
write
in interfaceGenericHttpMessageConverter<T extends Collection>
- Parameters:
t
- the object to write to the output message. The type of this object must have previously been passed to thecanWrite
method of this interface, which must have returnedtrue
.type
- the (potentially generic) type of object to write. This type must have previously been passed to thecanWrite
method of this interface, which must have returnedtrue
. Can benull
if not specified.contentType
- the content type to use when writing. May benull
to indicate that the default content type of the converter must be used. If notnull
, this media type must have previously been passed to thecanWrite
method of this interface, which must have returnedtrue
.outputMessage
- the message to write to- Throws:
IOException
- in case of I/O errorsHttpMessageNotWritableException
- in case of conversion errors
-
writeToResult
Description copied from class:AbstractXmlHttpMessageConverter
Abstract template method called fromAbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage)
.- Specified by:
writeToResult
in classAbstractXmlHttpMessageConverter<T extends Collection>
- Parameters:
t
- the object to write to the output messageheaders
- the HTTP output headersresult
- the HTTP output body- Throws:
Exception
- in case of I/O or conversion errors
-
createXmlInputFactory
Create anXMLInputFactory
that this converter will use to createXMLStreamReader
andXMLEventReader
objects.Can be overridden in subclasses, adding further initialization of the factory. The resulting factory is cached, so this method will only be called once.
- See Also:
-