public class Jaxb2RootElementHttpMessageConverter extends AbstractJaxb2HttpMessageConverter<java.lang.Object>
HttpMessageConverter
that can read and write XML using JAXB2.
This converter can read classes annotated with XmlRootElement
and
XmlType
, and write classes annotated with XmlRootElement
,
or subclasses thereof.
Note: When using Spring's Marshaller/Unmarshaller abstractions from spring-oxm
,
you should use the MarshallingHttpMessageConverter
instead.
MarshallingHttpMessageConverter
Modifier and Type | Field and Description |
---|---|
private static org.xml.sax.EntityResolver |
NO_OP_ENTITY_RESOLVER |
private boolean |
processExternalEntities |
private boolean |
supportDtd |
logger
Constructor and Description |
---|
Jaxb2RootElementHttpMessageConverter() |
Modifier and Type | Method and Description |
---|---|
boolean |
canRead(java.lang.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(java.lang.Class<?> clazz,
MediaType mediaType)
|
boolean |
isProcessExternalEntities()
Returns the configured value for whether XML external entities are allowed.
|
boolean |
isSupportDtd()
Whether DTD parsing is supported.
|
protected javax.xml.transform.Source |
processSource(javax.xml.transform.Source source) |
protected java.lang.Object |
readFromSource(java.lang.Class<?> clazz,
HttpHeaders headers,
javax.xml.transform.Source source)
Abstract template method called from
AbstractHttpMessageConverter.read(Class, HttpInputMessage) . |
private void |
setCharset(MediaType contentType,
javax.xml.bind.Marshaller marshaller) |
void |
setProcessExternalEntities(boolean processExternalEntities)
Indicates whether external XML entities are processed when converting to a Source.
|
void |
setSupportDtd(boolean supportDtd)
Indicates whether DTD parsing should be supported.
|
protected boolean |
supports(java.lang.Class<?> clazz)
Indicates whether the given class is supported by this converter.
|
protected void |
writeToResult(java.lang.Object o,
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
private boolean supportDtd
private boolean processExternalEntities
private static final org.xml.sax.EntityResolver NO_OP_ENTITY_RESOLVER
public Jaxb2RootElementHttpMessageConverter()
public void setSupportDtd(boolean supportDtd)
Default is false
meaning that DTD is disabled.
public boolean isSupportDtd()
public void setProcessExternalEntities(boolean processExternalEntities)
Default is false
, meaning that external entities are not resolved.
Note: setting this option to true
also
automatically sets setSupportDtd(boolean)
to true
.
public boolean isProcessExternalEntities()
public boolean canRead(java.lang.Class<?> clazz, @Nullable MediaType mediaType)
AbstractHttpMessageConverter
canRead
in interface HttpMessageConverter<java.lang.Object>
canRead
in class AbstractHttpMessageConverter<java.lang.Object>
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 canWrite(java.lang.Class<?> clazz, @Nullable MediaType mediaType)
AbstractHttpMessageConverter
canWrite
in interface HttpMessageConverter<java.lang.Object>
canWrite
in class AbstractHttpMessageConverter<java.lang.Object>
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
otherwiseprotected boolean supports(java.lang.Class<?> clazz)
AbstractHttpMessageConverter
supports
in class AbstractHttpMessageConverter<java.lang.Object>
clazz
- the class to test for supporttrue
if supported; false
otherwiseprotected java.lang.Object readFromSource(java.lang.Class<?> clazz, HttpHeaders headers, javax.xml.transform.Source source) throws java.io.IOException
AbstractXmlHttpMessageConverter
AbstractHttpMessageConverter.read(Class, HttpInputMessage)
.readFromSource
in class AbstractXmlHttpMessageConverter<java.lang.Object>
clazz
- the type of object to returnheaders
- the HTTP input headerssource
- the HTTP input bodyjava.io.IOException
- in case of I/O errorsprotected javax.xml.transform.Source processSource(javax.xml.transform.Source source)
protected void writeToResult(java.lang.Object o, HttpHeaders headers, javax.xml.transform.Result result) throws java.io.IOException
AbstractXmlHttpMessageConverter
AbstractXmlHttpMessageConverter.writeInternal(Object, HttpOutputMessage)
.writeToResult
in class AbstractXmlHttpMessageConverter<java.lang.Object>
o
- the object to write to the output messageheaders
- the HTTP output headersresult
- the HTTP output bodyjava.io.IOException
- in case of I/O errors