Class DeferredDocumentImpl

  • All Implemented Interfaces:
    Serializable, Cloneable, DeferredNode, Document, DocumentEvent, EventTarget, Node, NodeList, org.w3c.dom.ranges.DocumentRange, org.w3c.dom.traversal.DocumentTraversal

    public class DeferredDocumentImpl
    extends DocumentImpl
    implements DeferredNode
    The Document interface represents the entire HTML or XML document. Conceptually, it is the root of the document tree, and provides the primary access to the document's data.

    Since elements, text nodes, comments, processing instructions, etc. cannot exist outside the context of a Document, the Document interface also contains the factory methods needed to create these objects. The Node objects created have a ownerDocument attribute which associates them with the Document within whose context they were created.

    Since:
    PR-DOM-Level-1-19980818.
    Version:
    $Id$
    See Also:
    Serialized Form
    • Field Detail

      • INITIAL_CHUNK_COUNT

        protected static final int INITIAL_CHUNK_COUNT
        Initial chunk size.
        See Also:
        Constant Field Values
      • fNodeCount

        protected transient int fNodeCount
        Node count.
      • fNodeType

        protected transient int[][] fNodeType
        Node types.
      • fNodeName

        protected transient Object[][] fNodeName
        Node names.
      • fNodeValue

        protected transient Object[][] fNodeValue
        Node values.
      • fNodeParent

        protected transient int[][] fNodeParent
        Node parents.
      • fNodeLastChild

        protected transient int[][] fNodeLastChild
        Node first children.
      • fNodePrevSib

        protected transient int[][] fNodePrevSib
        Node prev siblings.
      • fNodeURI

        protected transient Object[][] fNodeURI
        Node namespace URI.
      • fNodeExtra

        protected transient int[][] fNodeExtra
        Extra data.
      • fIdCount

        protected transient int fIdCount
        Identifier count.
      • fIdName

        protected transient String[] fIdName
        Identifier name indexes.
      • fIdElement

        protected transient int[] fIdElement
        Identifier element indexes.
      • fNamespacesEnabled

        protected boolean fNamespacesEnabled
        DOM2: For namespace support in the deferred case.
    • Constructor Detail

      • DeferredDocumentImpl

        public DeferredDocumentImpl()
        NON-DOM: Actually creating a Document is outside the DOM's spec, since it has to operate in terms of a particular implementation.
      • DeferredDocumentImpl

        public DeferredDocumentImpl​(boolean namespacesEnabled)
        NON-DOM: Actually creating a Document is outside the DOM's spec, since it has to operate in terms of a particular implementation.
      • DeferredDocumentImpl

        public DeferredDocumentImpl​(boolean namespaces,
                                    boolean grammarAccess)
        Experimental constructor.
    • Method Detail

      • getImplementation

        public DOMImplementation getImplementation()
        Retrieve information describing the abilities of this particular DOM implementation. Intended to support applications that may be using DOMs retrieved from several different sources, potentially with different underlying representations.
        Specified by:
        getImplementation in interface Document
        Overrides:
        getImplementation in class DocumentImpl
      • createDeferredDocument

        public int createDeferredDocument()
        Creates a document node in the table.
      • createDeferredDocumentType

        public int createDeferredDocumentType​(String rootElementName,
                                              String publicId,
                                              String systemId)
        Creates a doctype.
      • setInternalSubset

        public void setInternalSubset​(int doctypeIndex,
                                      String subset)
      • createDeferredNotation

        public int createDeferredNotation​(String notationName,
                                          String publicId,
                                          String systemId,
                                          String baseURI)
        Creates a notation in the table.
      • createDeferredEntity

        public int createDeferredEntity​(String entityName,
                                        String publicId,
                                        String systemId,
                                        String notationName,
                                        String baseURI)
        Creates an entity in the table.
      • getDeferredEntityBaseURI

        public String getDeferredEntityBaseURI​(int entityIndex)
      • setEntityInfo

        public void setEntityInfo​(int currentEntityDecl,
                                  String version,
                                  String encoding)
      • setTypeInfo

        public void setTypeInfo​(int elementNodeIndex,
                                Object type)
      • setInputEncoding

        public void setInputEncoding​(int currentEntityDecl,
                                     String value)
        DOM Internal An attribute specifying the actual encoding of this document. This is null otherwise.
        This attribute represents the property [character encoding scheme] defined in .
      • createDeferredEntityReference

        public int createDeferredEntityReference​(String name,
                                                 String baseURI)
        Creates an entity reference node in the table.
      • createDeferredElement

        public int createDeferredElement​(String elementURI,
                                         String elementName,
                                         Object type)
        Deprecated.
        Creates an element node with a URI in the table and type information.
      • createDeferredElement

        public int createDeferredElement​(String elementName)
        Deprecated.
        Creates an element node in the table.
      • createDeferredElement

        public int createDeferredElement​(String elementURI,
                                         String elementName)
        Creates an element node with a URI in the table.
      • setDeferredAttribute

        public int setDeferredAttribute​(int elementNodeIndex,
                                        String attrName,
                                        String attrURI,
                                        String attrValue,
                                        boolean specified,
                                        boolean id,
                                        Object type)
        This method is used by the DOMParser to create attributes.
        Parameters:
        elementNodeIndex -
        attrName -
        attrURI -
        attrValue -
        specified -
        id -
        type -
        Returns:
        int
      • setDeferredAttribute

        public int setDeferredAttribute​(int elementNodeIndex,
                                        String attrName,
                                        String attrURI,
                                        String attrValue,
                                        boolean specified)
        Deprecated.
        Sets an attribute on an element node.
      • createDeferredAttribute

        public int createDeferredAttribute​(String attrName,
                                           String attrValue,
                                           boolean specified)
        Creates an attribute in the table.
      • createDeferredAttribute

        public int createDeferredAttribute​(String attrName,
                                           String attrURI,
                                           String attrValue,
                                           boolean specified)
        Creates an attribute with a URI in the table.
      • createDeferredElementDefinition

        public int createDeferredElementDefinition​(String elementName)
        Creates an element definition in the table.
      • createDeferredTextNode

        public int createDeferredTextNode​(String data,
                                          boolean ignorableWhitespace)
        Creates a text node in the table.
      • createDeferredCDATASection

        public int createDeferredCDATASection​(String data)
        Creates a CDATA section node in the table.
      • createDeferredProcessingInstruction

        public int createDeferredProcessingInstruction​(String target,
                                                       String data)
        Creates a processing instruction node in the table.
      • createDeferredComment

        public int createDeferredComment​(String data)
        Creates a comment node in the table.
      • cloneNode

        public int cloneNode​(int nodeIndex,
                             boolean deep)
        Creates a clone of the specified node.
      • appendChild

        public void appendChild​(int parentIndex,
                                int childIndex)
        Appends a child to the specified parent in the table.
      • setAttributeNode

        public int setAttributeNode​(int elemIndex,
                                    int attrIndex)
        Adds an attribute node to the specified element.
      • setIdAttributeNode

        public void setIdAttributeNode​(int elemIndex,
                                       int attrIndex)
        Adds an attribute node to the specified element.
      • setIdAttribute

        public void setIdAttribute​(int attrIndex)
        Sets type of attribute
      • insertBefore

        public int insertBefore​(int parentIndex,
                                int newChildIndex,
                                int refChildIndex)
        Inserts a child before the specified node in the table.
      • setAsLastChild

        public void setAsLastChild​(int parentIndex,
                                   int childIndex)
        Sets the last child of the parentIndex to childIndex.
      • getParentNode

        public int getParentNode​(int nodeIndex)
        Returns the parent node of the given node. Calling this method does not free the parent index.
      • getParentNode

        public int getParentNode​(int nodeIndex,
                                 boolean free)
        Returns the parent node of the given node.
        Parameters:
        free - True to free parent node.
      • getLastChild

        public int getLastChild​(int nodeIndex)
        Returns the last child of the given node.
      • getLastChild

        public int getLastChild​(int nodeIndex,
                                boolean free)
        Returns the last child of the given node.
        Parameters:
        free - True to free child index.
      • getPrevSibling

        public int getPrevSibling​(int nodeIndex)
        Returns the prev sibling of the given node. This is post-normalization of Text Nodes.
      • getPrevSibling

        public int getPrevSibling​(int nodeIndex,
                                  boolean free)
        Returns the prev sibling of the given node.
        Parameters:
        free - True to free sibling index.
      • getRealPrevSibling

        public int getRealPrevSibling​(int nodeIndex)
        Returns the real prev sibling of the given node, directly from the data structures. Used by TextImpl#getNodeValue() to normalize values.
      • getRealPrevSibling

        public int getRealPrevSibling​(int nodeIndex,
                                      boolean free)
        Returns the real prev sibling of the given node.
        Parameters:
        free - True to free sibling index.
      • lookupElementDefinition

        public int lookupElementDefinition​(String elementName)
        Returns the index of the element definition in the table with the specified name index, or -1 if no such definition exists.
      • getNodeObject

        public DeferredNode getNodeObject​(int nodeIndex)
        Instantiates the requested node object.
      • getNodeName

        public String getNodeName​(int nodeIndex)
        Returns the name of the given node.
      • getNodeName

        public String getNodeName​(int nodeIndex,
                                  boolean free)
        Returns the name of the given node.
        Parameters:
        free - True to free the string index.
      • getNodeValueString

        public String getNodeValueString​(int nodeIndex)
        Returns the real value of the given node.
      • getNodeValueString

        public String getNodeValueString​(int nodeIndex,
                                         boolean free)
        Returns the real value of the given node.
        Parameters:
        free - True to free the string index.
      • getNodeValue

        public String getNodeValue​(int nodeIndex)
        Returns the value of the given node.
      • getTypeInfo

        public Object getTypeInfo​(int nodeIndex)
        Clears the type info that is stored in the fNodeValue array
        Parameters:
        nodeIndex -
        Returns:
        Object - type information for the attribute/element node
      • getNodeValue

        public String getNodeValue​(int nodeIndex,
                                   boolean free)
        Returns the value of the given node.
        Parameters:
        free - True to free the value index.
      • getNodeExtra

        public int getNodeExtra​(int nodeIndex)
        Returns the extra info of the given node. Used by AttrImpl to store specified value (1 == true).
      • getNodeExtra

        public int getNodeExtra​(int nodeIndex,
                                boolean free)
        Returns the extra info of the given node.
        Parameters:
        free - True to free the value index.
      • getNodeType

        public short getNodeType​(int nodeIndex)
        Returns the type of the given node.
      • getNodeType

        public short getNodeType​(int nodeIndex,
                                 boolean free)
        Returns the type of the given node.
        Parameters:
        free - True to free type index.
      • getAttribute

        public String getAttribute​(int elemIndex,
                                   String name)
        Returns the attribute value of the given name.
      • getNodeURI

        public String getNodeURI​(int nodeIndex)
        Returns the URI of the given node.
      • getNodeURI

        public String getNodeURI​(int nodeIndex,
                                 boolean free)
        Returns the URI of the given node.
        Parameters:
        free - True to free URI index.
      • putIdentifier

        public void putIdentifier​(String name,
                                  int elementNodeIndex)
        Registers an identifier name with a specified element node.
      • print

        public void print()
        Prints out the tables.
      • getNodeIndex

        public int getNodeIndex()
        Returns the node index.
        Specified by:
        getNodeIndex in interface DeferredNode
      • synchronizeData

        protected void synchronizeData()
        Synchronizes the node's data.
        Overrides:
        synchronizeData in class NodeImpl
      • synchronizeChildren

        protected void synchronizeChildren()
        Synchronizes the node's children with the internal structure. Fluffing the children at once solves a lot of work to keep the two structures in sync. The problem gets worse when editing the tree -- this makes it a lot easier.
        Overrides:
        synchronizeChildren in class ParentNode
      • synchronizeChildren

        protected final void synchronizeChildren​(AttrImpl a,
                                                 int nodeIndex)
        Synchronizes the node's children with the internal structure. Fluffing the children at once solves a lot of work to keep the two structures in sync. The problem gets worse when editing the tree -- this makes it a lot easier. This is not directly used in this class but this method is here so that it can be shared by all deferred subclasses of AttrImpl.
      • synchronizeChildren

        protected final void synchronizeChildren​(ParentNode p,
                                                 int nodeIndex)
        Synchronizes the node's children with the internal structure. Fluffing the children at once solves a lot of work to keep the two structures in sync. The problem gets worse when editing the tree -- this makes it a lot easier. This is not directly used in this class but this method is here so that it can be shared by all deferred subclasses of ParentNode.
      • ensureCapacity

        protected void ensureCapacity​(int chunk)
        Ensures that the internal tables are large enough.
      • createNode

        protected int createNode​(short nodeType)
        Creates a node of the specified type.
      • binarySearch

        protected static int binarySearch​(int[] values,
                                          int start,
                                          int end,
                                          int target)
        Performs a binary search for a target value in an array of values. The array of values must be in ascending sorted order before calling this method and all array values must be non-negative.
        Parameters:
        values - The array of values to search.
        start - The starting offset of the search.
        end - The ending offset of the search.
        target - The target value.
        Returns:
        This function will return the first occurrence of the target value, or -1 if the target value cannot be found.