| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.harmony.xml.dom; |
| |
| import org.w3c.dom.DOMException; |
| import org.w3c.dom.Document; |
| import org.w3c.dom.NamedNodeMap; |
| import org.w3c.dom.Node; |
| import org.w3c.dom.NodeList; |
| import org.w3c.dom.UserDataHandler; |
| |
| /** |
| * Provides a straightforward implementation of the corresponding W3C DOM |
| * interface. The class is used internally only, thus only notable members that |
| * are not in the original interface are documented (the W3C docs are quite |
| * extensive). Hope that's ok. |
| * <p> |
| * Some of the fields may have package visibility, so other classes belonging to |
| * the DOM implementation can easily access them while maintaining the DOM tree |
| * structure. |
| * <p> |
| * This class represents a Node that has neither a parent nor children. |
| */ |
| public abstract class NodeImpl implements Node { |
| |
| private static final NodeList EMPTY_LIST = new NodeListImpl(); |
| |
| // Maintained by InnerNodeImpl and ElementImpl. |
| DocumentImpl document; |
| |
| NodeImpl(DocumentImpl document) { |
| this.document = document; |
| } |
| |
| public Node appendChild(Node newChild) throws DOMException { |
| throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, null); |
| } |
| |
| public Node cloneNode(boolean deep) { |
| return document.cloneNode(this, deep); |
| } |
| |
| public NamedNodeMap getAttributes() { |
| return null; |
| } |
| |
| public NodeList getChildNodes() { |
| return EMPTY_LIST; |
| } |
| |
| public Node getFirstChild() { |
| return null; |
| } |
| |
| public Node getLastChild() { |
| return null; |
| } |
| |
| public String getLocalName() { |
| return null; |
| } |
| |
| public String getNamespaceURI() { |
| return null; |
| } |
| |
| public Node getNextSibling() { |
| return null; |
| } |
| |
| public String getNodeName() { |
| return null; |
| } |
| |
| public abstract short getNodeType(); |
| |
| public String getNodeValue() throws DOMException { |
| return null; |
| } |
| |
| public Document getOwnerDocument() { |
| return document; |
| } |
| |
| public Node getParentNode() { |
| return null; |
| } |
| |
| public String getPrefix() { |
| return null; |
| } |
| |
| public Node getPreviousSibling() { |
| return null; |
| } |
| |
| public boolean hasAttributes() { |
| return false; |
| } |
| |
| public boolean hasChildNodes() { |
| return false; |
| } |
| |
| public Node insertBefore(Node newChild, Node refChild) throws DOMException { |
| throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, null); |
| } |
| |
| public boolean isSupported(String feature, String version) { |
| return DOMImplementationImpl.getInstance().hasFeature(feature, version); |
| } |
| |
| public void normalize() { |
| } |
| |
| public Node removeChild(Node oldChild) throws DOMException { |
| throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, null); |
| } |
| |
| public Node replaceChild(Node newChild, Node oldChild) throws DOMException { |
| throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, null); |
| } |
| |
| public void setNodeValue(String nodeValue) throws DOMException { |
| } |
| |
| public void setPrefix(String prefix) throws DOMException { |
| } |
| |
| /** |
| * Checks whether a required string matches an actual string. This utility |
| * method is used for comparing namespaces and such. It takes into account |
| * null arguments and the "*" special case. |
| * |
| * @param required The required string. |
| * @param actual The actual string. |
| * @return True if and only if the actual string matches the required one. |
| */ |
| private static boolean matchesName(String required, String actual, boolean wildcard) { |
| if (wildcard && "*".equals(required)) { |
| return true; |
| } |
| |
| if (required == null) { |
| return (actual == null); |
| } |
| |
| return required.equals(actual); |
| } |
| |
| /** |
| * Checks whether this node's name matches a required name. It takes into |
| * account null arguments and the "*" special case. |
| * |
| * @param name The required name. |
| * @param wildcard TODO |
| * @return True if and only if the actual name matches the required one. |
| */ |
| public boolean matchesName(String name, boolean wildcard) { |
| return matchesName(name, getNodeName(), wildcard); |
| } |
| |
| /** |
| * Checks whether this node's namespace and local name match a required |
| * pair of namespace and local name. It takes into account null arguments |
| * and the "*" special case. |
| * |
| * @param namespaceURI The required namespace. |
| * @param localName The required local name. |
| * @param wildcard TODO |
| * @return True if and only if the actual namespace and local name match |
| * the required pair of namespace and local name. |
| */ |
| public boolean matchesNameNS(String namespaceURI, String localName, boolean wildcard) { |
| return matchesName(namespaceURI, getNamespaceURI(), wildcard) && matchesName(localName, getLocalName(), wildcard); |
| } |
| |
| public String getBaseURI() { |
| return null; // TODO |
| } |
| |
| public short compareDocumentPosition(Node other) |
| throws DOMException { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| |
| public String getTextContent() throws DOMException { |
| return getNodeValue(); |
| } |
| |
| void getTextContent(StringBuilder buf) throws DOMException { |
| String content = getNodeValue(); |
| if (content != null) { |
| buf.append(content); |
| } |
| } |
| |
| public void setTextContent(String textContent) throws DOMException { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| |
| public boolean isSameNode(Node other) { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| |
| public String lookupPrefix(String namespaceURI) { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| |
| public boolean isDefaultNamespace(String namespaceURI) { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| |
| public String lookupNamespaceURI(String prefix) { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| |
| public boolean isEqualNode(Node arg) { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| |
| public Object getFeature(String feature, String version) { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| |
| public Object setUserData(String key, Object data, |
| UserDataHandler handler) { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| |
| public Object getUserData(String key) { |
| throw new UnsupportedOperationException(); // TODO |
| } |
| } |