public class

TraxSource

extends SAXSource
java.lang.Object
   ↳ javax.xml.transform.sax.SAXSource
     ↳ com.thoughtworks.xstream.io.xml.TraxSource

Class Overview

A SAXSource JAXP TrAX Source that enables using XStream object serialization as direct input for XSLT processors without resorting to an intermediate representation such as text XML, DOM or DOM4J.

The following example shows how to apply an XSL Transformation to a set of Java objects gathered into a List (source):


 public static String transform(List source, String stylesheet) {
     try {
         Transformer transformer = TransformerFactory.newInstance().newTransformer(
             new StreamSource(stylesheet));
         TraxSource in = new TraxSource(source);
         Writer out = new StringWriter();
         transformer.transform(in, new StreamResult(out));
         return out.toString();
     } catch (TransformerException e) {
         throw new RuntimeException("XSLT Transformation failed", e);
     }
 }
 

Summary

Constants
String XSTREAM_FEATURE If getFeature(String) returns true when passed this value as an argument, the Transformer natively supports XStream.
[Expand]
Inherited Constants
From class javax.xml.transform.sax.SAXSource
Public Constructors
TraxSource()
Creates a XStream TrAX source.
TraxSource(Object source)
Creates a XStream TrAX source, specifying the object to marshal.
TraxSource(Object source, XStream xstream)
Creates a XStream TrAX source, specifying the object to marshal and a configured (with aliases) XStream facade.
TraxSource(List source)
Creates a XStream TrAX source, setting the objects to marshal.
TraxSource(List source, XStream xstream)
Creates a XStream TrAX source, setting the objects to marshal and a configured (with aliases) XStream facade.
Public Methods
XMLReader getXMLReader()
Returns the XMLReader to be used for the Source.
void setInputSource(InputSource inputSource)
Sets the SAX InputSource to be used for the Source.
void setSource(Object obj)
Sets the object to marshal.
void setSourceAsList(List list)
Sets the list of objects to marshal.
void setXMLReader(XMLReader reader)
Set the XMLReader to be used for the Source.
void setXStream(XStream xstream)
Sets the XStream facade to use when marshalling objects.
[Expand]
Inherited Methods
From class javax.xml.transform.sax.SAXSource
From class java.lang.Object
From interface javax.xml.transform.Source

Constants

public static final String XSTREAM_FEATURE

If getFeature(String) returns true when passed this value as an argument, the Transformer natively supports XStream.

Note: This implementation does not override the FEATURE value defined by its superclass to be considered as a SAXSource by Transformer implementations not natively supporting this XStream-specific source

Constant Value: "http://com.thoughtworks.xstream/XStreamSource/feature"

Public Constructors

public TraxSource ()

Creates a XStream TrAX source.

public TraxSource (Object source)

Creates a XStream TrAX source, specifying the object to marshal.

Parameters
source the object to marshal.
Throws
IllegalArgumentException if source is null.

public TraxSource (Object source, XStream xstream)

Creates a XStream TrAX source, specifying the object to marshal and a configured (with aliases) XStream facade.

Parameters
source the object to marshal.
xstream a configured XStream facade.
Throws
IllegalArgumentException if source or xstream is null.

public TraxSource (List source)

Creates a XStream TrAX source, setting the objects to marshal.

Parameters
source the list of objects to marshal.
Throws
IllegalArgumentException if source is null or empty.

public TraxSource (List source, XStream xstream)

Creates a XStream TrAX source, setting the objects to marshal and a configured (with aliases) XStream facade.

Parameters
source the list of objects to marshal.
xstream a configured XStream facade.
Throws
IllegalArgumentException if source or xstream is null or source is empty.

Public Methods

public XMLReader getXMLReader ()

Returns the XMLReader to be used for the Source.

This implementation returns a specific XMLReader (SaxWriter) generating the XML from a list of input objects.

Returns
  • an XMLReader generating the XML from a list of input objects.

public void setInputSource (InputSource inputSource)

Sets the SAX InputSource to be used for the Source.

As this implementation only supports object lists as data source, this method always throws an UnsupportedOperationException.

Parameters
inputSource a valid InputSource reference.

public void setSource (Object obj)

Sets the object to marshal.

Parameters
obj the object to marshal.
Throws
IllegalArgumentException if source is null.

public void setSourceAsList (List list)

Sets the list of objects to marshal.

When dealing with non-text input (such as SAX or DOM), XSLT processors support multiple root node children for the source tree (see section 3.1 of the "XSL Transformations (XSLT) Version 1.0" specification. Using a list of objects as source makes use of this feature and allows creating XML documents merging the XML serialization of several Java objects.

Parameters
list the list of objects to marshal.
Throws
IllegalArgumentException if source is null or empty.

public void setXMLReader (XMLReader reader)

Set the XMLReader to be used for the Source.

As this implementation only supports object lists as data source, this method throws an UnsupportedOperationException if the provided reader object does not implement the SAX XMLFilter interface. Otherwise, a SaxWriter instance will be attached as parent of the filter chain.

Parameters
reader a valid XMLReader or XMLFilter reference.
Throws
UnsupportedOperationException if reader is not a SAX XMLFilter.
See Also

public void setXStream (XStream xstream)

Sets the XStream facade to use when marshalling objects.

Parameters
xstream a configured XStream facade.
Throws
IllegalArgumentException if xstream is null.