public class Jaxb2CollectionHttpMessageConverter<T extends Collection> extends AbstractJaxb2HttpMessageConverter<T> implements GenericHttpMessageConverter<T>
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.
logger
Constructor and Description |
---|
Jaxb2CollectionHttpMessageConverter() |
Modifier and Type | Method and Description |
---|---|
boolean |
canRead(Class<?> clazz,
MediaType mediaType)
Always returns
false since Jaxb2CollectionHttpMessageConverter
required generic type information in order to read a Collection. |
boolean |
canRead(Type type,
Class<?> contextClass,
MediaType mediaType)
Indicates whether the given type can be read by this converter.
|
boolean |
canWrite(Class<?> clazz,
MediaType mediaType)
Always returns
false 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 |
createXmlInputFactory()
Create a
XMLInputFactory that this converter will use to create XMLStreamReader and XMLEventReader objects. |
T |
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 from
AbstractHttpMessageConverter.read(Class, HttpInputMessage) . |
protected boolean |
supports(Class<?> clazz)
Indicates whether the given class is supported by this converter.
|
protected void |
writeToResult(T t,
HttpHeaders headers,
Result result)
Abstract template method called from
AbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage) . |
createMarshaller, createUnmarshaller, customizeMarshaller, customizeUnmarshaller, getJaxbContext
readInternal, transform, writeInternal
canRead, canWrite, getContentLength, getDefaultContentType, getSupportedMediaTypes, read, setSupportedMediaTypes, write
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getSupportedMediaTypes, read, write
public boolean canRead(Class<?> clazz, MediaType mediaType)
false
since Jaxb2CollectionHttpMessageConverter
required generic type information in order to read a Collection.canRead
in interface HttpMessageConverter<T extends Collection>
canRead
in class AbstractHttpMessageConverter<T extends Collection>
clazz
- the class to test for readabilitymediaType
- the media type to read, can be null
if not specified.
Typically the value of a Content-Type
header.true
if readable; false
otherwisepublic boolean canRead(Type type, Class<?> contextClass, MediaType mediaType)
Jaxb2CollectionHttpMessageConverter can read a generic
Collection
where the generic type is a JAXB type annotated with
XmlRootElement
or XmlType
.
canRead
in interface GenericHttpMessageConverter<T extends Collection>
type
- the 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 be null
)mediaType
- the media type to read, can be null
if not specified.
Typically the value of a Content-Type
header.true
if readable; false
otherwisepublic boolean canWrite(Class<?> clazz, MediaType mediaType)
false
since Jaxb2CollectionHttpMessageConverter
does not convert collections to XML.canWrite
in interface HttpMessageConverter<T extends Collection>
canWrite
in class AbstractHttpMessageConverter<T extends Collection>
clazz
- the class to test for writabilitymediaType
- the media type to write, can be null
if not specified.
Typically the value of an Accept
header.true
if writable; false
otherwiseprotected boolean supports(Class<?> clazz)
AbstractHttpMessageConverter
supports
in class AbstractHttpMessageConverter<T extends Collection>
clazz
- the class to test for supporttrue
if supported; false
otherwiseprotected T readFromSource(Class<? extends T> clazz, HttpHeaders headers, Source source) throws IOException
AbstractXmlHttpMessageConverter
AbstractHttpMessageConverter.read(Class, HttpInputMessage)
.readFromSource
in class AbstractXmlHttpMessageConverter<T extends Collection>
clazz
- the type of object to returnheaders
- the HTTP input headerssource
- the HTTP input bodyIOException
- in case of I/O errorspublic T read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
GenericHttpMessageConverter
read
in interface GenericHttpMessageConverter<T extends Collection>
type
- the type of object to return. This type must have previously
been passed to the canRead
method of this interface,
which must have returned true
.contextClass
- a context class for the target type, for example a class
in which the target type appears in a method signature (can be null
)inputMessage
- the HTTP input message to read fromIOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errorsprotected T createCollection(Class<?> collectionClass)
collectionClass
- the type of Collection to instantiateprotected void writeToResult(T t, HttpHeaders headers, Result result) throws IOException
AbstractXmlHttpMessageConverter
AbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage)
.writeToResult
in class AbstractXmlHttpMessageConverter<T extends Collection>
t
- the object to write to the output messageheaders
- the HTTP output headersresult
- the HTTP output bodyIOException
- in case of I/O errorsprotected XMLInputFactory createXmlInputFactory()
XMLInputFactory
that this converter will use to create XMLStreamReader
and XMLEventReader
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.