Package 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
Description
`MarshallingHttpMessageConverter()`
Construct a new `MarshallingHttpMessageConverter` with no `Marshaller` or `Unmarshaller` set.
`MarshallingHttpMessageConverter(org.springframework.oxm.Marshaller marshaller)`
Construct a new `MarshallingMessageConverter` with the given `Marshaller` set.
`MarshallingHttpMessageConverter(org.springframework.oxm.Marshaller marshaller, org.springframework.oxm.Unmarshaller unmarshaller)`
Construct a new `MarshallingMessageConverter` with the given `Marshaller` and `Unmarshaller`.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`canRead(Class<?> clazz, MediaType mediaType)`
This implementation checks if the given class is supported, and if the supported media types include the given media type.
`boolean`
`canWrite(Class<?> clazz, MediaType mediaType)`
This implementation checks if the given class is supported, and if the supported media types include the given media type.
`protected Object`
`readFromSource(Class<?> clazz, HttpHeaders headers, Source source)`
Abstract template method called from `AbstractHttpMessageConverter.read(Class, HttpInputMessage)`.
`void`
`setMarshaller(org.springframework.oxm.Marshaller marshaller)`
Set the `Marshaller` to be used by this message converter.
`void`
`setUnmarshaller(org.springframework.oxm.Unmarshaller unmarshaller)`
Set the `Unmarshaller` to be used by this message converter.
`protected boolean`
`supports(Class<?> clazz)`
Indicates whether the given class is supported by this converter.
`protected boolean`
`supportsRepeatableWrites(Object o)`
Indicates whether this message converter can write the given object multiple times.
`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

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

## Constructor Details

### 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(org.springframework.oxm.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(org.springframework.oxm.Marshaller marshaller, org.springframework.oxm.Unmarshaller unmarshaller)
Construct a new `MarshallingMessageConverter` with the given `Marshaller` and `Unmarshaller`.

Parameters:
  `marshaller` - the Marshaller to use
  `unmarshaller` - the Unmarshaller to use

## Method Details

### setMarshaller

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

### setUnmarshaller

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

### canRead

public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType)
Description copied from class: `AbstractHttpMessageConverter`
This implementation checks if the given class is supported, and if the supported media types include the given media type.

Specified by:
  `canRead` in interface `HttpMessageConverter<Object>`
Overrides:
  `canRead` in class `AbstractHttpMessageConverter<Object>`
Parameters:
  `clazz` - the class to test for readability
  `mediaType` - the media type to read (can be `null` if not specified); typically the value of a `Content-Type` header.
Returns:
  `true` if readable; `false` otherwise

### canWrite

public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType)
Description copied from class: `AbstractHttpMessageConverter`
This implementation checks if the given class is supported, and if the supported media types include the given media type.

Specified by:
  `canWrite` in interface `HttpMessageConverter<Object>`
Overrides:
  `canWrite` in class `AbstractHttpMessageConverter<Object>`
Parameters:
  `clazz` - the class to test for writability
  `mediaType` - the media type to write (can be `null` if not specified); typically the value of an `Accept` header.
Returns:
  `true` if writable; `false` otherwise

### supports

protected 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 Exception
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:
  `Exception` - in case of I/O or conversion errors

### writeToResult

protected void writeToResult(Object o, HttpHeaders headers, Result result) throws Exception
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:
  `Exception` - in case of I/O or conversion errors

### supportsRepeatableWrites

protected boolean supportsRepeatableWrites(Object o)
Description copied from class: `AbstractHttpMessageConverter`
Indicates whether this message converter can write the given object multiple times.

The default implementation returns `false`.

Overrides:
  `supportsRepeatableWrites` in class `AbstractHttpMessageConverter<Object>`
Parameters:
  `o` - the object t
Returns:
  `true` if `t` can be written repeatedly; `false` otherwise