org.springframework.http.converter.xml

## Class MarshallingHttpMessageConverter

- java.lang.Object
- - org.springframework.http.converter.AbstractHttpMessageConverter<T>
  - - org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter<Object>
    - - 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

Constructors
Constructor and Description
`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

Methods
`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