Save This Page
Home » openjdk-7 » com.sun.org.apache.xerces.internal » dom » [javadoc | source]
    1   /*
    2    * reserved comment block
    3    * DO NOT REMOVE OR ALTER!
    4    */
    5   /*
    6    * Copyright 2000-2002,2004 The Apache Software Foundation.
    7    *
    8    * Licensed under the Apache License, Version 2.0 (the "License");
    9    * you may not use this file except in compliance with the License.
   10    * You may obtain a copy of the License at
   11    *
   12    *      http://www.apache.org/licenses/LICENSE-2.0
   13    *
   14    * Unless required by applicable law or agreed to in writing, software
   15    * distributed under the License is distributed on an "AS IS" BASIS,
   16    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   17    * See the License for the specific language governing permissions and
   18    * limitations under the License.
   19    */
   20   
   21   package com.sun.org.apache.xerces.internal.dom;
   22   
   23   import org.w3c.dom.Node;
   24   
   25   /**
   26    * ChildNode inherits from NodeImpl and adds the capability of being a child by
   27    * having references to its previous and next siblings.
   28    *
   29    * @xerces.internal
   30    *
   31    */
   32   public abstract class ChildNode
   33       extends NodeImpl {
   34   
   35       //
   36       // Constants
   37       //
   38   
   39       /** Serialization version. */
   40       static final long serialVersionUID = -6112455738802414002L;
   41   
   42       transient StringBuffer fBufferStr = null;
   43   
   44       //
   45       // Data
   46       //
   47   
   48       /** Previous sibling. */
   49       protected ChildNode previousSibling;
   50   
   51       /** Next sibling. */
   52       protected ChildNode nextSibling;
   53   
   54       //
   55       // Constructors
   56       //
   57   
   58       /**
   59        * No public constructor; only subclasses of Node should be
   60        * instantiated, and those normally via a Document's factory methods
   61        * <p>
   62        * Every Node knows what Document it belongs to.
   63        */
   64       protected ChildNode(CoreDocumentImpl ownerDocument) {
   65           super(ownerDocument);
   66       } // <init>(CoreDocumentImpl)
   67   
   68       /** Constructor for serialization. */
   69       public ChildNode() {}
   70   
   71       //
   72       // Node methods
   73       //
   74   
   75       /**
   76        * Returns a duplicate of a given node. You can consider this a
   77        * generic "copy constructor" for nodes. The newly returned object should
   78        * be completely independent of the source object's subtree, so changes
   79        * in one after the clone has been made will not affect the other.
   80        * <P>
   81        * Note: since we never have any children deep is meaningless here,
   82        * ParentNode overrides this behavior.
   83        * @see ParentNode
   84        *
   85        * <p>
   86        * Example: Cloning a Text node will copy both the node and the text it
   87        * contains.
   88        * <p>
   89        * Example: Cloning something that has children -- Element or Attr, for
   90        * example -- will _not_ clone those children unless a "deep clone"
   91        * has been requested. A shallow clone of an Attr node will yield an
   92        * empty Attr of the same name.
   93        * <p>
   94        * NOTE: Clones will always be read/write, even if the node being cloned
   95        * is read-only, to permit applications using only the DOM API to obtain
   96        * editable copies of locked portions of the tree.
   97        */
   98       public Node cloneNode(boolean deep) {
   99   
  100           ChildNode newnode = (ChildNode) super.cloneNode(deep);
  101   
  102           // Need to break the association w/ original kids
  103           newnode.previousSibling = null;
  104           newnode.nextSibling     = null;
  105           newnode.isFirstChild(false);
  106   
  107           return newnode;
  108   
  109       } // cloneNode(boolean):Node
  110   
  111       /**
  112        * Returns the parent node of this node
  113        */
  114       public Node getParentNode() {
  115           // if we have an owner, ownerNode is our parent, otherwise it's
  116           // our ownerDocument and we don't have a parent
  117           return isOwned() ? ownerNode : null;
  118       }
  119   
  120       /*
  121        * same as above but returns internal type
  122        */
  123       final NodeImpl parentNode() {
  124           // if we have an owner, ownerNode is our parent, otherwise it's
  125           // our ownerDocument and we don't have a parent
  126           return isOwned() ? ownerNode : null;
  127       }
  128   
  129       /** The next child of this node's parent, or null if none */
  130       public Node getNextSibling() {
  131           return nextSibling;
  132       }
  133   
  134       /** The previous child of this node's parent, or null if none */
  135       public Node getPreviousSibling() {
  136           // if we are the firstChild, previousSibling actually refers to our
  137           // parent's lastChild, but we hide that
  138           return isFirstChild() ? null : previousSibling;
  139       }
  140   
  141       /*
  142        * same as above but returns internal type
  143        */
  144       final ChildNode previousSibling() {
  145           // if we are the firstChild, previousSibling actually refers to our
  146           // parent's lastChild, but we hide that
  147           return isFirstChild() ? null : previousSibling;
  148       }
  149   
  150   } // class ChildNode

Save This Page
Home » openjdk-7 » com.sun.org.apache.xerces.internal » dom » [javadoc | source]