org.springframework.http.converter.xml
Class MarshallingHttpMessageConverter

java.lang.Object
  extended by org.springframework.http.converter.AbstractHttpMessageConverter<T>
      extended by org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter<Object>
          extended by org.springframework.http.converter.xml.MarshallingHttpMessageConverter
All Implemented Interfaces:
HttpMessageConverter<Object>

public class MarshallingHttpMessageConverter
extends AbstractXmlHttpMessageConverter<Object>

Implementation of HttpMessageConverter that can read and write XML using Spring's Marshaller and Unmarshaller abstractions.

This converter requires a Marshaller and Unmarshaller before it can be used. These can be injected by the constructor or bean properties.

By default, this converter supports text/xml and application/xml. This can be overridden by setting the supportedMediaTypes property.

Since:
3.0
Author:
Arjen Poutsma

Field Summary
 
Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
 
Constructor Summary
MarshallingHttpMessageConverter()
          Construct a new MarshallingHttpMessageConverter with no Marshaller or Unmarshaller set.
MarshallingHttpMessageConverter(Marshaller marshaller)
          Construct a new MarshallingMessageConverter with the given Marshaller set.
MarshallingHttpMessageConverter(Marshaller marshaller, Unmarshaller unmarshaller)
          Construct a new MarshallingMessageConverter with the given Marshaller and Unmarshaller.
 
Method Summary
protected  Object readFromSource(Class<?> clazz, HttpHeaders headers, Source source)
          Abstract template method called from AbstractHttpMessageConverter.read(Class, HttpInputMessage).
 void setMarshaller(Marshaller marshaller)
          Set the Marshaller to be used by this message converter.
 void setUnmarshaller(Unmarshaller unmarshaller)
          Set the Unmarshaller to be used by this message converter.
 boolean supports(Class<?> clazz)
          Indicates whether the given class is supported by this converter.
protected  void writeToResult(Object o, HttpHeaders headers, Result result)
          Abstract template method called from AbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage).
 
Methods inherited from class org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter
readInternal, transform, writeInternal
 
Methods inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
canRead, canRead, canWrite, canWrite, getContentLength, getDefaultContentType, getSupportedMediaTypes, read, setSupportedMediaTypes, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MarshallingHttpMessageConverter

public MarshallingHttpMessageConverter()
Construct a new MarshallingHttpMessageConverter with no Marshaller or Unmarshaller set. The marshaller and unmarshaller must be set after construction by invoking setMarshaller(Marshaller) and setUnmarshaller(Unmarshaller) .


MarshallingHttpMessageConverter

public MarshallingHttpMessageConverter(Marshaller marshaller)
Construct a new MarshallingMessageConverter with the given Marshaller set.

If the given Marshaller also implements the Unmarshaller interface, it is used for both marshalling and unmarshalling. Otherwise, an exception is thrown.

Note that all Marshaller implementations in Spring also implement the Unmarshaller interface, so that you can safely use this constructor.

Parameters:
marshaller - object used as marshaller and unmarshaller

MarshallingHttpMessageConverter

public MarshallingHttpMessageConverter(Marshaller marshaller,
                                       Unmarshaller unmarshaller)
Construct a new MarshallingMessageConverter with the given Marshaller and Unmarshaller.

Parameters:
marshaller - the Marshaller to use
unmarshaller - the Unmarshaller to use
Method Detail

setMarshaller

public void setMarshaller(Marshaller marshaller)
Set the Marshaller to be used by this message converter.


setUnmarshaller

public void setUnmarshaller(Unmarshaller unmarshaller)
Set the Unmarshaller to be used by this message converter.


supports

public boolean supports(Class<?> clazz)
Description copied from class: AbstractHttpMessageConverter
Indicates whether the given class is supported by this converter.

Specified by:
supports in class AbstractHttpMessageConverter<Object>
Parameters:
clazz - the class to test for support
Returns:
true if supported; false otherwise

readFromSource

protected Object readFromSource(Class<?> clazz,
                                HttpHeaders headers,
                                Source source)
                         throws IOException
Description copied from class: AbstractXmlHttpMessageConverter
Abstract template method called from AbstractHttpMessageConverter.read(Class, HttpInputMessage).

Specified by:
readFromSource in class AbstractXmlHttpMessageConverter<Object>
Parameters:
clazz - the type of object to return
headers - the HTTP input headers
source - the HTTP input body
Returns:
the converted object
Throws:
IOException - in case of I/O errors

writeToResult

protected void writeToResult(Object o,
                             HttpHeaders headers,
                             Result result)
                      throws IOException
Description copied from class: AbstractXmlHttpMessageConverter
Abstract template method called from AbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage).

Specified by:
writeToResult in class AbstractXmlHttpMessageConverter<Object>
Parameters:
o - the object to write to the output message
headers - the HTTP output headers
result - the HTTP output body
Throws:
IOException - in case of I/O errors