Enhydra 5.1 API

org.enhydra.xml.lazydom
Class LazyAttrNS

java.lang.Object
  |
  +--org.apache.xerces.dom.NodeImpl
        |
        +--org.apache.xerces.dom.AttrImpl
              |
              +--org.apache.xerces.dom.AttrNSImpl
                    |
                    +--org.enhydra.xml.lazydom.LazyAttrNS
All Implemented Interfaces:
Attr, java.lang.Cloneable, EventTarget, LazyAttr, LazyNode, LazyParent, Node, NodeList, java.io.Serializable

public class LazyAttrNS
extends AttrNSImpl
implements LazyAttr

Implementation of the DOM Attr that supports lazy instantiation of a template DOM. This version supports namespaces.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.apache.xerces.dom.AttrNSImpl
localName, namespaceURI
 
Fields inherited from class org.apache.xerces.dom.AttrImpl
name, textNode, value
 
Fields inherited from class org.apache.xerces.dom.NodeImpl
ELEMENT_DEFINITION_NODE, FIRSTCHILD, flags, HASSTRING, IGNORABLEWS, OWNED, ownerNode, READONLY, SPECIFIED, SYNCCHILDREN, SYNCDATA, UNNORMALIZED
 
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
Fields inherited from interface org.enhydra.xml.lazydom.LazyNode
DOCUMENT_NODE_ID, NULL_NODE_ID
 
Constructor Summary
protected LazyAttrNS(LazyDocument ownerDoc, LazyAttrNS template, java.lang.String namespaceURI, java.lang.String qualifiedName)
          Constructor with namespace.
 
Method Summary
 Node appendChild(Node newChild)
          Adds the node newChild to the end of the list of children of this node.
 void appendChildWhileExpanding(Node child)
          Append a child during node expansion.
 boolean areChildrenExpanded()
          Are the children of this node expanded?
 Node cloneNode(boolean deep)
          Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.
 NodeList getChildNodes()
          A NodeList that contains all children of this node.
 Node getFirstChild()
          The first child of this node.
 Node getLastChild()
          The last child of this node.
 Node getNextSibling()
          The node immediately following this node.
 int getNodeId()
          Get the node numeric id number.
 java.lang.String getNodeValue()
          The value of this node, depending on its type; see the table above.
 Node getParentNode()
          The parent of this node.
 Node getPreviousSibling()
          The node immediately preceding this node.
 LazyAttrNS getTemplateAttr()
          Get the template for this node.
 LazyNode getTemplateNode()
          Get the template node as a LazyNode.
 java.lang.String getValue()
          On retrieval, the value of the attribute is returned as a string.
 boolean hasChildNodes()
          Returns whether this node has any children.
 Node insertBefore(Node newChild, Node refChild)
          Inserts the node newChild before the existing child node refChild.
 boolean isParentExpanded()
          Is the parent of this node expanded?
 boolean isTemplateNode()
          Check if this node is a template node.
 void makeTemplateNode(int nodeId)
           
 void normalize()
          Puts all Text nodes in the full depth of the sub-tree underneath this Node, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes.
 Node removeChild(Node oldChild)
          Removes the child node indicated by oldChild from the list of children, and returns it.
 Node replaceChild(Node newChild, Node oldChild)
          Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.
 void setChildrenExpanded()
          Flag the children as being expanded.
 void setNodeValue(java.lang.String nodeValue)
          Implicit in the rerouting of getNodeValue to getValue is the need to redefine setNodeValue, for symmetry's sake.
 void setParentExpanded()
          Flag the parent as being expanded.
 void setParentWhileExpanding(Node parent)
          Set the parent of this node during expansion.
 void setValue(java.lang.String value)
          The DOM doesn't clearly define what setValue(null) means.
 LazyNode templateClone(Document ownerDocument)
          Create a new node, using this node as the template.
 java.lang.String toString()
          Return string for debugging.
 
Methods inherited from class org.apache.xerces.dom.AttrNSImpl
getLocalName, getNamespaceURI, getPrefix, setPrefix
 
Methods inherited from class org.apache.xerces.dom.AttrImpl
getElement, getLength, getName, getNodeName, getNodeType, getOwnerElement, getSpecified, item, makeChildNode, setReadOnly, setSpecified, synchronizeChildren
 
Methods inherited from class org.apache.xerces.dom.NodeImpl
addEventListener, changed, changes, dispatchEvent, getAttributes, getOwnerDocument, getReadOnly, getUserData, hasAttributes, isSupported, removeEventListener, setUserData, synchronizeData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.w3c.dom.Attr
getName, getOwnerElement, getSpecified
 
Methods inherited from interface org.w3c.dom.Node
getAttributes, getLocalName, getNamespaceURI, getNodeName, getNodeType, getOwnerDocument, getPrefix, hasAttributes, isSupported, setPrefix
 

Constructor Detail

LazyAttrNS

protected LazyAttrNS(LazyDocument ownerDoc,
                     LazyAttrNS template,
                     java.lang.String namespaceURI,
                     java.lang.String qualifiedName)
Constructor with namespace.

Parameters:
ownerDoc - The document that owns this node.
template - If not-null, get the parameters from this template.
namespaceURI - The namespace for the node, or null for no namespace. Will be ignored if template is not-null.
qualifiedName - The attribute name. Will be ignored if template is not-null.
Method Detail

getTemplateAttr

public LazyAttrNS getTemplateAttr()
Get the template for this node.

See Also:
LazyNode.getTemplateNode()

cloneNode

public Node cloneNode(boolean deep)
Description copied from interface: Node
Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. The duplicate node has no parent; ( parentNode is null.).
Cloning an Element copies all attributes and their values, including those generated by the XML processor to represent defaulted attributes, but this method does not copy any text it contains unless it is a deep clone, since the text is contained in a child Text node. Cloning an Attribute directly, as opposed to be cloned as part of an Element cloning operation, returns a specified attribute ( specified is true). Cloning any other type of node simply returns a copy of this node.
Note that cloning an immutable subtree results in a mutable copy, but the children of an EntityReference clone are readonly . In addition, clones of unspecified Attr nodes are specified. And, cloning Document, DocumentType, Entity, and Notation nodes is implementation dependent.

Specified by:
cloneNode in interface Node
Overrides:
cloneNode in class AttrImpl
Returns:
The duplicate node.
See Also:
Node.cloneNode(boolean)

getValue

public java.lang.String getValue()
Description copied from interface: Attr
On retrieval, the value of the attribute is returned as a string. Character and general entity references are replaced with their values. See also the method getAttribute on the Element interface.
On setting, this creates a Text node with the unparsed contents of the string. I.e. any characters that an XML processor would recognize as markup are instead treated as literal text. See also the method setAttribute on the Element interface.

Specified by:
getValue in interface Attr
Overrides:
getValue in class AttrImpl
See Also:
Attr.getValue()

setValue

public void setValue(java.lang.String value)
              throws DOMException
Description copied from class: AttrImpl
The DOM doesn't clearly define what setValue(null) means. I've taken it as "remove all children", which from outside should appear similar to setting it to the empty string.

Specified by:
setValue in interface Attr
Overrides:
setValue in class AttrImpl
DOMException
See Also:
Attr.setValue(java.lang.String)

getNodeValue

public java.lang.String getNodeValue()
                              throws DOMException
Description copied from interface: Node
The value of this node, depending on its type; see the table above. When it is defined to be null, setting it has no effect.

Specified by:
getNodeValue in interface Node
Overrides:
getNodeValue in class AttrImpl
Throws:
DOMException - NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
See Also:
Node.getNodeValue()

setNodeValue

public void setNodeValue(java.lang.String nodeValue)
                  throws DOMException
Description copied from class: AttrImpl
Implicit in the rerouting of getNodeValue to getValue is the need to redefine setNodeValue, for symmetry's sake. Note that since we're explicitly providing a value, Specified should be set true.... even if that value equals the default.

Specified by:
setNodeValue in interface Node
Overrides:
setNodeValue in class AttrImpl
DOMException
See Also:
Node.setNodeValue(java.lang.String)

makeTemplateNode

public void makeTemplateNode(int nodeId)
Specified by:
makeTemplateNode in interface LazyNode

getNodeId

public int getNodeId()
Description copied from interface: LazyNode
Get the node numeric id number.

Specified by:
getNodeId in interface LazyNode
See Also:
LazyNode.getNodeId()

isTemplateNode

public boolean isTemplateNode()
Description copied from interface: LazyNode
Check if this node is a template node.

Specified by:
isTemplateNode in interface LazyNode
See Also:
LazyNode.isTemplateNode()

getTemplateNode

public LazyNode getTemplateNode()
Description copied from interface: LazyNode
Get the template node as a LazyNode.

Specified by:
getTemplateNode in interface LazyNode
See Also:
LazyNode.getTemplateNode()

templateClone

public LazyNode templateClone(Document ownerDocument)
Description copied from interface: LazyNode
Create a new node, using this node as the template.

Specified by:
templateClone in interface LazyNode
See Also:
LazyNode.templateClone(org.w3c.dom.Document)

isParentExpanded

public boolean isParentExpanded()
Description copied from interface: LazyParent
Is the parent of this node expanded?

Specified by:
isParentExpanded in interface LazyParent
See Also:
LazyParent.isParentExpanded()

setParentExpanded

public void setParentExpanded()
Description copied from interface: LazyParent
Flag the parent as being expanded.

Specified by:
setParentExpanded in interface LazyParent
See Also:
LazyParent.setParentExpanded()

setParentWhileExpanding

public void setParentWhileExpanding(Node parent)
Description copied from interface: LazyParent
Set the parent of this node during expansion. This should also flag the parent as being expanded.

Specified by:
setParentWhileExpanding in interface LazyParent
See Also:
LazyParent.setParentWhileExpanding(org.w3c.dom.Node)

areChildrenExpanded

public boolean areChildrenExpanded()
Description copied from interface: LazyParent
Are the children of this node expanded?

Specified by:
areChildrenExpanded in interface LazyParent
See Also:
LazyParent.areChildrenExpanded()

setChildrenExpanded

public void setChildrenExpanded()
Description copied from interface: LazyParent
Flag the children as being expanded.

Specified by:
setChildrenExpanded in interface LazyParent
See Also:
LazyParent.setChildrenExpanded()

appendChildWhileExpanding

public void appendChildWhileExpanding(Node child)
Description copied from interface: LazyParent
Append a child during node expansion. This should only add the child, not trigger any other expansion.

Specified by:
appendChildWhileExpanding in interface LazyParent
See Also:
LazyParent.appendChildWhileExpanding(org.w3c.dom.Node)

getParentNode

public Node getParentNode()
Description copied from interface: Node
The parent of this node. All nodes, except Attr, Document, DocumentFragment, Entity, and Notation may have a parent. However, if a node has just been created and not yet added to the tree, or if it has been removed from the tree, this is null.

Specified by:
getParentNode in interface Node
Overrides:
getParentNode in class NodeImpl
See Also:
Node.getParentNode()

getChildNodes

public NodeList getChildNodes()
Description copied from interface: Node
A NodeList that contains all children of this node. If there are no children, this is a NodeList containing no nodes.

Specified by:
getChildNodes in interface Node
Overrides:
getChildNodes in class AttrImpl
See Also:
Node.getChildNodes()

getFirstChild

public Node getFirstChild()
Description copied from interface: Node
The first child of this node. If there is no such node, this returns null.

Specified by:
getFirstChild in interface Node
Overrides:
getFirstChild in class AttrImpl
See Also:
Node.getFirstChild()

getLastChild

public Node getLastChild()
Description copied from interface: Node
The last child of this node. If there is no such node, this returns null.

Specified by:
getLastChild in interface Node
Overrides:
getLastChild in class AttrImpl
See Also:
Node.getLastChild()

getPreviousSibling

public Node getPreviousSibling()
Description copied from interface: Node
The node immediately preceding this node. If there is no such node, this returns null.

Specified by:
getPreviousSibling in interface Node
Overrides:
getPreviousSibling in class NodeImpl
See Also:
Node.getPreviousSibling()

getNextSibling

public Node getNextSibling()
Description copied from interface: Node
The node immediately following this node. If there is no such node, this returns null.

Specified by:
getNextSibling in interface Node
Overrides:
getNextSibling in class NodeImpl
See Also:
Node.getNextSibling()

insertBefore

public Node insertBefore(Node newChild,
                         Node refChild)
                  throws DOMException
Description copied from interface: Node
Inserts the node newChild before the existing child node refChild. If refChild is null, insert newChild at the end of the list of children.
If newChild is a DocumentFragment object, all of its children are inserted, in the same order, before refChild. If the newChild is already in the tree, it is first removed.

Specified by:
insertBefore in interface Node
Overrides:
insertBefore in class AttrImpl
Returns:
The node being inserted.
Throws:
DOMException - HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to insert is one of this node's ancestors.
WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or if the parent of the node being inserted is readonly.
NOT_FOUND_ERR: Raised if refChild is not a child of this node.
See Also:
Node.insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)

replaceChild

public Node replaceChild(Node newChild,
                         Node oldChild)
                  throws DOMException
Description copied from interface: Node
Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.
If newChild is a DocumentFragment object, oldChild is replaced by all of the DocumentFragment children, which are inserted in the same order. If the newChild is already in the tree, it is first removed.

Specified by:
replaceChild in interface Node
Overrides:
replaceChild in class AttrImpl
Returns:
The node replaced.
Throws:
DOMException - HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to put in is one of this node's ancestors.
WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the parent of the new node is readonly.
NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
See Also:
Node.replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)

removeChild

public Node removeChild(Node oldChild)
                 throws DOMException
Description copied from interface: Node
Removes the child node indicated by oldChild from the list of children, and returns it.

Specified by:
removeChild in interface Node
Overrides:
removeChild in class AttrImpl
Returns:
The node removed.
Throws:
DOMException - NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
See Also:
Node.removeChild(org.w3c.dom.Node)

appendChild

public Node appendChild(Node newChild)
                 throws DOMException
Description copied from interface: Node
Adds the node newChild to the end of the list of children of this node. If the newChild is already in the tree, it is first removed.

Specified by:
appendChild in interface Node
Overrides:
appendChild in class NodeImpl
Returns:
The node added.
Throws:
DOMException - HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to append is one of this node's ancestors.
WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
See Also:
Node.appendChild(org.w3c.dom.Node)

hasChildNodes

public boolean hasChildNodes()
Description copied from interface: Node
Returns whether this node has any children.

Specified by:
hasChildNodes in interface Node
Overrides:
hasChildNodes in class AttrImpl
Returns:
true if this node has any children, false otherwise.
See Also:
Node.hasChildNodes()

normalize

public void normalize()
Description copied from interface: Node
Puts all Text nodes in the full depth of the sub-tree underneath this Node, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes. This can be used to ensure that the DOM view of a document is the same as if it were saved and re-loaded, and is useful when operations (such as XPointer lookups) that depend on a particular document tree structure are to be used.In cases where the document contains CDATASections, the normalize operation alone may not be sufficient, since XPointers do not differentiate between Text nodes and CDATASection nodes.

Specified by:
normalize in interface Node
Overrides:
normalize in class AttrImpl
See Also:
Node.normalize()

toString

public java.lang.String toString()
Return string for debugging. Xerces toString() method calls getValue(), which can cause expansion, so we override.

Overrides:
toString in class AttrImpl

Enhydra 5.1 API