public class Jaxb2CollectionHttpMessageConverter<T extends java.util.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(java.lang.Class<?> clazz,
MediaType mediaType)
Always returns
false since Jaxb2CollectionHttpMessageConverter
required generic type information in order to read a Collection. |
boolean |
canRead(java.lang.reflect.Type type,
java.lang.Class<?> contextClass,
MediaType mediaType)
Indicates whether the given type can be read by this converter.
|
boolean |
canWrite(java.lang.Class<?> clazz,
MediaType mediaType)
Always returns
false since Jaxb2CollectionHttpMessageConverter
does not convert collections to XML. |
boolean |
canWrite(java.lang.reflect.Type type,
java.lang.Class<?> clazz,
MediaType mediaType)
Always returns
false since Jaxb2CollectionHttpMessageConverter
does not convert collections to XML. |
protected T |
createCollection(java.lang.Class<?> collectionClass)
Create a Collection of the given type, with the given initial capacity
(if supported by the Collection type).
|
protected javax.xml.stream.XMLInputFactory |
createXmlInputFactory()
Create an
XMLInputFactory that this converter will use to create
XMLStreamReader and XMLEventReader
objects. |
T |
read(java.lang.reflect.Type type,
java.lang.Class<?> contextClass,
HttpInputMessage inputMessage)
Read an object of the given type form the given input message, and returns it.
|
protected T |
readFromSource(java.lang.Class<? extends T> clazz,
HttpHeaders headers,
javax.xml.transform.Source source)
Abstract template method called from
AbstractHttpMessageConverter.read(Class, HttpInputMessage) . |
protected boolean |
supports(java.lang.Class<?> clazz)
Indicates whether the given class is supported by this converter.
|
void |
write(T t,
java.lang.reflect.Type type,
MediaType contentType,
HttpOutputMessage outputMessage)
Write an given object to the given output message.
|
protected void |
writeToResult(T t,
HttpHeaders headers,
javax.xml.transform.Result result)
Abstract template method called from
AbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage) . |
createMarshaller, createUnmarshaller, customizeMarshaller, customizeUnmarshaller, getJaxbContext
readInternal, transform, writeInternal
addDefaultHeaders, canRead, canWrite, getContentLength, getDefaultCharset, getDefaultContentType, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, write
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getSupportedMediaTypes, read, write
public boolean canRead(java.lang.Class<?> clazz, @Nullable MediaType mediaType)
false
since Jaxb2CollectionHttpMessageConverter
required generic type information in order to read a Collection.canRead
in interface HttpMessageConverter<T extends java.util.Collection>
canRead
in class AbstractHttpMessageConverter<T extends java.util.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(java.lang.reflect.Type type, @Nullable java.lang.Class<?> contextClass, @Nullable MediaType mediaType)
HttpMessageConverter.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 with
XmlRootElement
or XmlType
.
canRead
in interface GenericHttpMessageConverter<T extends java.util.Collection>
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 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(java.lang.Class<?> clazz, @Nullable MediaType mediaType)
false
since Jaxb2CollectionHttpMessageConverter
does not convert collections to XML.canWrite
in interface HttpMessageConverter<T extends java.util.Collection>
canWrite
in class AbstractHttpMessageConverter<T extends java.util.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
otherwisepublic boolean canWrite(@Nullable java.lang.reflect.Type type, @Nullable java.lang.Class<?> clazz, @Nullable MediaType mediaType)
false
since Jaxb2CollectionHttpMessageConverter
does not convert collections to XML.canWrite
in interface GenericHttpMessageConverter<T extends java.util.Collection>
type
- the (potentially generic) type to test for writability
(can be null
if not specified)clazz
- the source object 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(java.lang.Class<?> clazz)
AbstractHttpMessageConverter
supports
in class AbstractHttpMessageConverter<T extends java.util.Collection>
clazz
- the class to test for supporttrue
if supported; false
otherwiseprotected T readFromSource(java.lang.Class<? extends T> clazz, HttpHeaders headers, javax.xml.transform.Source source) throws java.io.IOException
AbstractXmlHttpMessageConverter
AbstractHttpMessageConverter.read(Class, HttpInputMessage)
.readFromSource
in class AbstractXmlHttpMessageConverter<T extends java.util.Collection>
clazz
- the type of object to returnheaders
- the HTTP input headerssource
- the HTTP input bodyjava.io.IOException
- in case of I/O errorspublic T read(java.lang.reflect.Type type, @Nullable java.lang.Class<?> contextClass, HttpInputMessage inputMessage) throws java.io.IOException, HttpMessageNotReadableException
GenericHttpMessageConverter
read
in interface GenericHttpMessageConverter<T extends java.util.Collection>
type
- the (potentially generic) 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 fromjava.io.IOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errorsprotected T createCollection(java.lang.Class<?> collectionClass)
collectionClass
- the type of Collection to instantiatepublic void write(T t, @Nullable java.lang.reflect.Type type, @Nullable MediaType contentType, HttpOutputMessage outputMessage) throws java.io.IOException, HttpMessageNotWritableException
GenericHttpMessageConverter
write
in interface GenericHttpMessageConverter<T extends java.util.Collection>
t
- the object to write to the output message. The type of this object must
have previously been passed to the canWrite
method of this
interface, which must have returned true
.type
- the (potentially generic) type of object to write. This type must have
previously been passed to the canWrite
method of this interface,
which must have returned true
. Can be null
if not specified.contentType
- the content type to use when writing. May be null
to
indicate that the default content type of the converter must be used. If not
null
, this media type must have previously been passed to the
canWrite
method of this interface, which must have returned
true
.outputMessage
- the message to write tojava.io.IOException
- in case of I/O errorsHttpMessageNotWritableException
- in case of conversion errorsprotected void writeToResult(T t, HttpHeaders headers, javax.xml.transform.Result result) throws java.io.IOException
AbstractXmlHttpMessageConverter
AbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage)
.writeToResult
in class AbstractXmlHttpMessageConverter<T extends java.util.Collection>
t
- the object to write to the output messageheaders
- the HTTP output headersresult
- the HTTP output bodyjava.io.IOException
- in case of I/O errorsprotected javax.xml.stream.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.
StaxUtils.createDefensiveInputFactory()