org.springframework.oxm.jibx
Class JibxMarshaller

java.lang.Object
  extended by org.springframework.oxm.support.AbstractMarshaller
      extended by org.springframework.oxm.jibx.JibxMarshaller
All Implemented Interfaces:
InitializingBean, Marshaller, Unmarshaller

public class JibxMarshaller
extends AbstractMarshaller
implements InitializingBean

Implementation of the Marshaller and Unmarshaller interfaces for JiBX.

The typical usage will be to set the targetClass and optionally the bindingName property on this bean.

Since:
3.0
Author:
Arjen Poutsma
See Also:
IMarshallingContext, IUnmarshallingContext

Field Summary
 
Fields inherited from class org.springframework.oxm.support.AbstractMarshaller
logger
 
Constructor Summary
JibxMarshaller()
           
 
Method Summary
 void afterPropertiesSet()
          Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
 XmlMappingException convertJibxException(org.jibx.runtime.JiBXException ex, boolean marshalling)
          Convert the given JiBXException to an appropriate exception from the org.springframework.oxm hierarchy.
protected  org.jibx.runtime.IMarshallingContext createMarshallingContext()
          Create a new IMarshallingContext, configured with the correct indentation.
protected  org.jibx.runtime.IUnmarshallingContext createUnmarshallingContext()
          Create a new IUnmarshallingContext.
protected  void marshalDomNode(Object graph, Node node)
          Abstract template method for marshalling the given object graph to a DOM Node.
protected  void marshalOutputStream(Object graph, OutputStream outputStream)
          Abstract template method for marshalling the given object graph to a OutputStream.
protected  void marshalSaxHandlers(Object graph, ContentHandler contentHandler, LexicalHandler lexicalHandler)
          Abstract template method for marshalling the given object graph to a SAX ContentHandler.
protected  void marshalWriter(Object graph, Writer writer)
          Abstract template method for marshalling the given object graph to a Writer.
protected  void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter)
          Abstract template method for marshalling the given object to a StAX XMLEventWriter.
protected  void marshalXmlStreamWriter(Object graph, XMLStreamWriter streamWriter)
          Abstract template method for marshalling the given object to a StAX XMLStreamWriter.
 void setBindingName(String bindingName)
          Set the optional binding name for this instance.
 void setDocTypeInternalSubset(String docTypeInternalSubset)
          Sets the internal subset Id for the DTD declaration written when marshalling.
 void setDocTypePublicId(String docTypePublicId)
          Sets the public Id for the DTD declaration written when marshalling.
 void setDocTypeRootElementName(String docTypeRootElementName)
          Sets the root element name for the DTD declaration written when marshalling.
 void setDocTypeSystemId(String docTypeSystemId)
          Sets the system Id for the DTD declaration written when marshalling.
 void setEncoding(String encoding)
          Set the document encoding using for marshalling.
 void setIndent(int indent)
          Set the number of nesting indent spaces.
 void setStandalone(Boolean standalone)
          Set the document standalone flag for marshalling.
 void setTargetClass(Class<?> targetClass)
          Set the target class for this instance.
 boolean supports(Class<?> clazz)
          Indicates whether this marshaller can marshal instances of the supplied type.
protected  Object unmarshalDomNode(Node node)
          Abstract template method for unmarshalling from a given DOM Node.
protected  Object unmarshalInputStream(InputStream inputStream)
          Abstract template method for unmarshalling from a given InputStream.
protected  Object unmarshalReader(Reader reader)
          Abstract template method for unmarshalling from a given Reader.
protected  Object unmarshalSaxReader(XMLReader xmlReader, InputSource inputSource)
          Abstract template method for unmarshalling using a given SAX XMLReader and InputSource.
protected  Object unmarshalXmlEventReader(XMLEventReader eventReader)
          Abstract template method for unmarshalling from a given Stax XMLEventReader.
protected  Object unmarshalXmlStreamReader(XMLStreamReader streamReader)
          Abstract template method for unmarshalling from a given Stax XMLStreamReader.
 
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
 

Constructor Detail

JibxMarshaller

public JibxMarshaller()
Method Detail

setTargetClass

public void setTargetClass(Class<?> targetClass)
Set the target class for this instance. This property is required.


setBindingName

public void setBindingName(String bindingName)
Set the optional binding name for this instance.


setIndent

public void setIndent(int indent)
Set the number of nesting indent spaces. Default is -1, i.e. no indentation.


setEncoding

public void setEncoding(String encoding)
Set the document encoding using for marshalling. Default is UTF-8.


setStandalone

public void setStandalone(Boolean standalone)
Set the document standalone flag for marshalling. By default, this flag is not present.


setDocTypeRootElementName

public void setDocTypeRootElementName(String docTypeRootElementName)
Sets the root element name for the DTD declaration written when marshalling. By default, this is null (i.e. no DTD declaration is written). If set to a value, the system ID or public ID also need to be set.

See Also:
setDocTypeSystemId(String), setDocTypePublicId(String)

setDocTypeSystemId

public void setDocTypeSystemId(String docTypeSystemId)
Sets the system Id for the DTD declaration written when marshalling. By default, this is null. Only used when the root element also has been set. Set either this property or docTypePublicId, not both.

See Also:
setDocTypeRootElementName(String)

setDocTypePublicId

public void setDocTypePublicId(String docTypePublicId)
Sets the public Id for the DTD declaration written when marshalling. By default, this is null. Only used when the root element also has been set. Set either this property or docTypeSystemId, not both.

See Also:
setDocTypeRootElementName(String)

setDocTypeInternalSubset

public void setDocTypeInternalSubset(String docTypeInternalSubset)
Sets the internal subset Id for the DTD declaration written when marshalling. By default, this is null. Only used when the root element also has been set.

See Also:
setDocTypeRootElementName(String)

afterPropertiesSet

public void afterPropertiesSet()
                        throws org.jibx.runtime.JiBXException
Description copied from interface: InitializingBean
Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

Specified by:
afterPropertiesSet in interface InitializingBean
Throws:
org.jibx.runtime.JiBXException

supports

public boolean supports(Class<?> clazz)
Description copied from interface: Marshaller
Indicates whether this marshaller can marshal instances of the supplied type.

Specified by:
supports in interface Marshaller
Specified by:
supports in interface Unmarshaller
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

marshalOutputStream

protected void marshalOutputStream(Object graph,
                                   OutputStream outputStream)
                            throws XmlMappingException,
                                   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
IOException - if an I/O exception occurs

marshalWriter

protected void marshalWriter(Object graph,
                             Writer writer)
                      throws XmlMappingException,
                             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
IOException - if an I/O exception occurs

marshalXmlStreamWriter

protected void marshalXmlStreamWriter(Object graph,
                                      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

marshalDomNode

protected void marshalDomNode(Object graph,
                              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

marshalSaxHandlers

protected void marshalSaxHandlers(Object graph,
                                  ContentHandler contentHandler,
                                  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

marshalXmlEventWriter

protected void marshalXmlEventWriter(Object graph,
                                     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

unmarshalInputStream

protected Object unmarshalInputStream(InputStream inputStream)
                               throws XmlMappingException,
                                      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
IOException - if an I/O exception occurs

unmarshalReader

protected Object unmarshalReader(Reader reader)
                          throws XmlMappingException,
                                 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
IOException - if an I/O exception occurs

unmarshalXmlStreamReader

protected Object unmarshalXmlStreamReader(XMLStreamReader streamReader)
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

unmarshalXmlEventReader

protected Object unmarshalXmlEventReader(XMLEventReader eventReader)
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

unmarshalDomNode

protected Object unmarshalDomNode(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

unmarshalSaxReader

protected Object unmarshalSaxReader(XMLReader xmlReader,
                                    InputSource inputSource)
                             throws XmlMappingException,
                                    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
IOException - if an I/O exception occurs

createMarshallingContext

protected org.jibx.runtime.IMarshallingContext createMarshallingContext()
                                                                 throws org.jibx.runtime.JiBXException
Create a new IMarshallingContext, configured with the correct indentation.

Returns:
the created marshalling context
Throws:
org.jibx.runtime.JiBXException - in case of errors

createUnmarshallingContext

protected org.jibx.runtime.IUnmarshallingContext createUnmarshallingContext()
                                                                     throws org.jibx.runtime.JiBXException
Create a new IUnmarshallingContext.

Returns:
the created unmarshalling context
Throws:
org.jibx.runtime.JiBXException - in case of errors

convertJibxException

public XmlMappingException convertJibxException(org.jibx.runtime.JiBXException ex,
                                                boolean marshalling)
Convert the given JiBXException 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 JiBX itself does not make this distinction in its exception hierarchy.

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