src.javax.xml.bind.annotation.W3CDomHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ehcache Show documentation
Show all versions of ehcache Show documentation
Ehcache is an open source, standards-based cache used to boost performance,
offload the database and simplify scalability. Ehcache is robust, proven and full-featured and
this has made it the most widely-used Java-based cache.
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package javax.xml.bind.annotation;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import javax.xml.bind.ValidationEventHandler;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
/**
* {@link DomHandler} implementation for W3C DOM (org.w3c.dom
package.)
*
* @author Kohsuke Kawaguchi
* @since JAXB2.0
*/
public class W3CDomHandler implements DomHandler {
private DocumentBuilder builder;
/**
* Default constructor.
*
* It is up to a JAXB provider to decide which DOM implementation
* to use or how that is configured.
*/
public W3CDomHandler() {
this.builder = null;
}
/**
* Constructor that allows applications to specify which DOM implementation
* to be used.
*
* @param builder
* must not be null. JAXB uses this {@link DocumentBuilder} to create
* a new element.
*/
public W3CDomHandler(DocumentBuilder builder) {
if(builder==null)
throw new IllegalArgumentException();
this.builder = builder;
}
public DocumentBuilder getBuilder() {
return builder;
}
public void setBuilder(DocumentBuilder builder) {
this.builder = builder;
}
public DOMResult createUnmarshaller(ValidationEventHandler errorHandler) {
if(builder==null)
return new DOMResult();
else
return new DOMResult(builder.newDocument());
}
public Element getElement(DOMResult r) {
// JAXP spec is ambiguous about what really happens in this case,
// so work defensively
Node n = r.getNode();
if( n instanceof Document ) {
return ((Document)n).getDocumentElement();
}
if( n instanceof Element )
return (Element)n;
if( n instanceof DocumentFragment )
return (Element)n.getChildNodes().item(0);
// if the result object contains something strange,
// it is not a user problem, but it is a JAXB provider's problem.
// That's why we throw a runtime exception.
throw new IllegalStateException(n.toString());
}
public Source marshal(Element element, ValidationEventHandler errorHandler) {
return new DOMSource(element);
}
}