client.net.sf.saxon.ce.xmldom.XMLParserImpl.java Source code

Java tutorial

Introduction

Here is the source code for client.net.sf.saxon.ce.xmldom.XMLParserImpl.java

Source

package client.net.sf.saxon.ce.xmldom;

import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptException;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.xml.client.Document;
import com.google.gwt.xml.client.impl.DOMParseException;

/**
 * Native implementation associated with
 * {@link com.google.gwt.xml.client.XMLParser}.
 */
public abstract class XMLParserImpl {

    /**
     * Is not instantable.
     */
    XMLParserImpl() {
    }

    private static XMLParserImpl impl = new XMLParserImplXMLDoc();

    // GWT implementation uses GWT.create() - deferred binding

    public static XMLParserImpl getInstance() {
        return impl;
    }

    static native JavaScriptObject appendChild(JavaScriptObject jsObject, JavaScriptObject newChildJs) /*-{
                                                                                                       return jsObject.appendChild(newChildJs);
                                                                                                       }-*/;

    static native void appendData(JavaScriptObject jsObject, String arg) /*-{
                                                                         jsObject.appendData(arg);
                                                                         }-*/;

    static native JavaScriptObject cloneNode(JavaScriptObject jsObject, boolean deep) /*-{
                                                                                      return jsObject.cloneNode(deep);
                                                                                      }-*/;

    static native JavaScriptObject createCDATASection(JavaScriptObject jsObject, String data) /*-{
                                                                                              return jsObject.createCDATASection(data);
                                                                                              }-*/;

    static native JavaScriptObject createComment(JavaScriptObject jsObject, String data) /*-{
                                                                                         return jsObject.createComment(data);
                                                                                         }-*/;

    static native JavaScriptObject createDocumentFragment(JavaScriptObject jsObject) /*-{
                                                                                     return jsObject.createDocumentFragment();
                                                                                     }-*/;

    static native JavaScriptObject createElement(JavaScriptObject jsObject, String tagName) /*-{
                                                                                            return jsObject.createElement(tagName);
                                                                                            }-*/;

    static native JavaScriptObject createProcessingInstruction(JavaScriptObject jsObject, String target,
            String data) /*-{
                         return jsObject.createProcessingInstruction(target, data);
                         }-*/;

    static native JavaScriptObject createTextNode(JavaScriptObject jsObject, String data) /*-{
                                                                                          return jsObject.createTextNode(data);
                                                                                          }-*/;

    static native void deleteData(JavaScriptObject jsObject, int offset, int count) /*-{
                                                                                    jsObject.deleteData(offset, count);
                                                                                    }-*/;

    static native String getAttribute(JavaScriptObject o, String name) /*-{
                                                                       return o.getAttribute(name);
                                                                       }-*/;

    static native JavaScriptObject getAttributeNode(JavaScriptObject o, String name) /*-{
                                                                                     return o.getAttributeNode(name);
                                                                                     }-*/;

    static native JavaScriptObject getAttributes(JavaScriptObject t) /*-{
                                                                     return t.attributes;
                                                                     }-*/;

    static native JavaScriptObject getChildNodes(JavaScriptObject t) /*-{
                                                                     return t.childNodes;
                                                                     }-*/;

    static native String getData(JavaScriptObject o) /*-{
                                                     return o.data;
                                                     }-*/;

    static native JavaScriptObject getDocumentElement(JavaScriptObject o) /*-{
                                                                          return o.documentElement;
                                                                          }-*/;

    static JavaScriptObject getElementById(JavaScriptObject document, String id) {
        return impl.getElementByIdImpl(document, id);
    }

    static JavaScriptObject getElementsByTagName(JavaScriptObject o, String tagName) {
        return impl.getElementsByTagNameImpl(o, tagName);
    }

    static native int getLength(JavaScriptObject o) /*-{
                                                    return o.length;
                                                    }-*/;

    static native String getName(JavaScriptObject o) /*-{
                                                     return o.name;
                                                     }-*/;

    static native JavaScriptObject getNamedItem(JavaScriptObject t, String name) /*-{
                                                                                 return t.getNamedItem(name);
                                                                                 }-*/;

    static native String getNamespaceURI(JavaScriptObject jsObject) /*-{
                                                                    return jsObject.namespaceURI;
                                                                    }-*/;

    static native JavaScriptObject getNextSibling(JavaScriptObject o) /*-{
                                                                      return o.nextSibling;
                                                                      }-*/;

    static native String getNodeName(JavaScriptObject o) /*-{
                                                         return o.nodeName;
                                                         }-*/;

    static native short getNodeType(JavaScriptObject jsObject) /*-{
                                                               var out = jsObject.nodeType;
                                                               return (out == null) ? -1 : out;
                                                               }-*/;

    static native String getNodeValue(JavaScriptObject o) /*-{
                                                          return o.nodeValue;
                                                          }-*/;

    static native JavaScriptObject getOwnerDocument(JavaScriptObject o) /*-{
                                                                        return o.ownerDocument;
                                                                        }-*/;

    static native JavaScriptObject getParentNode(JavaScriptObject o) /*-{
                                                                     return o.parentNode;
                                                                     }-*/;

    static String getPrefix(JavaScriptObject jsObject) {
        return impl.getPrefixImpl(jsObject);
    }

    static native JavaScriptObject getPreviousSibling(JavaScriptObject o) /*-{
                                                                          return o.previousSibling;
                                                                          }-*/;

    static native boolean getSpecified(JavaScriptObject o) /*-{
                                                           return o.specified;
                                                           }-*/;

    static native String getTagName(JavaScriptObject o) /*-{
                                                        return o.tagName;
                                                        }-*/;

    static native String getTarget(JavaScriptObject o) /*-{
                                                       return o.target;
                                                       }-*/;

    static native String getValue(JavaScriptObject o) /*-{
                                                      return o.value;
                                                      }-*/;

    static native boolean hasAttributes(JavaScriptObject jsObject) /*-{
                                                                   return jsObject.attributes.length != 0;
                                                                   }-*/;

    static native boolean hasChildNodes(JavaScriptObject jsObject) /*-{
                                                                   return jsObject.hasChildNodes();
                                                                   }-*/;

    static JavaScriptObject importNode(JavaScriptObject jsObject, JavaScriptObject importedNode, boolean deep) {
        return impl.importNodeImpl(jsObject, importedNode, deep);
    }

    static native JavaScriptObject insertBefore(JavaScriptObject jsObject, JavaScriptObject newChildJs,
            JavaScriptObject refChildJs) /*-{
                                         return jsObject.insertBefore(newChildJs, refChildJs);
                                         }-*/;

    static native void insertData(JavaScriptObject jsObject, int offset, String arg) /*-{
                                                                                     jsObject.insertData(offset, arg);
                                                                                     }-*/;

    static native JavaScriptObject item(JavaScriptObject t, int index) /*-{
                                                                       if (index >= t.length) {
                                                                       return null;
                                                                       }
                                                                       return t.item(index);   
                                                                       }-*/;

    static native void normalize(JavaScriptObject jsObject) /*-{
                                                            jsObject.normalize();
                                                            }-*/;

    static native void removeAttribute(JavaScriptObject jsObject, String name) /*-{
                                                                               jsObject.removeAttribute(name);
                                                                               }-*/;

    static native JavaScriptObject removeChild(JavaScriptObject jsObject, JavaScriptObject oldChildJs) /*-{
                                                                                                       return jsObject.removeChild(oldChildJs);
                                                                                                       }-*/;

    static native JavaScriptObject removeNamedItem(JavaScriptObject jsObject, String name) /*-{
                                                                                           return jsObject.removeNamedItem(name);
                                                                                           }-*/;

    static native JavaScriptObject replaceChild(JavaScriptObject jsObject, JavaScriptObject newChildJs,
            JavaScriptObject oldChildJs) /*-{
                                         return jsObject.replaceChild(newChildJs, oldChildJs);
                                         }-*/;

    static native void replaceData(JavaScriptObject jsObject, int offset, int count, String arg) /*-{
                                                                                                 jsObject.replaceData(offset, count, arg);
                                                                                                 }-*/;

    static native void setAttribute(JavaScriptObject jsObject, String name, String value) /*-{
                                                                                          jsObject.setAttribute(name, value);
                                                                                          }-*/;

    static native void setData(JavaScriptObject jsObject, String data) /*-{
                                                                       jsObject.data = data;
                                                                       }-*/;

    static native JavaScriptObject setNamedItem(JavaScriptObject jsObject, JavaScriptObject arg) /*-{
                                                                                                 return jsObject.setNamedItem(arg);
                                                                                                 }-*/;

    static native void setNodeValue(JavaScriptObject jsObject, String nodeValue) /*-{
                                                                                 jsObject.nodeValue = nodeValue;
                                                                                 }-*/;

    static native JavaScriptObject splitText(JavaScriptObject jsObject, int offset) /*-{
                                                                                    return jsObject.splitText(offset);
                                                                                    }-*/;

    static native String substringData(JavaScriptObject o, int offset, int count) /*-{
                                                                                  return o.substringData(offset, count);
                                                                                  }-*/;

    public final Document createDocument() {
        return (Document) NodeXml.build(createDocumentImpl());
    }

    public final Document parse(String contents) {
        try {
            return (Document) NodeXml.build(parseImpl(contents));
        } catch (JavaScriptException e) {
            throw new DOMParseException(contents, e);
        }
    }

    public final Document wrapJsDocument(JavaScriptObject jso) {
        try {
            return (Document) NodeXml.build(jso);
        } catch (JavaScriptException e) {
            throw new DOMParseException(DOMNodeExceptionXml.summarize(jso.toString()), e);
        }
    }

    public boolean supportsCDATASection() {
        return true;
    }

    protected abstract JavaScriptObject createDocumentImpl();

    protected abstract JavaScriptObject getElementByIdImpl(JavaScriptObject document, String id);

    protected abstract JavaScriptObject getElementsByTagNameImpl(JavaScriptObject o, String tagName);

    protected abstract String getPrefixImpl(JavaScriptObject jsObject);

    protected abstract JavaScriptObject importNodeImpl(JavaScriptObject jsObject, JavaScriptObject importedNode,
            boolean deep);

    protected abstract JavaScriptObject parseImpl(String contents);

    abstract String toStringImpl(ProcessingInstructionImpl node);

    abstract String toStringImpl(NodeXml node);
}

// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. 
// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// This Source Code Form is Incompatible With Secondary Licenses?, as defined by the Mozilla Public License, v. 2.0.