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

JAXBResult

public class JAXBResult extends SAXResult
JAXP {@link javax.xml.transform.Result} implementation that unmarshals a JAXB object.

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

The following example shows how to use JAXB to unmarshal a document resulting from an XSLT transformation.

JAXBResult result = new JAXBResult(
JAXBContext.newInstance("org.acme.foo") );

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

// run transformation
t.transform(new StreamSource("document.xml"),result);

// obtain the unmarshalled content tree
Object o = result.getResult();

The fact that JAXBResult derives from SAXResult is an implementation detail. Thus in general applications are strongly discouraged from accessing methods defined on SAXResult.

In particular it shall never attempt to call the setHandler, setLexicalHandler, and setSystemId methods.

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

Fields Summary
private final UnmarshallerHandler
unmarshallerHandler
Unmarshaller that will be used to unmarshal the input documents.
Constructors Summary
public JAXBResult(JAXBContext context)
Creates a new instance that uses the specified JAXBContext to unmarshal.

param
context The JAXBContext that will be used to create the necessary Unmarshaller. This parameter must not be null.
exception
JAXBException if an error is encountered while creating the JAXBResult or if the context parameter is null.

        this( ( context == null ) ? assertionFailed() : context.createUnmarshaller() );
    
public JAXBResult(Unmarshaller _unmarshaller)
Creates a new instance that uses the specified Unmarshaller to unmarshal an object.

This JAXBResult object will use the specified Unmarshaller instance. It is the caller's responsibility not to use the same Unmarshaller for other purposes while it is being used by this object.

The primary purpose of this method is to allow the client to configure Unmarshaller. Unless you know what you are doing, it's easier and safer to pass a JAXBContext.

param
_unmarshaller the unmarshaller. This parameter must not be null.
throws
JAXBException if an error is encountered while creating the JAXBResult or the Unmarshaller parameter is null.

        if( _unmarshaller == null )
            throw new JAXBException( 
                Messages.format( Messages.RESULT_NULL_UNMARSHALLER ) );
            
        this.unmarshallerHandler = _unmarshaller.getUnmarshallerHandler();
        
        super.setHandler(unmarshallerHandler);
    
Methods Summary
private static javax.xml.bind.UnmarshallerassertionFailed()
Hook to throw exception from the middle of a contructor chained call to this

        throw new JAXBException( Messages.format( Messages.RESULT_NULL_CONTEXT ) );
    
public java.lang.ObjectgetResult()
Gets the unmarshalled object created by the transformation.

return
Always return a non-null object.
exception
IllegalStateException if this method is called before an object is unmarshalled.
exception
JAXBException if there is any unmarshalling error. Note that the implementation is allowed to throw SAXException during the parsing when it finds an error.

        return unmarshallerHandler.getResult();