public abstract class AbstractMarshaller extends java.lang.Object implements Marshaller, Unmarshaller
Marshaller and Unmarshaller interface.
This implementation inspects the given Source or Result, and
delegates further handling to overridable template methods.| Modifier and Type | Field and Description |
|---|---|
protected Log |
logger
Logger available to subclasses
|
| Constructor and Description |
|---|
AbstractMarshaller() |
| Modifier and Type | Method and Description |
|---|---|
protected org.w3c.dom.Document |
buildDocument()
Build a new
Document from this marshaller's DocumentBuilderFactory,
as a placeholder for a DOM node. |
protected javax.xml.parsers.DocumentBuilder |
createDocumentBuilder(javax.xml.parsers.DocumentBuilderFactory factory)
Create a
DocumentBuilder that this marshaller will use for creating
DOM documents when passed an empty DOMSource. |
protected javax.xml.parsers.DocumentBuilderFactory |
createDocumentBuilderFactory()
Create a
DocumentBuilder that this marshaller will use for creating
DOM documents when passed an empty DOMSource. |
protected org.xml.sax.XMLReader |
createXmlReader()
Create an
XMLReader that this marshaller will when passed an empty SAXSource. |
protected java.lang.String |
getDefaultEncoding()
Determine the default encoding to use for marshalling or unmarshalling from
a byte stream, or
null if none. |
boolean |
isProcessExternalEntities()
Returns the configured value for whether XML external entities are allowed.
|
boolean |
isSupportDtd()
Whether DTD parsing is supported.
|
void |
marshal(java.lang.Object graph,
javax.xml.transform.Result result)
Marshals the object graph with the given root into the provided
javax.xml.transform.Result. |
protected abstract void |
marshalDomNode(java.lang.Object graph,
org.w3c.dom.Node node)
Abstract template method for marshalling the given object graph to a DOM
Node. |
protected void |
marshalDomResult(java.lang.Object graph,
javax.xml.transform.dom.DOMResult domResult)
Template method for handling
DOMResults. |
protected abstract void |
marshalOutputStream(java.lang.Object graph,
java.io.OutputStream outputStream)
Abstract template method for marshalling the given object graph to a
OutputStream. |
protected abstract void |
marshalSaxHandlers(java.lang.Object graph,
org.xml.sax.ContentHandler contentHandler,
org.xml.sax.ext.LexicalHandler lexicalHandler)
Abstract template method for marshalling the given object graph to a SAX
ContentHandler. |
protected void |
marshalSaxResult(java.lang.Object graph,
javax.xml.transform.sax.SAXResult saxResult)
Template method for handling
SAXResults. |
protected void |
marshalStaxResult(java.lang.Object graph,
javax.xml.transform.Result staxResult)
Template method for handling
StaxResults. |
protected void |
marshalStreamResult(java.lang.Object graph,
javax.xml.transform.stream.StreamResult streamResult)
Template method for handling
StreamResults. |
protected abstract void |
marshalWriter(java.lang.Object graph,
java.io.Writer writer)
Abstract template method for marshalling the given object graph to a
Writer. |
protected abstract void |
marshalXmlEventWriter(java.lang.Object graph,
javax.xml.stream.XMLEventWriter eventWriter)
Abstract template method for marshalling the given object to a StAX
XMLEventWriter. |
protected abstract void |
marshalXmlStreamWriter(java.lang.Object graph,
javax.xml.stream.XMLStreamWriter streamWriter)
Abstract template method for marshalling the given object to a StAX
XMLStreamWriter. |
void |
setProcessExternalEntities(boolean processExternalEntities)
Indicates whether external XML entities are processed when unmarshalling.
|
void |
setSupportDtd(boolean supportDtd)
Indicates whether DTD parsing should be supported.
|
java.lang.Object |
unmarshal(javax.xml.transform.Source source)
Unmarshals the given provided
javax.xml.transform.Source into an object graph. |
protected abstract java.lang.Object |
unmarshalDomNode(org.w3c.dom.Node node)
Abstract template method for unmarshalling from a given DOM
Node. |
protected java.lang.Object |
unmarshalDomSource(javax.xml.transform.dom.DOMSource domSource)
Template method for handling
DOMSources. |
protected abstract java.lang.Object |
unmarshalInputStream(java.io.InputStream inputStream)
Abstract template method for unmarshalling from a given
InputStream. |
protected abstract java.lang.Object |
unmarshalReader(java.io.Reader reader)
Abstract template method for unmarshalling from a given
Reader. |
protected abstract java.lang.Object |
unmarshalSaxReader(org.xml.sax.XMLReader xmlReader,
org.xml.sax.InputSource inputSource)
Abstract template method for unmarshalling using a given SAX
XMLReader
and InputSource. |
protected java.lang.Object |
unmarshalSaxSource(javax.xml.transform.sax.SAXSource saxSource)
Template method for handling
SAXSources. |
protected java.lang.Object |
unmarshalStaxSource(javax.xml.transform.Source staxSource)
Template method for handling
StaxSources. |
protected java.lang.Object |
unmarshalStreamSource(javax.xml.transform.stream.StreamSource streamSource)
Template method for handling
StreamSources. |
protected abstract java.lang.Object |
unmarshalXmlEventReader(javax.xml.stream.XMLEventReader eventReader)
Abstract template method for unmarshalling from a given Stax
XMLEventReader. |
protected abstract java.lang.Object |
unmarshalXmlStreamReader(javax.xml.stream.XMLStreamReader streamReader)
Abstract template method for unmarshalling from a given Stax
XMLStreamReader. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitsupportssupportsprotected final Log logger
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 that processing of external entities will only be enabled/disabled when the
Source passed to unmarshal(Source) is a SAXSource or
StreamSource. It has no effect for DOMSource or StAXSource
instances.
Note: setting this option to true also
automatically sets setSupportDtd(boolean) to true.
public boolean isProcessExternalEntities()
createXmlReader()protected org.w3c.dom.Document buildDocument()
Document from this marshaller's DocumentBuilderFactory,
as a placeholder for a DOM node.protected javax.xml.parsers.DocumentBuilderFactory createDocumentBuilderFactory()
throws javax.xml.parsers.ParserConfigurationException
DocumentBuilder that this marshaller will use for creating
DOM documents when passed an empty DOMSource.
The resulting DocumentBuilderFactory is cached, so this method
will only be called once.
javax.xml.parsers.ParserConfigurationException - if thrown by JAXP methodsprotected javax.xml.parsers.DocumentBuilder createDocumentBuilder(javax.xml.parsers.DocumentBuilderFactory factory)
throws javax.xml.parsers.ParserConfigurationException
DocumentBuilder that this marshaller will use for creating
DOM documents when passed an empty DOMSource.
Can be overridden in subclasses, adding further initialization of the builder.
factory - the DocumentBuilderFactory that the DocumentBuilder should be created withDocumentBuilderjavax.xml.parsers.ParserConfigurationException - if thrown by JAXP methodsprotected org.xml.sax.XMLReader createXmlReader()
throws org.xml.sax.SAXException
XMLReader that this marshaller will when passed an empty SAXSource.org.xml.sax.SAXException - if thrown by JAXP methodsprotected java.lang.String getDefaultEncoding()
null if none.
The default implementation returns null.
public final void marshal(java.lang.Object graph,
javax.xml.transform.Result result)
throws java.io.IOException,
XmlMappingException
javax.xml.transform.Result.
This implementation inspects the given result, and calls marshalDomResult,
marshalSaxResult, or marshalStreamResult.
marshal in interface Marshallergraph - the root of the object graph to marshalresult - the result to marshal tojava.io.IOException - if an I/O exception occursXmlMappingException - if the given object cannot be marshalled to the resultjava.lang.IllegalArgumentException - if result if neither a DOMResult,
a SAXResult, nor a StreamResultmarshalDomResult(Object, javax.xml.transform.dom.DOMResult),
marshalSaxResult(Object, javax.xml.transform.sax.SAXResult),
marshalStreamResult(Object, javax.xml.transform.stream.StreamResult)protected void marshalDomResult(java.lang.Object graph,
javax.xml.transform.dom.DOMResult domResult)
throws XmlMappingException
DOMResults.
This implementation delegates to marshalDomNode.
graph - the root of the object graph to marshaldomResult - the DOMResultXmlMappingException - if the given object cannot be marshalled to the resultjava.lang.IllegalArgumentException - if the domResult is emptymarshalDomNode(Object, org.w3c.dom.Node)protected void marshalStaxResult(java.lang.Object graph,
javax.xml.transform.Result staxResult)
throws XmlMappingException
StaxResults.
This implementation delegates to marshalXMLSteamWriter or
marshalXMLEventConsumer, depending on what is contained in the
StaxResult.
graph - the root of the object graph to marshalstaxResult - a JAXP 1.4 StAXSourceXmlMappingException - if the given object cannot be marshalled to the resultjava.lang.IllegalArgumentException - if the domResult is emptymarshalDomNode(Object, org.w3c.dom.Node)protected void marshalSaxResult(java.lang.Object graph,
javax.xml.transform.sax.SAXResult saxResult)
throws XmlMappingException
SAXResults.
This implementation delegates to marshalSaxHandlers.
graph - the root of the object graph to marshalsaxResult - the SAXResultXmlMappingException - if the given object cannot be marshalled to the resultmarshalSaxHandlers(Object, org.xml.sax.ContentHandler, org.xml.sax.ext.LexicalHandler)protected void marshalStreamResult(java.lang.Object graph,
javax.xml.transform.stream.StreamResult streamResult)
throws XmlMappingException,
java.io.IOException
StreamResults.
This implementation delegates to marshalOutputStream or marshalWriter,
depending on what is contained in the StreamResult
graph - the root of the object graph to marshalstreamResult - the StreamResultjava.io.IOException - if an I/O Exception occursXmlMappingException - if the given object cannot be marshalled to the resultjava.lang.IllegalArgumentException - if streamResult does neither
contain an OutputStream nor a Writerpublic final java.lang.Object unmarshal(javax.xml.transform.Source source)
throws java.io.IOException,
XmlMappingException
javax.xml.transform.Source into an object graph.
This implementation inspects the given result, and calls unmarshalDomSource,
unmarshalSaxSource, or unmarshalStreamSource.
unmarshal in interface Unmarshallersource - the source to marshal fromjava.io.IOException - if an I/O Exception occursXmlMappingException - if the given source cannot be mapped to an objectjava.lang.IllegalArgumentException - if source is neither a DOMSource,
a SAXSource, nor a StreamSourceunmarshalDomSource(javax.xml.transform.dom.DOMSource),
unmarshalSaxSource(javax.xml.transform.sax.SAXSource),
unmarshalStreamSource(javax.xml.transform.stream.StreamSource)protected java.lang.Object unmarshalDomSource(javax.xml.transform.dom.DOMSource domSource)
throws XmlMappingException
DOMSources.
This implementation delegates to unmarshalDomNode.
If the given source is empty, an empty source Document
will be created as a placeholder.
domSource - the DOMSourceXmlMappingException - if the given source cannot be mapped to an objectjava.lang.IllegalArgumentException - if the domSource is emptyunmarshalDomNode(org.w3c.dom.Node)protected java.lang.Object unmarshalStaxSource(javax.xml.transform.Source staxSource)
throws XmlMappingException
StaxSources.
This implementation delegates to unmarshalXmlStreamReader or
unmarshalXmlEventReader.
staxSource - the StaxSourceXmlMappingException - if the given source cannot be mapped to an objectprotected java.lang.Object unmarshalSaxSource(javax.xml.transform.sax.SAXSource saxSource)
throws XmlMappingException,
java.io.IOException
SAXSources.
This implementation delegates to unmarshalSaxReader.
saxSource - the SAXSourceXmlMappingException - if the given source cannot be mapped to an objectjava.io.IOException - if an I/O Exception occursunmarshalSaxReader(org.xml.sax.XMLReader, org.xml.sax.InputSource)protected java.lang.Object unmarshalStreamSource(javax.xml.transform.stream.StreamSource streamSource)
throws XmlMappingException,
java.io.IOException
StreamSources.
This implementation delegates to unmarshalInputStream or unmarshalReader.
streamSource - the StreamSourcejava.io.IOException - if an I/O exception occursXmlMappingException - if the given source cannot be mapped to an objectprotected abstract void marshalDomNode(java.lang.Object graph,
org.w3c.dom.Node node)
throws XmlMappingException
Node.
In practice, node is be a Document node, a DocumentFragment node,
or a Element node. In other words, a node that accepts children.
graph - the root of the object graph to marshalnode - the DOM node that will contain the result treeXmlMappingException - if the given object cannot be marshalled to the DOM nodeDocument,
DocumentFragment,
Elementprotected abstract void marshalXmlEventWriter(java.lang.Object graph,
javax.xml.stream.XMLEventWriter eventWriter)
throws XmlMappingException
XMLEventWriter.graph - the root of the object graph to marshaleventWriter - the XMLEventWriter to write toXmlMappingException - if the given object cannot be marshalled to the DOM nodeprotected abstract void marshalXmlStreamWriter(java.lang.Object graph,
javax.xml.stream.XMLStreamWriter streamWriter)
throws XmlMappingException
XMLStreamWriter.graph - the root of the object graph to marshalstreamWriter - the XMLStreamWriter to write toXmlMappingException - if the given object cannot be marshalled to the DOM nodeprotected abstract void marshalSaxHandlers(java.lang.Object graph,
org.xml.sax.ContentHandler contentHandler,
org.xml.sax.ext.LexicalHandler lexicalHandler)
throws XmlMappingException
ContentHandler.graph - the root of the object graph to marshalcontentHandler - the SAX ContentHandlerlexicalHandler - the SAX2 LexicalHandler. Can be null.XmlMappingException - if the given object cannot be marshalled to the handlersprotected abstract void marshalOutputStream(java.lang.Object graph,
java.io.OutputStream outputStream)
throws XmlMappingException,
java.io.IOException
OutputStream.graph - the root of the object graph to marshaloutputStream - the OutputStream to write toXmlMappingException - if the given object cannot be marshalled to the writerjava.io.IOException - if an I/O exception occursprotected abstract void marshalWriter(java.lang.Object graph,
java.io.Writer writer)
throws XmlMappingException,
java.io.IOException
Writer.graph - the root of the object graph to marshalwriter - the Writer to write toXmlMappingException - if the given object cannot be marshalled to the writerjava.io.IOException - if an I/O exception occursprotected abstract java.lang.Object unmarshalDomNode(org.w3c.dom.Node node)
throws XmlMappingException
Node.node - the DOM node that contains the objects to be unmarshalledXmlMappingException - if the given DOM node cannot be mapped to an objectprotected abstract java.lang.Object unmarshalXmlEventReader(javax.xml.stream.XMLEventReader eventReader)
throws XmlMappingException
XMLEventReader.eventReader - the XMLEventReader to read fromXmlMappingException - if the given event reader cannot be converted to an objectprotected abstract java.lang.Object unmarshalXmlStreamReader(javax.xml.stream.XMLStreamReader streamReader)
throws XmlMappingException
XMLStreamReader.streamReader - the XMLStreamReader to read fromXmlMappingException - if the given stream reader cannot be converted to an objectprotected abstract java.lang.Object unmarshalSaxReader(org.xml.sax.XMLReader xmlReader,
org.xml.sax.InputSource inputSource)
throws XmlMappingException,
java.io.IOException
XMLReader
and InputSource.xmlReader - the SAX XMLReader to parse withinputSource - the input source to parse fromXmlMappingException - if the given reader and input source cannot be converted to an objectjava.io.IOException - if an I/O exception occursprotected abstract java.lang.Object unmarshalInputStream(java.io.InputStream inputStream)
throws XmlMappingException,
java.io.IOException
InputStream.inputStream - the InputStreamStream to read fromXmlMappingException - if the given stream cannot be converted to an objectjava.io.IOException - if an I/O exception occursprotected abstract java.lang.Object unmarshalReader(java.io.Reader reader)
throws XmlMappingException,
java.io.IOException
Reader.reader - the Reader to read fromXmlMappingException - if the given reader cannot be converted to an objectjava.io.IOException - if an I/O exception occurs