FileDocCategorySizeDatePackage
JAXBSource.javaAPI DocJava SE 6 API9245Tue Jun 10 00:27:06 BST 2008javax.xml.bind.util

JAXBSource

public class JAXBSource extends SAXSource
JAXP {@link javax.xml.transform.Source} implementation that marshals a JAXB-generated object.

This utility class is useful to combine JAXB with other Java/XML technologies.

The following example shows how to use JAXB to marshal a document for transformation by XSLT.

MyObject o = // get JAXB content tree

// jaxbContext is a JAXBContext object from which 'o' is created.
JAXBSource source = new JAXBSource( jaxbContext, o );

// set up XSLT transformation
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer(new StreamSource("test.xsl"));

// run transformation
t.transform(source,new StreamResult(System.out));

The fact that JAXBSource derives from SAXSource is an implementation detail. Thus in general applications are strongly discouraged from accessing methods defined on SAXSource. In particular, the setXMLReader and setInputSource methods shall never be called. The XMLReader object obtained by the getXMLReader method shall be used only for parsing the InputSource object returned by the getInputSource method.

Similarly the InputSource object obtained by the getInputSource method shall be used only for being parsed by the XMLReader object returned by the getXMLReader.

author
Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)

Fields Summary
private final Marshaller
marshaller
private final Object
contentObject
private final XMLReader
pseudoParser
Constructors Summary
public JAXBSource(JAXBContext context, Object contentObject)
Creates a new {@link javax.xml.transform.Source} for the given content object.

param
context JAXBContext that was used to create contentObject. This context is used to create a new instance of marshaller and must not be null.
param
contentObject An instance of a JAXB-generated class, which will be used as a {@link javax.xml.transform.Source} (by marshalling it into XML). It must not be null.
throws
JAXBException if an error is encountered while creating the JAXBSource or if either of the parameters are null.

            
        this( 
            ( context == null ) ? 
                assertionFailed( Messages.format( Messages.SOURCE_NULL_CONTEXT ) ) : 
                context.createMarshaller(),
                
            ( contentObject == null ) ? 
                assertionFailed( Messages.format( Messages.SOURCE_NULL_CONTENT ) ) : 
                contentObject);
    
public JAXBSource(Marshaller marshaller, Object contentObject)
Creates a new {@link javax.xml.transform.Source} for the given content object.

param
marshaller A marshaller instance that will be used to marshal contentObject into XML. This must be created from a JAXBContext that was used to build contentObject and must not be null.
param
contentObject An instance of a JAXB-generated class, which will be used as a {@link javax.xml.transform.Source} (by marshalling it into XML). It must not be null.
throws
JAXBException if an error is encountered while creating the JAXBSource or if either of the parameters are null.

            
        if( marshaller == null )
            throw new JAXBException( 
                Messages.format( Messages.SOURCE_NULL_MARSHALLER ) );
                
        if( contentObject == null )
            throw new JAXBException( 
                Messages.format( Messages.SOURCE_NULL_CONTENT ) );
            
        this.marshaller = marshaller;
        this.contentObject = contentObject;
        
        super.setXMLReader(pseudoParser);
        // pass a dummy InputSource. We don't care
        super.setInputSource(new InputSource());
    
Methods Summary
private static javax.xml.bind.MarshallerassertionFailed(java.lang.String message)
Hook to throw exception from the middle of a contructor chained call to this


                       
           
          
            
        throw new JAXBException( message );