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>
- All Implemented Interfaces:
GenericHttpMessageConverter<T>,HttpMessageConverter<T>
public class Jaxb2CollectionHttpMessageConverter<T extends Collection> extends AbstractJaxb2HttpMessageConverter<T> implements GenericHttpMessageConverter<T>
AnHttpMessageConverterthat can read XML collections using JAXB2.This converter can read collections that contain classes annotated with
XmlRootElementandXmlType. Note that this converter does not support writing.- Since:
- 3.2
- Author:
- Arjen Poutsma, Rossen Stoyanchev
Field Summary
Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
Constructor Summary
Constructors Constructor Description Jaxb2CollectionHttpMessageConverter()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanRead(Class<?> clazz, MediaType mediaType)Always returnsfalsesince Jaxb2CollectionHttpMessageConverter required generic type information in order to read a Collection.booleancanRead(Type type, Class<?> contextClass, MediaType mediaType)Indicates whether the given type can be read by this converter.booleancanWrite(Class<?> clazz, MediaType mediaType)Always returnsfalsesince Jaxb2CollectionHttpMessageConverter does not convert collections to XML.booleancanWrite(Type type, Class<?> clazz, MediaType mediaType)Always returnsfalsesince Jaxb2CollectionHttpMessageConverter does not convert collections to XML.protected TcreateCollection(Class<?> collectionClass)Create a Collection of the given type, with the given initial capacity (if supported by the Collection type).protected XMLInputFactorycreateXmlInputFactory()Create aXMLInputFactorythat this converter will use to createXMLStreamReaderandXMLEventReaderobjects.Tread(Type type, Class<?> contextClass, HttpInputMessage inputMessage)Read an object of the given type form the given input message, and returns it.protected TreadFromSource(Class<? extends T> clazz, HttpHeaders headers, Source source)Abstract template method called fromAbstractHttpMessageConverter.read(Class, HttpInputMessage).protected booleansupports(Class<?> clazz)Indicates whether the given class is supported by this converter.voidwrite(T t, Type type, MediaType contentType, HttpOutputMessage outputMessage)Write an given object to the given output message.protected voidwriteToResult(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, read, write
Constructor Detail
Jaxb2CollectionHttpMessageConverter
public Jaxb2CollectionHttpMessageConverter()
Method Detail
canRead
public boolean canRead(Class<?> clazz, MediaType mediaType)
Always returnsfalsesince Jaxb2CollectionHttpMessageConverter required generic type information in order to read a Collection.- Specified by:
canReadin interfaceHttpMessageConverter<T extends Collection>- Overrides:
canReadin classAbstractHttpMessageConverter<T extends Collection>- Parameters:
clazz- the class to test for readabilitymediaType- the media type to read (can benullif not specified); typically the value of aContent-Typeheader.- Returns:
trueif readable;falseotherwise
canRead
public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType)
Indicates whether the given type can be read by this converter. This method should perform the same checks thanHttpMessageConverter.canRead(Class, MediaType)with additional ones related to the generic type.Jaxb2CollectionHttpMessageConverter can read a generic
Collectionwhere the generic type is a JAXB type annotated withXmlRootElementorXmlType.- Specified by:
canReadin 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 benullif not specified. Typically the value of aContent-Typeheader.- Returns:
trueif readable;falseotherwise
canWrite
public boolean canWrite(Class<?> clazz, MediaType mediaType)
Always returnsfalsesince Jaxb2CollectionHttpMessageConverter does not convert collections to XML.- Specified by:
canWritein interfaceHttpMessageConverter<T extends Collection>- Overrides:
canWritein classAbstractHttpMessageConverter<T extends Collection>- Parameters:
clazz- the class to test for writabilitymediaType- the media type to write (can benullif not specified); typically the value of anAcceptheader.- Returns:
trueif writable;falseotherwise
canWrite
public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType)
Always returnsfalsesince Jaxb2CollectionHttpMessageConverter does not convert collections to XML.- Specified by:
canWritein interfaceGenericHttpMessageConverter<T extends Collection>- Parameters:
type- the (potentially generic) type to test for writability (can benullif not specified)clazz- the source object class to test for writabilitymediaType- the media type to write (can benullif not specified); typically the value of anAcceptheader.- Returns:
trueif writable;falseotherwise
supports
protected boolean supports(Class<?> clazz)
Description copied from class:AbstractHttpMessageConverterIndicates whether the given class is supported by this converter.- Specified by:
supportsin classAbstractHttpMessageConverter<T extends Collection>- Parameters:
clazz- the class to test for support- Returns:
trueif supported;falseotherwise
readFromSource
protected T readFromSource(Class<? extends T> clazz, HttpHeaders headers, Source source) throws IOException
Description copied from class:AbstractXmlHttpMessageConverterAbstract template method called fromAbstractHttpMessageConverter.read(Class, HttpInputMessage).- Specified by:
readFromSourcein 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:
IOException- in case of I/O errors
read
public T read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
Description copied from interface:GenericHttpMessageConverterRead an object of the given type form the given input message, and returns it.- Specified by:
readin interfaceGenericHttpMessageConverter<T extends Collection>- Parameters:
type- the (potentially generic) type of object to return. This type must have previously been passed to thecanReadmethod 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
protected T createCollection(Class<?> collectionClass)
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, Type type, MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
Description copied from interface:GenericHttpMessageConverterWrite an given object to the given output message.- Specified by:
writein 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 thecanWritemethod of this interface, which must have returnedtrue.type- the (potentially generic) type of object to write. This type must have previously been passed to thecanWritemethod of this interface, which must have returnedtrue. Can benullif not specified.contentType- the content type to use when writing. May benullto indicate that the default content type of the converter must be used. If notnull, this media type must have previously been passed to thecanWritemethod 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
protected void writeToResult(T t, HttpHeaders headers, Result result) throws IOException
Description copied from class:AbstractXmlHttpMessageConverterAbstract template method called fromAbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage).- Specified by:
writeToResultin classAbstractXmlHttpMessageConverter<T extends Collection>- Parameters:
t- the object to write to the output messageheaders- the HTTP output headersresult- the HTTP output body- Throws:
IOException- in case of I/O errors
createXmlInputFactory
protected XMLInputFactory createXmlInputFactory()
Create aXMLInputFactorythat this converter will use to createXMLStreamReaderandXMLEventReaderobjects.Can be overridden in subclasses, adding further initialization of the factory. The resulting factory is cached, so this method will only be called once.