|
What this is
Other links
The source code/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.xsl.grammar;
import org.w3c.dom.*;
/**
* Node that can be used as HintContext. It's used for nested grammars.
* It can narrow context to given namespace etc.
*
* @author asgeir@dimonsoftware.com
*/
public class ResultNode implements Node {
protected Node peer;
protected String ignorePrefix;
protected String onlyUsePrefix;
/** Creates a new instance of ResultNode
* If onlyUsePrefix is non-null, the result node hirarchy will only have elements
* with this prefix.
* If ignorePrefix is non-null and onlyUsePrefix is null, the node hirarchy will
* not include nodes with this prefix.
* If both ignorePrefix and onlyUsePrefix are null, the node hirarchy will only
* include nodes with no prefixes.
* @peer the peer which this object contains
* @ignorePrefix a prefix (typically ending with ":") which should be ignored in
* this node hirarchy
* @onlyUsePrefix the prefix which all the nodes in the node hirarchy should have.
*/
public ResultNode(Node peer, String ignorePrefix, String onlyUsePrefix) {
this.peer = peer;
this.ignorePrefix = ignorePrefix;
this.onlyUsePrefix = onlyUsePrefix;
}
public Node appendChild(Node newChild) throws DOMException {
return createNode(peer.appendChild(newChild));
}
public Node cloneNode(boolean deep) {
return createNode(peer.cloneNode(deep));
}
public NamedNodeMap getAttributes() {
return peer.getAttributes();
}
public NodeList getChildNodes() {
return new ResultNodeList(peer.getChildNodes());
}
public Node getFirstChild() {
NodeList childNodes = getChildNodes();
if (childNodes.getLength() == 0) {
return null;
} else {
return childNodes.item(0);
}
}
public Node getLastChild() {
NodeList childNodes = new ResultNodeList(peer.getChildNodes());
if (childNodes.getLength() == 0) {
return null;
} else {
return childNodes.item(childNodes.getLength()-1);
}
}
public String getLocalName() {
return peer.getLocalName();
}
public String getNamespaceURI() {
return peer.getNamespaceURI();
}
public Node getNextSibling() {
Node node = peer.getNextSibling();
while (node != null && node.getNodeName() != null && !hasAllowedPrefix(node.getNodeName())) {
node = node.getNextSibling();
}
if (node == null) {
return null;
} else {
return createNode(node);
}
}
public String getNodeName() {
return peer.getNodeName();
}
public short getNodeType() {
return peer.getNodeType();
}
public String getNodeValue() throws DOMException {
return peer.getNodeValue();
}
public Document getOwnerDocument() {
return peer.getOwnerDocument();
}
public Node getParentNode() {
Node node = peer.getParentNode();
while (node != null && node.getNodeName() != null && !hasAllowedPrefix(node.getNodeName())) {
node = node.getParentNode();
}
if (node == null) {
return null;
} else {
return createNode(node);
}
}
public String getPrefix() {
return peer.getPrefix();
}
public Node getPreviousSibling() {
Node node = peer.getPreviousSibling();
while (node != null && node.getNodeName() != null && !hasAllowedPrefix(node.getNodeName())) {
node = node.getPreviousSibling();
}
if (node == null) {
return null;
} else {
return createNode(node);
}
}
public boolean hasAttributes() {
return peer.hasAttributes();
}
public boolean hasChildNodes() {
return getChildNodes().getLength() > 0;
}
public Node insertBefore(Node newChild, Node refChild) throws DOMException {
return createNode(peer.insertBefore(newChild, refChild));
}
public boolean isSupported(String feature, String version) {
return peer.isSupported(feature, version);
}
public void normalize() {
peer.normalize();
}
public Node removeChild(Node oldChild) throws DOMException {
return createNode(peer.removeChild(oldChild));
}
public Node replaceChild(Node newChild, Node oldChild) throws DOMException {
return createNode(peer.replaceChild(newChild, oldChild));
}
public void setNodeValue(String nodeValue) throws DOMException {
peer.setNodeValue(nodeValue);
}
public void setPrefix(String prefix) throws DOMException {
peer.setPrefix(prefix);
}
/**
* Create narrowing result node from given node.
*/
protected Node createNode(Node orig) {
if (orig.getNodeType() == Node.ELEMENT_NODE) {
return new ResultElement((Element)orig, ignorePrefix, onlyUsePrefix);
} else if (orig.getNodeType() == Node.DOCUMENT_NODE) {
return new ResultDocument((Document)orig, ignorePrefix, onlyUsePrefix);
} else if (orig.getNodeType() == Node.ATTRIBUTE_NODE) {
return new ResultAttr((Attr)orig, ignorePrefix, onlyUsePrefix);
} else {
return orig;
}
}
/**
* Returns true if the prefix rules described in the constructor javadocs
* are fulfilled, otherwise returns false.
*/
protected boolean hasAllowedPrefix(String name) {
if (onlyUsePrefix != null) {
return name.startsWith(onlyUsePrefix);
} else if (ignorePrefix != null){
return !name.startsWith(ignorePrefix);
} else {
return name.indexOf(':') == -1;
}
}
public class ResultNodeList implements NodeList{
java.util.Vector nodeVector;
public ResultNodeList(NodeList list) {
nodeVector = new java.util.Vector(list.getLength());
for (int ind = 0; ind < list.getLength(); ind++) {
Node node = list.item(ind);
if (node.getNodeName() != null && hasAllowedPrefix(node.getNodeName())) {
nodeVector.add(createNode(node));
}
}
}
public int getLength() {
return nodeVector.size();
}
public Node item(int index) {
return (Node)nodeVector.elementAt(index);
}
}
//
// Implementation of DOM Level 3 methods
//
public short compareDocumentPosition (Node a) {
throw new UOException();
}
public String getBaseURI() {
throw new UOException();
}
public Object getFeature(String a, String b) {
throw new UOException();
}
public String getTextContent () {
throw new UOException();
}
public Object getUserData(String a) {
throw new UOException();
}
public boolean isDefaultNamespace (String a) {
throw new UOException();
}
public boolean isEqualNode(Node a) {
throw new UOException();
}
public boolean isSameNode(Node a) {
throw new UOException();
}
public String lookupNamespaceURI(String a) {
throw new UOException();
}
public String lookupPrefix(String a) {
throw new UOException();
}
public void setTextContent(String a) {
throw new UOException();
}
public Object setUserData(String a, Object b, UserDataHandler c) {
throw new UOException();
}
// Implementation of DOM Level 3 methods for Element
public TypeInfo getSchemaTypeInfo() {
throw new UOException ();
}
public void setIdAttribute(String a, boolean b) {
throw new UOException ();
}
public void setIdAttributeNS(String a, String b, boolean c) {
throw new UOException ();
}
public void setIdAttributeNode(Attr a, boolean b) {
throw new UOException ();
}
// Implementation of DOM Level 3 methods for Attr
public boolean isId () {
throw new UOException ();
}
// Implementation of DOM Level 3 methods for Text
public Text replaceWholeText (String a) {
throw new UOException ();
}
public String getWholeText() {
throw new UOException ();
}
public boolean isElementContentWhitespace() {
throw new UOException ();
}
// Dom Level 3 methods for Document
public Node adoptNode (Node a) {
throw new UOException ();
}
public String getDocumentURI () {
throw new UOException ();
}
public DOMConfiguration getDomConfig() {
throw new UOException ();
}
public String getInputEncoding() {
throw new UOException ();
}
public boolean getStrictErrorChecking() {
throw new UOException ();
}
public String getXmlEncoding () {
throw new UOException ();
}
public boolean getXmlStandalone() {
throw new UOException ();
}
public String getXmlVersion() {
throw new UOException ();
}
public void normalizeDocument() {
throw new UOException ();
}
public Node renameNode(Node a, String nb, String c) {
throw new UOException ();
}
public void setDocumentURI(String a) {
throw new UOException ();
}
public void setStrictErrorChecking(boolean a) {
throw new UOException ();
}
public void setXmlStandalone(boolean a) {
throw new UOException ();
}
public void setXmlVersion(String a) {
throw new UOException ();
}
private static final class UOException extends IllegalStateException {
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.