org.springframework.oxm.xmlbeans
Class XmlBeansMarshaller

java.lang.Object
  extended by org.springframework.oxm.support.AbstractMarshaller
      extended by org.springframework.oxm.xmlbeans.XmlBeansMarshaller
All Implemented Interfaces:
Marshaller, Unmarshaller

public class XmlBeansMarshaller
extends AbstractMarshaller

Implementation of the Marshaller interface for Apache XMLBeans.

Options can be set by setting the xmlOptions property. The XmlOptionsFactoryBean is provided to easily set up an XmlOptions instance.

Unmarshalled objects can be validated by setting the validating property, or by calling the validate(XmlObject) method directly. Invalid objects will result in an ValidationFailureException.

NOTE: Due to the nature of XMLBeans, this marshaller requires all passed objects to be of type XmlObject.

Since:
3.0
Author:
Arjen Poutsma
See Also:
setValidating(boolean), setXmlOptions(XmlOptions), XmlOptionsFactoryBean

Nested Class Summary
private static class XmlBeansMarshaller.NonClosingInputStream
          See SPR-7034
private static class XmlBeansMarshaller.NonClosingReader
           
 
Field Summary
private  boolean validating
           
private  XmlOptions xmlOptions
           
 
Fields inherited from class org.springframework.oxm.support.AbstractMarshaller
logger
 
Constructor Summary
XmlBeansMarshaller()
           
 
Method Summary
protected  XmlMappingException convertXmlBeansException(java.lang.Exception ex, boolean marshalling)
          Convert the given XMLBeans exception to an appropriate exception from the org.springframework.oxm hierarchy.
 XmlOptions getXmlOptions()
          Return the XmlOptions.
 boolean isValidating()
          Return whether this marshaller should validate in- and outgoing documents.
protected  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 marshalOutputStream(java.lang.Object graph, java.io.OutputStream outputStream)
          Abstract template method for marshalling the given object graph to a OutputStream.
protected  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 marshalWriter(java.lang.Object graph, java.io.Writer writer)
          Abstract template method for marshalling the given object graph to a Writer.
protected  void marshalXmlEventWriter(java.lang.Object graph, javax.xml.stream.XMLEventWriter eventWriter)
          Abstract template method for marshalling the given object to a StAX XMLEventWriter.
protected  void marshalXmlStreamWriter(java.lang.Object graph, javax.xml.stream.XMLStreamWriter streamWriter)
          Abstract template method for marshalling the given object to a StAX XMLStreamWriter.
 void setValidating(boolean validating)
          Set whether this marshaller should validate in- and outgoing documents.
 void setXmlOptions(XmlOptions xmlOptions)
          Set the XmlOptions.
 boolean supports(java.lang.Class<?> clazz)
          This implementation returns true if the given class is an implementation of XmlObject.
protected  java.lang.Object unmarshalDomNode(org.w3c.dom.Node node)
          Abstract template method for unmarshalling from a given DOM Node.
protected  java.lang.Object unmarshalInputStream(java.io.InputStream inputStream)
          Abstract template method for unmarshalling from a given InputStream.
protected  java.lang.Object unmarshalReader(java.io.Reader reader)
          Abstract template method for unmarshalling from a given Reader.
protected  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 unmarshalXmlEventReader(javax.xml.stream.XMLEventReader eventReader)
          Abstract template method for unmarshalling from a given Stax XMLEventReader.
protected  java.lang.Object unmarshalXmlStreamReader(javax.xml.stream.XMLStreamReader streamReader)
          Abstract template method for unmarshalling from a given Stax XMLStreamReader.
protected  void validate(XmlObject object)
          Validate the given XmlObject.
 
Methods inherited from class org.springframework.oxm.support.AbstractMarshaller
createDocumentBuilder, createDocumentBuilderFactory, createXmlReader, marshal, marshalDomResult, marshalSaxResult, marshalStaxResult, marshalStreamResult, unmarshal, unmarshalDomSource, unmarshalSaxSource, unmarshalStaxSource, unmarshalStreamSource
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

xmlOptions

private XmlOptions xmlOptions

validating

private boolean validating
Constructor Detail

XmlBeansMarshaller

public XmlBeansMarshaller()
Method Detail

setXmlOptions

public void setXmlOptions(XmlOptions xmlOptions)
Set the XmlOptions.

See Also:
XmlOptionsFactoryBean

getXmlOptions

public XmlOptions getXmlOptions()
Return the XmlOptions.


setValidating

public void setValidating(boolean validating)
Set whether this marshaller should validate in- and outgoing documents. Default is false.


isValidating

public boolean isValidating()
Return whether this marshaller should validate in- and outgoing documents.


supports

public boolean supports(java.lang.Class<?> clazz)
This implementation returns true if the given class is an implementation of XmlObject.

Parameters:
clazz - the class that this marshaller is being asked if it can marshal
Returns:
true if this marshaller can indeed marshal instances of the supplied class; false otherwise

marshalDomNode

protected final void marshalDomNode(java.lang.Object graph,
                                    org.w3c.dom.Node node)
                             throws XmlMappingException
Description copied from class: AbstractMarshaller
Abstract template method for marshalling the given object graph to a DOM Node.

In practice, node is be a Document node, a DocumentFragment node, or a Element node. In other words, a node that accepts children.

Specified by:
marshalDomNode in class AbstractMarshaller
Parameters:
graph - the root of the object graph to marshal
node - the DOM node that will contain the result tree
Throws:
XmlMappingException - if the given object cannot be marshalled to the DOM node
See Also:
Document, DocumentFragment, Element

marshalOutputStream

protected final void marshalOutputStream(java.lang.Object graph,
                                         java.io.OutputStream outputStream)
                                  throws XmlMappingException,
                                         java.io.IOException
Description copied from class: AbstractMarshaller
Abstract template method for marshalling the given object graph to a OutputStream.

Specified by:
marshalOutputStream in class AbstractMarshaller
Parameters:
graph - the root of the object graph to marshal
outputStream - the OutputStream to write to
Throws:
XmlMappingException - if the given object cannot be marshalled to the writer
java.io.IOException - if an I/O exception occurs

marshalSaxHandlers

protected final void marshalSaxHandlers(java.lang.Object graph,
                                        org.xml.sax.ContentHandler contentHandler,
                                        org.xml.sax.ext.LexicalHandler lexicalHandler)
                                 throws XmlMappingException
Description copied from class: AbstractMarshaller
Abstract template method for marshalling the given object graph to a SAX ContentHandler.

Specified by:
marshalSaxHandlers in class AbstractMarshaller
Parameters:
graph - the root of the object graph to marshal
contentHandler - the SAX ContentHandler
lexicalHandler - the SAX2 LexicalHandler. Can be null.
Throws:
XmlMappingException - if the given object cannot be marshalled to the handlers

marshalWriter

protected final void marshalWriter(java.lang.Object graph,
                                   java.io.Writer writer)
                            throws XmlMappingException,
                                   java.io.IOException
Description copied from class: AbstractMarshaller
Abstract template method for marshalling the given object graph to a Writer.

Specified by:
marshalWriter in class AbstractMarshaller
Parameters:
graph - the root of the object graph to marshal
writer - the Writer to write to
Throws:
XmlMappingException - if the given object cannot be marshalled to the writer
java.io.IOException - if an I/O exception occurs

marshalXmlEventWriter

protected final void marshalXmlEventWriter(java.lang.Object graph,
                                           javax.xml.stream.XMLEventWriter eventWriter)
Description copied from class: AbstractMarshaller
Abstract template method for marshalling the given object to a StAX XMLEventWriter.

Specified by:
marshalXmlEventWriter in class AbstractMarshaller
Parameters:
graph - the root of the object graph to marshal
eventWriter - the XMLEventWriter to write to

marshalXmlStreamWriter

protected final void marshalXmlStreamWriter(java.lang.Object graph,
                                            javax.xml.stream.XMLStreamWriter streamWriter)
                                     throws XmlMappingException
Description copied from class: AbstractMarshaller
Abstract template method for marshalling the given object to a StAX XMLStreamWriter.

Specified by:
marshalXmlStreamWriter in class AbstractMarshaller
Parameters:
graph - the root of the object graph to marshal
streamWriter - the XMLStreamWriter to write to
Throws:
XmlMappingException - if the given object cannot be marshalled to the DOM node

unmarshalDomNode

protected final java.lang.Object unmarshalDomNode(org.w3c.dom.Node node)
                                           throws XmlMappingException
Description copied from class: AbstractMarshaller
Abstract template method for unmarshalling from a given DOM Node.

Specified by:
unmarshalDomNode in class AbstractMarshaller
Parameters:
node - the DOM node that contains the objects to be unmarshalled
Returns:
the object graph
Throws:
XmlMappingException - if the given DOM node cannot be mapped to an object

unmarshalInputStream

protected final java.lang.Object unmarshalInputStream(java.io.InputStream inputStream)
                                               throws XmlMappingException,
                                                      java.io.IOException
Description copied from class: AbstractMarshaller
Abstract template method for unmarshalling from a given InputStream.

Specified by:
unmarshalInputStream in class AbstractMarshaller
Parameters:
inputStream - the InputStreamStream to read from
Returns:
the object graph
Throws:
XmlMappingException - if the given stream cannot be converted to an object
java.io.IOException - if an I/O exception occurs

unmarshalReader

protected final java.lang.Object unmarshalReader(java.io.Reader reader)
                                          throws XmlMappingException,
                                                 java.io.IOException
Description copied from class: AbstractMarshaller
Abstract template method for unmarshalling from a given Reader.

Specified by:
unmarshalReader in class AbstractMarshaller
Parameters:
reader - the Reader to read from
Returns:
the object graph
Throws:
XmlMappingException - if the given reader cannot be converted to an object
java.io.IOException - if an I/O exception occurs

unmarshalSaxReader

protected final java.lang.Object unmarshalSaxReader(org.xml.sax.XMLReader xmlReader,
                                                    org.xml.sax.InputSource inputSource)
                                             throws XmlMappingException,
                                                    java.io.IOException
Description copied from class: AbstractMarshaller
Abstract template method for unmarshalling using a given SAX XMLReader and InputSource.

Specified by:
unmarshalSaxReader in class AbstractMarshaller
Parameters:
xmlReader - the SAX XMLReader to parse with
inputSource - the input source to parse from
Returns:
the object graph
Throws:
XmlMappingException - if the given reader and input source cannot be converted to an object
java.io.IOException - if an I/O exception occurs

unmarshalXmlEventReader

protected final java.lang.Object unmarshalXmlEventReader(javax.xml.stream.XMLEventReader eventReader)
                                                  throws XmlMappingException
Description copied from class: AbstractMarshaller
Abstract template method for unmarshalling from a given Stax XMLEventReader.

Specified by:
unmarshalXmlEventReader in class AbstractMarshaller
Parameters:
eventReader - the XMLEventReader to read from
Returns:
the object graph
Throws:
XmlMappingException - if the given event reader cannot be converted to an object

unmarshalXmlStreamReader

protected final java.lang.Object unmarshalXmlStreamReader(javax.xml.stream.XMLStreamReader streamReader)
                                                   throws XmlMappingException
Description copied from class: AbstractMarshaller
Abstract template method for unmarshalling from a given Stax XMLStreamReader.

Specified by:
unmarshalXmlStreamReader in class AbstractMarshaller
Parameters:
streamReader - the XMLStreamReader to read from
Returns:
the object graph
Throws:
XmlMappingException - if the given stream reader cannot be converted to an object

validate

protected void validate(XmlObject object)
                 throws ValidationFailureException
Validate the given XmlObject.

Parameters:
object - the xml object to validate
Throws:
ValidationFailureException - if the given object is not valid

convertXmlBeansException

protected XmlMappingException convertXmlBeansException(java.lang.Exception ex,
                                                       boolean marshalling)
Convert the given XMLBeans exception to an appropriate exception from the org.springframework.oxm hierarchy.

A boolean flag is used to indicate whether this exception occurs during marshalling or unmarshalling, since XMLBeans itself does not make this distinction in its exception hierarchy.

Parameters:
ex - XMLBeans Exception that occured
marshalling - indicates whether the exception occurs during marshalling (true), or unmarshalling (false)
Returns:
the corresponding XmlMappingException