You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ru...@apache.org on 2006/01/10 08:54:32 UTC

svn commit: r367519 [4/5] - in /webservices/axis2/trunk/java/modules: doom/src/org/apache/axis2/om/impl/dom/ doom/src/org/apache/axis2/om/impl/dom/factory/ doom/src/org/apache/axis2/om/impl/dom/jaxp/ integration/test/org/apache/axis2/security/

Modified: webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NamedNodeMapImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NamedNodeMapImpl.java?rev=367519&r1=367518&r2=367519&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NamedNodeMapImpl.java (original)
+++ webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NamedNodeMapImpl.java Mon Jan  9 23:53:43 2006
@@ -23,138 +23,149 @@
 
 /**
  * 
- * Most of the implementation is taken from 
+ * Most of the implementation is taken from
  * org.apache.xerces.dom.NamedNodeMapImpl
  */
 public class NamedNodeMapImpl implements NamedNodeMap {
 
-	Vector nodes;
-	ParentNode ownerNode;
+    Vector nodes;
+
+    ParentNode ownerNode;
+
     //
     // Data
     //
 
     protected short flags;
 
-    protected final static short READONLY     = 0x1<<0;
-    protected final static short CHANGED      = 0x1<<1;
-    protected final static short HASDEFAULTS  = 0x1<<2;
-    
-    
-	protected NamedNodeMapImpl(ParentNode ownerNode) {
-		this.ownerNode = ownerNode;
-	}
-
-	/**
-	 * 
-	 */
+    protected final static short READONLY = 0x1 << 0;
+
+    protected final static short CHANGED = 0x1 << 1;
+
+    protected final static short HASDEFAULTS = 0x1 << 2;
+
+    protected NamedNodeMapImpl(ParentNode ownerNode) {
+        this.ownerNode = ownerNode;
+    }
+
+    /**
+     * 
+     */
     public Node getNamedItem(String name) {
-    	int i = findNamePoint(name,0);
-        return (i < 0) ? null : (Node)(nodes.elementAt(i));
+        int i = findNamePoint(name, 0);
+        return (i < 0) ? null : (Node) (nodes.elementAt(i));
 
     }
 
-	/** 
-	 *From org.apache.xerces.dom.NamedNodeMapImpl
-	 */
+    /**
+     * From org.apache.xerces.dom.NamedNodeMapImpl
+     */
     public Node item(int index) {
-    	return (nodes != null && index < nodes.size()) ?
-                    (Node)(nodes.elementAt(index)) : null;
+        return (nodes != null && index < nodes.size()) ? (Node) (nodes
+                .elementAt(index)) : null;
     }
 
-	/**
-	 * From org.apache.xerces.dom.NamedNodeMapImpl
-	 */
+    /**
+     * From org.apache.xerces.dom.NamedNodeMapImpl
+     */
     public int getLength() {
-    	return (nodes != null) ? nodes.size() : 0;
+        return (nodes != null) ? nodes.size() : 0;
     }
-    
+
     /**
      * Removes a node specified by name.
-     * @param name The name of a node to remove.
-     * @return Returns the node removed from the map if a node with such a name exists.
+     * 
+     * @param name
+     *            The name of a node to remove.
+     * @return Returns the node removed from the map if a node with such a name
+     *         exists.
      */
     /***/
-    public Node removeNamedItem(String name)
-        throws DOMException {
+    public Node removeNamedItem(String name) throws DOMException {
 
-    	if (isReadOnly()) {
-            String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NO_MODIFICATION_ALLOWED_ERR", null);
-            throw
-                new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
-                msg);
-        }
-    	int i = findNamePoint(name,0);
-    	if (i < 0) {
-            String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_FOUND_ERR", null);
+        if (isReadOnly()) {
+            String msg = DOMMessageFormatter.formatMessage(
+                    DOMMessageFormatter.DOM_DOMAIN,
+                    "NO_MODIFICATION_ALLOWED_ERR", null);
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    msg);
+        }
+        int i = findNamePoint(name, 0);
+        if (i < 0) {
+            String msg = DOMMessageFormatter.formatMessage(
+                    DOMMessageFormatter.DOM_DOMAIN, "NOT_FOUND_ERR", null);
             throw new DOMException(DOMException.NOT_FOUND_ERR, msg);
         }
 
-        NodeImpl n = (NodeImpl)nodes.elementAt(i);
+        NodeImpl n = (NodeImpl) nodes.elementAt(i);
         nodes.removeElementAt(i);
 
         return n;
 
     } // removeNamedItem(String):Node
-    
-    
+
     /**
-     * Introduced in DOM Level 2. 
-     * Retrieves a node specified by local name and namespace URI.
-     *
-     * @param namespaceURI  The namespace URI of the node to retrieve.
-     *                      When it is null or an empty string, this
-     *                      method behaves like getNamedItem.
-     * @param localName     The local name of the node to retrieve.
-     * @return          Returns s Node (of any type) with the specified name, or null if the specified
-     *                      name did not identify any node in the map.
+     * Introduced in DOM Level 2. Retrieves a node specified by local name and
+     * namespace URI.
+     * 
+     * @param namespaceURI
+     *            The namespace URI of the node to retrieve. When it is null or
+     *            an empty string, this method behaves like getNamedItem.
+     * @param localName
+     *            The local name of the node to retrieve.
+     * @return Returns s Node (of any type) with the specified name, or null if
+     *         the specified name did not identify any node in the map.
      */
     public Node getNamedItemNS(String namespaceURI, String localName) {
 
-    	int i = findNamePoint(namespaceURI, localName);
-        return (i < 0) ? null : (Node)(nodes.elementAt(i));
+        int i = findNamePoint(namespaceURI, localName);
+        return (i < 0) ? null : (Node) (nodes.elementAt(i));
 
     } // getNamedItemNS(String,String):Node
 
     /**
      * Adds a node using its namespaceURI and localName.
+     * 
      * @see org.w3c.dom.NamedNodeMap#setNamedItem
-     * @return Returns the replaced Node if the new Node replaces an existing node else returns null.
-     * @param arg A node to store in a named node map. The node will later be
-     *      accessible using the value of the namespaceURI and localName
-     *      attribute of the node. If a node with those namespace URI and
-     *      local name is already present in the map, it is replaced by the new
-     *      one.
+     * @return Returns the replaced Node if the new Node replaces an existing
+     *         node else returns null.
+     * @param arg
+     *            A node to store in a named node map. The node will later be
+     *            accessible using the value of the namespaceURI and localName
+     *            attribute of the node. If a node with those namespace URI and
+     *            local name is already present in the map, it is replaced by
+     *            the new one.
      */
     public Node setNamedItemNS(Node arg) throws DOMException {
-        
-        DocumentImpl ownerDocument = (DocumentImpl)ownerNode.getOwnerDocument();
+
+        DocumentImpl ownerDocument = (DocumentImpl) ownerNode
+                .getOwnerDocument();
         if (isReadOnly()) {
-			String msg = DOMMessageFormatter.formatMessage(
-					DOMMessageFormatter.DOM_DOMAIN,
-					"NO_MODIFICATION_ALLOWED_ERR", null);
-			throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
-					msg);
-		}
-
-		if (arg.getOwnerDocument() != ownerDocument) {
-			String msg = DOMMessageFormatter.formatMessage(
-					DOMMessageFormatter.DOM_DOMAIN, "WRONG_DOCUMENT_ERR", null);
-			throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, msg);
-		}
-        
+            String msg = DOMMessageFormatter.formatMessage(
+                    DOMMessageFormatter.DOM_DOMAIN,
+                    "NO_MODIFICATION_ALLOWED_ERR", null);
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    msg);
+        }
+
+        if (arg.getOwnerDocument() != ownerDocument) {
+            String msg = DOMMessageFormatter.formatMessage(
+                    DOMMessageFormatter.DOM_DOMAIN, "WRONG_DOCUMENT_ERR", null);
+            throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, msg);
+        }
+
         int i = findNamePoint(arg.getNamespaceURI(), arg.getLocalName());
         NodeImpl previous = null;
         if (i >= 0) {
             previous = (NodeImpl) nodes.elementAt(i);
-            nodes.setElementAt(arg,i);
+            nodes.setElementAt(arg, i);
         } else {
             // If we can't find by namespaceURI, localName, then we find by
             // nodeName so we know where to insert.
-            i = findNamePoint(arg.getNodeName(),0);
+            i = findNamePoint(arg.getNodeName(), 0);
             if (i >= 0) {
                 previous = (NodeImpl) nodes.elementAt(i);
-                nodes.insertElementAt(arg,i);
+                nodes.insertElementAt(arg, i);
             } else {
                 i = -1 - i; // Insert point (may be end of list)
                 if (null == nodes) {
@@ -164,97 +175,100 @@
             }
         }
         return previous;
-        
+
     } // setNamedItemNS(Node):Node
 
     /**
-     * Introduced in DOM Level 2. 
-     * Removes a node specified by local name and namespace URI.
+     * Introduced in DOM Level 2. Removes a node specified by local name and
+     * namespace URI.
+     * 
      * @param namespaceURI
-     *                      The namespace URI of the node to remove.
-     *                      When it is null or an empty string, this
-     *                      method behaves like removeNamedItem.
-     * @param     name          The local name of the node to remove.
-     * @return          Returns the node removed from the map if a node with such
-     *                      a local name and namespace URI exists.
-     * @throws              NOT_FOUND_ERR: Raised if there is no node named
-     *                      name in the map.
-
-     */
-     public Node removeNamedItemNS(String namespaceURI, String name)
-        throws DOMException {
-
-    	if (isReadOnly()) {
-            String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NO_MODIFICATION_ALLOWED_ERR", null);
-            throw
-                new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
-                msg);
-        }
-    	int i = findNamePoint(namespaceURI, name);
-    	if (i < 0) {
-            String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_FOUND_ERR", null);
+     *            The namespace URI of the node to remove. When it is null or an
+     *            empty string, this method behaves like removeNamedItem.
+     * @param name
+     *            The local name of the node to remove.
+     * @return Returns the node removed from the map if a node with such a local
+     *         name and namespace URI exists.
+     * @throws NOT_FOUND_ERR:
+     *             Raised if there is no node named name in the map.
+     * 
+     */
+    public Node removeNamedItemNS(String namespaceURI, String name)
+            throws DOMException {
+
+        if (isReadOnly()) {
+            String msg = DOMMessageFormatter.formatMessage(
+                    DOMMessageFormatter.DOM_DOMAIN,
+                    "NO_MODIFICATION_ALLOWED_ERR", null);
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    msg);
+        }
+        int i = findNamePoint(namespaceURI, name);
+        if (i < 0) {
+            String msg = DOMMessageFormatter.formatMessage(
+                    DOMMessageFormatter.DOM_DOMAIN, "NOT_FOUND_ERR", null);
             throw new DOMException(DOMException.NOT_FOUND_ERR, msg);
         }
 
-        NodeImpl n = (NodeImpl)nodes.elementAt(i);
+        NodeImpl n = (NodeImpl) nodes.elementAt(i);
         nodes.removeElementAt(i);
 
         return n;
 
     } // removeNamedItem(String):Node
-     
-     
-     /**
-      * Adds a node using its nodeName attribute.
-      * As the nodeName attribute is used to derive the name which the node must be
-      * stored under, multiple nodes of certain types (those that have a "special" string
-      * value) cannot be stored as the names would clash. This is seen as preferable to
-      * allowing nodes to be aliased.
-      * @see org.w3c.dom.NamedNodeMap#setNamedItem
-      * @return Returns the replaced Node if the new Node replaces an existing node, 
-      *         otherwise returns null.
-      * @param arg 
-      *      A node to store in a named node map. The node will later be
-      *      accessible using the value of the namespaceURI and localName
-      *      attribute of the node. If a node with those namespace URI and
-      *      local name is already present in the map, it is replaced by the new
-      *      one.
-      * @exception org.w3c.dom.DOMException The exception description.
-      */
-     public Node setNamedItem(Node arg)
-     throws DOMException {
-         
-         DocumentImpl ownerDocument = (DocumentImpl)ownerNode.getOwnerDocument();
-         
-         if (isReadOnly()) {
-			String msg = DOMMessageFormatter.formatMessage(
-					DOMMessageFormatter.DOM_DOMAIN,
-					"NO_MODIFICATION_ALLOWED_ERR", null);
-			throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
-					msg);
-         }
-         if (arg.getOwnerDocument() != ownerDocument) {
-         	String msg = DOMMessageFormatter.formatMessage(
-					DOMMessageFormatter.DOM_DOMAIN, "WRONG_DOCUMENT_ERR", null);
-			throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, msg);
-         }
-         
-         int i = findNamePoint(arg.getNodeName(),0);
-         NodeImpl previous = null;
-         if (i >= 0) {
-             previous = (NodeImpl) nodes.elementAt(i);
-             nodes.setElementAt(arg,i);
-         } else {
-             i = -1 - i; // Insert point (may be end of list)
-             if (null == nodes) {
-                 nodes = new Vector(5, 10);
-             }
-             nodes.insertElementAt(arg, i);
-         }
-         return previous;
-         
-     } // setNamedItem(Node):Node
-	
+
+    /**
+     * Adds a node using its nodeName attribute. As the nodeName attribute is
+     * used to derive the name which the node must be stored under, multiple
+     * nodes of certain types (those that have a "special" string value) cannot
+     * be stored as the names would clash. This is seen as preferable to
+     * allowing nodes to be aliased.
+     * 
+     * @see org.w3c.dom.NamedNodeMap#setNamedItem
+     * @return Returns the replaced Node if the new Node replaces an existing
+     *         node, otherwise returns null.
+     * @param arg
+     *            A node to store in a named node map. The node will later be
+     *            accessible using the value of the namespaceURI and localName
+     *            attribute of the node. If a node with those namespace URI and
+     *            local name is already present in the map, it is replaced by
+     *            the new one.
+     * @exception org.w3c.dom.DOMException
+     *                The exception description.
+     */
+    public Node setNamedItem(Node arg) throws DOMException {
+
+        DocumentImpl ownerDocument = (DocumentImpl) ownerNode
+                .getOwnerDocument();
+
+        if (isReadOnly()) {
+            String msg = DOMMessageFormatter.formatMessage(
+                    DOMMessageFormatter.DOM_DOMAIN,
+                    "NO_MODIFICATION_ALLOWED_ERR", null);
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    msg);
+        }
+        if (arg.getOwnerDocument() != ownerDocument) {
+            String msg = DOMMessageFormatter.formatMessage(
+                    DOMMessageFormatter.DOM_DOMAIN, "WRONG_DOCUMENT_ERR", null);
+            throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, msg);
+        }
+
+        int i = findNamePoint(arg.getNodeName(), 0);
+        NodeImpl previous = null;
+        if (i >= 0) {
+            previous = (NodeImpl) nodes.elementAt(i);
+            nodes.setElementAt(arg, i);
+        } else {
+            i = -1 - i; // Insert point (may be end of list)
+            if (null == nodes) {
+                nodes = new Vector(5, 10);
+            }
+            nodes.insertElementAt(arg, i);
+        }
+        return previous;
+
+    } // setNamedItem(Node):Node
 
     final boolean isReadOnly() {
         return (flags & READONLY) != 0;
@@ -279,40 +293,41 @@
     final void hasDefaults(boolean value) {
         flags = (short) (value ? flags | HASDEFAULTS : flags & ~HASDEFAULTS);
     }
-	
+
     /**
      * 
      * From org.apache.xerces.dom.NamedNodeMapImpl
      * 
      * Subroutine: Locates the named item, or the point at which said item
-     * should be added. 
-     *
-     * @param name Name of a node to look up.
-     *
-     * @return If positive or zero, the index of the found item.
-     * If negative, index of the appropriate point at which to insert
-     * the item, encoded as -1-index and hence reconvertable by subtracting
-     * it from -1. (Encoding because I don't want to recompare the strings
-     * but don't want to burn bytes on a datatype to hold a flagged value.)
+     * should be added.
+     * 
+     * @param name
+     *            Name of a node to look up.
+     * 
+     * @return If positive or zero, the index of the found item. If negative,
+     *         index of the appropriate point at which to insert the item,
+     *         encoded as -1-index and hence reconvertable by subtracting it
+     *         from -1. (Encoding because I don't want to recompare the strings
+     *         but don't want to burn bytes on a datatype to hold a flagged
+     *         value.)
      */
     protected int findNamePoint(String name, int start) {
 
-    	// Binary search
-    	int i = 0;
-    	if (nodes != null) {
+        // Binary search
+        int i = 0;
+        if (nodes != null) {
             int first = start;
-            int last  = nodes.size() - 1;
+            int last = nodes.size() - 1;
 
             while (first <= last) {
                 i = (first + last) / 2;
-                int test = name.compareTo(((Node)(nodes.elementAt(i))).getNodeName());
+                int test = name.compareTo(((Node) (nodes.elementAt(i)))
+                        .getNodeName());
                 if (test == 0) {
                     return i; // Name found
-                }
-                else if (test < 0) {
+                } else if (test < 0) {
                     last = i - 1;
-                }
-                else {
+                } else {
                     first = i + 1;
                 }
             }
@@ -320,93 +335,90 @@
             if (first > i) {
                 i = first;
             }
-    	}
+        }
 
-    	return -1 - i; // not-found has to be encoded.
+        return -1 - i; // not-found has to be encoded.
 
     } // findNamePoint(String):int
-    
-    /** This findNamePoint is for DOM Level 2 Namespaces.
+
+    /**
+     * This findNamePoint is for DOM Level 2 Namespaces.
      */
     protected int findNamePoint(String namespaceURI, String name) {
-        
-        if (nodes == null) return -1;
-        if (name == null) return -1;
-        
+
+        if (nodes == null)
+            return -1;
+        if (name == null)
+            return -1;
+
         // This is a linear search through the same nodes Vector.
         // The Vector is sorted on the DOM Level 1 nodename.
-        // The DOM Level 2 NS keys are namespaceURI and Localname, 
+        // The DOM Level 2 NS keys are namespaceURI and Localname,
         // so we must linear search thru it.
         // In addition, to get this to work with nodes without any namespace
         // (namespaceURI and localNames are both null) we then use the nodeName
         // as a seconday key.
         for (int i = 0; i < nodes.size(); i++) {
-            NodeImpl a = (NodeImpl)nodes.elementAt(i);
+            NodeImpl a = (NodeImpl) nodes.elementAt(i);
             String aNamespaceURI = a.getNamespaceURI();
             String aLocalName = a.getLocalName();
             if (namespaceURI == null) {
-              if (aNamespaceURI == null
-                  &&
-                  (name.equals(aLocalName)
-                   ||
-                   (aLocalName == null && name.equals(a.getNodeName()))))
-                return i;
+                if (aNamespaceURI == null && (name.equals(aLocalName) || 
+                        (aLocalName == null && name.equals(a.getNodeName()))))
+                    return i;
             } else {
-              if (namespaceURI.equals(aNamespaceURI)
-                  &&
-                  name.equals(aLocalName))
-                return i;
+                if (namespaceURI.equals(aNamespaceURI)
+                        && name.equals(aLocalName))
+                    return i;
             }
         }
         return -1;
     }
-    
-    // Compare 2 nodes in the map.  If a precedes b, return true, otherwise 
+
+    // Compare 2 nodes in the map. If a precedes b, return true, otherwise
     // return false
     protected boolean precedes(Node a, Node b) {
 
-       if (nodes != null) {
-          for (int i = 0; i < nodes.size(); i++) {
-              Node n = (Node)nodes.elementAt(i);
-              if (n==a) return true;
-              if (n==b) return false;
-          }
-       }
+        if (nodes != null) {
+            for (int i = 0; i < nodes.size(); i++) {
+                Node n = (Node) nodes.elementAt(i);
+                if (n == a)
+                    return true;
+                if (n == b)
+                    return false;
+            }
+        }
 
-       return false;
+        return false;
     }
 
-
     /**
-      * NON-DOM: Remove attribute at specified index.
-      */
+     * NON-DOM: Remove attribute at specified index.
+     */
     protected void removeItem(int index) {
-       if (nodes != null && index < nodes.size()){
-           nodes.removeElementAt(index);
-       }
+        if (nodes != null && index < nodes.size()) {
+            nodes.removeElementAt(index);
+        }
     }
 
-
-    protected Object getItem (int index){
-        if (nodes !=null) {
+    protected Object getItem(int index) {
+        if (nodes != null) {
             return nodes.elementAt(index);
         }
         return null;
     }
 
-    protected int addItem (Node arg) {
-    	int i = findNamePoint(arg.getNamespaceURI(), arg.getLocalName());
-    	if (i >= 0) {
-            nodes.setElementAt(arg,i);
-    	} 
-        else {
-    	    // If we can't find by namespaceURI, localName, then we find by
-    	    // nodeName so we know where to insert.
-    	    i = findNamePoint(arg.getNodeName(),0);
+    protected int addItem(Node arg) {
+        int i = findNamePoint(arg.getNamespaceURI(), arg.getLocalName());
+        if (i >= 0) {
+            nodes.setElementAt(arg, i);
+        } else {
+            // If we can't find by namespaceURI, localName, then we find by
+            // nodeName so we know where to insert.
+            i = findNamePoint(arg.getNodeName(), 0);
             if (i >= 0) {
-                nodes.insertElementAt(arg,i);
-            } 
-            else {
+                nodes.insertElementAt(arg, i);
+            } else {
                 i = -1 - i; // Insert point (may be end of list)
                 if (null == nodes) {
                     nodes = new Vector(5, 10);
@@ -414,40 +426,41 @@
                 nodes.insertElementAt(arg, i);
             }
         }
-        return i;        
+        return i;
     }
 
     /**
      * NON-DOM: copy content of this map into the specified vector
      * 
-     * @param list   Vector to copy information into.
+     * @param list
+     *            Vector to copy information into.
      * @return Returns a copy of this node named map.
      */
-    protected Vector cloneMap(Vector list){
+    protected Vector cloneMap(Vector list) {
         if (list == null) {
             list = new Vector(5, 10);
         }
         list.setSize(0);
         if (nodes != null) {
-            for (int i=0; i<nodes.size(); i++) {
+            for (int i = 0; i < nodes.size(); i++) {
                 list.insertElementAt(nodes.elementAt(i), i);
             }
         }
-        
+
         return list;
     }
-    
-     protected int getNamedItemIndex(String namespaceURI, String localName) {
+
+    protected int getNamedItemIndex(String namespaceURI, String localName) {
         return findNamePoint(namespaceURI, localName);
-     }
+    }
 
     /**
-      * NON-DOM remove all elements from this map.
-      */
-    public void removeAll (){
+     * NON-DOM remove all elements from this map.
+     */
+    public void removeAll() {
         if (nodes != null) {
             nodes.removeAllElements();
         }
     }
-    
+
 }

Modified: webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NamespaceImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NamespaceImpl.java?rev=367519&r1=367518&r2=367519&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NamespaceImpl.java (original)
+++ webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NamespaceImpl.java Mon Jan  9 23:53:43 2006
@@ -19,37 +19,45 @@
 
 public class NamespaceImpl implements OMNamespace {
 
-	private String nsUri;
-	private String nsPrefix;
-	
-	public NamespaceImpl(String uri) {
-		this.nsUri = uri;
-	}
-	
-	public NamespaceImpl(String uri, String prefix) {
-		this.nsUri = uri;
-		this.nsPrefix = prefix;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.apache.axis2.om.OMNamespace#equals(java.lang.String, java.lang.String)
-	 */
-	public boolean equals(String uri, String prefix) {
-		return (this.nsUri == uri && this.nsPrefix == prefix);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.apache.axis2.om.OMNamespace#getPrefix()
-	 */
-	public String getPrefix() {
-		return this.nsPrefix;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.apache.axis2.om.OMNamespace#getName()
-	 */
-	public String getName() {
-		return this.nsUri;
-	}
+    private String nsUri;
+
+    private String nsPrefix;
+
+    public NamespaceImpl(String uri) {
+        this.nsUri = uri;
+    }
+
+    public NamespaceImpl(String uri, String prefix) {
+        this.nsUri = uri;
+        this.nsPrefix = prefix;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.axis2.om.OMNamespace#equals(java.lang.String,
+     *      java.lang.String)
+     */
+    public boolean equals(String uri, String prefix) {
+        return (this.nsUri == uri && this.nsPrefix == prefix);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.axis2.om.OMNamespace#getPrefix()
+     */
+    public String getPrefix() {
+        return this.nsPrefix;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.axis2.om.OMNamespace#getName()
+     */
+    public String getName() {
+        return this.nsUri;
+    }
 
 }

Modified: webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NodeImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NodeImpl.java?rev=367519&r1=367518&r2=367519&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NodeImpl.java (original)
+++ webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NodeImpl.java Mon Jan  9 23:53:43 2006
@@ -35,8 +35,7 @@
 import java.io.OutputStream;
 import java.io.Writer;
 
-public abstract class NodeImpl implements Node, NodeList,OMNodeEx, Cloneable {
-
+public abstract class NodeImpl implements Node, NodeList, OMNodeEx, Cloneable {
 
     /**
      * Field builder
@@ -53,19 +52,21 @@
      */
     protected int nodeType;
 
-
-
-
     protected DocumentImpl ownerNode;
 
     // data
 
     protected short flags;
-    protected final static short OWNED        = 0x1<<1;
-    protected final static short FIRSTCHILD   = 0x1<<2;
-    protected final static short READONLY     = 0x1<<3;
-    protected final static short SPECIFIED    = 0x1<<4;
-    protected final static short NORMALIZED   = 0x1<<5;
+
+    protected final static short OWNED = 0x1 << 1;
+
+    protected final static short FIRSTCHILD = 0x1 << 2;
+
+    protected final static short READONLY = 0x1 << 3;
+
+    protected final static short SPECIFIED = 0x1 << 4;
+
+    protected final static short NORMALIZED = 0x1 << 5;
 
     //
     // Constructors
@@ -74,97 +75,92 @@
     protected NodeImpl(DocumentImpl ownerDocument) {
 
         this.ownerNode = ownerDocument;
-//        this.isOwned(true);
+        // this.isOwned(true);
 
     }
 
     protected NodeImpl() {
     }
 
-
-
     public void normalize() {
-        /* by default we do not have any children,
-             ParentNode overrides this behavior */
+        /*
+         * by default we do not have any children, ParentNode overrides this
+         * behavior
+         */
     }
 
-
     public boolean hasAttributes() {
-        return false;           // overridden in ElementImpl
+        return false; // overridden in ElementImpl
     }
 
-
     public boolean hasChildNodes() {
-        return false; //Override in ParentNode
+        return false; // Override in ParentNode
     }
 
-
     public String getLocalName() {
-        return null; //Override in AttrImpl and ElementImpl
+        return null; // Override in AttrImpl and ElementImpl
     }
 
     public String getNamespaceURI() {
-        return null; //Override in AttrImpl and ElementImpl
+        return null; // Override in AttrImpl and ElementImpl
     }
 
-
-
-
     public String getNodeValue() throws DOMException {
         return null;
     }
 
-
     /*
-      * Overidden in ElementImpl and AttrImpl.
-      */
+     * Overidden in ElementImpl and AttrImpl.
+     */
     public String getPrefix() {
         return null;
     }
 
     public void setNodeValue(String arg0) throws DOMException {
-        //Don't do anything, to be overridden in SOME Child classes
+        // Don't do anything, to be overridden in SOME Child classes
     }
 
-
     public void setPrefix(String prefix) throws DOMException {
-        throw new DOMException(DOMException.NAMESPACE_ERR,
-              DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN,
-                 "NAMESPACE_ERR", null));
+        throw new DOMException(DOMException.NAMESPACE_ERR, DOMMessageFormatter
+                .formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NAMESPACE_ERR",
+                        null));
     }
 
     /**
-     * Finds the document that this Node belongs to (the document in
-     * whose context the Node was created). The Node may or may not
+     * Finds the document that this Node belongs to (the document in whose
+     * context the Node was created). The Node may or may not
      */
     public Document getOwnerDocument() {
         return (Document) this.ownerNode;
     }
 
     /**
-     * Returns the collection of attributes associated with this node,
-     * or null if none. At this writing, Element is the only type of node
-     * which will ever have attributes.
-     *
+     * Returns the collection of attributes associated with this node, or null
+     * if none. At this writing, Element is the only type of node which will
+     * ever have attributes.
+     * 
      * @see ElementImpl
      */
     public NamedNodeMap getAttributes() {
         return null; // overridden in ElementImpl
     }
 
-    /** Gets the first child of this Node, or null if none.
+    /**
+     * Gets the first child of this Node, or null if none.
      * <P>
      * By default we do not have any children, ParentNode overrides this.
+     * 
      * @see ParentNode
      */
     public Node getFirstChild() {
         return null;
     }
 
-
-    /** Gets the last child of this Node, or null if none.
+    /**
+     * Gets the last child of this Node, or null if none.
      * <P>
      * By default we do not have any children, ParentNode overrides this.
+     * 
      * @see ParentNode
      */
     public Node getLastChild() {
@@ -173,13 +169,12 @@
 
     /** Returns the next child of this node's parent, or null if none. */
     public Node getNextSibling() {
-        return null;            // default behavior, overriden in ChildNode
+        return null; // default behavior, overriden in ChildNode
     }
 
-
     public Node getParentNode() {
-        return null;            // overriden by ChildNode
-        //Document, DocumentFragment, and Attribute will never have parents.
+        return null; // overriden by ChildNode
+        // Document, DocumentFragment, and Attribute will never have parents.
     }
 
     /*
@@ -191,28 +186,28 @@
 
     /** Returns the previous child of this node's parent, or null if none. */
     public Node getPreviousSibling() {
-        return null;            // default behavior, overriden in ChildNode
+        return null; // default behavior, overriden in ChildNode
     }
 
-//    public Node cloneNode(boolean deep) {
-//    	if(this instanceof OMElement) {
-//    		return (Node)((OMElement)this).cloneOMElement();
-//    	} else if(this instanceof OMText ){
-//    		return ((TextImpl)this).cloneText();
-//    	} else {
-//    		throw new UnsupportedOperationException("Only elements can be cloned right now");
-//    	}
-//    }
-//    
+    // public Node cloneNode(boolean deep) {
+    // if(this instanceof OMElement) {
+    // return (Node)((OMElement)this).cloneOMElement();
+    // } else if(this instanceof OMText ){
+    // return ((TextImpl)this).cloneText();
+    // } else {
+    // throw new UnsupportedOperationException("Only elements can be cloned
+    // right now");
+    // }
+    // }
+    //    
     public Node cloneNode(boolean deep) {
         NodeImpl newnode;
         try {
-            newnode = (NodeImpl)clone();
-        }
-        catch (CloneNotSupportedException e) {
+            newnode = (NodeImpl) clone();
+        } catch (CloneNotSupportedException e) {
             throw new RuntimeException("**Internal Error**" + e);
         }
-        newnode.ownerNode      = this.ownerNode;
+        newnode.ownerNode = this.ownerNode;
         newnode.isOwned(false);
 
         newnode.isReadonly(false);
@@ -220,37 +215,34 @@
         return newnode;
     }
 
-
     /*
-      * (non-Javadoc)
-      * 
-      * @see org.w3c.dom.Node#getChildNodes()
-      */
+     * (non-Javadoc)
+     * 
+     * @see org.w3c.dom.Node#getChildNodes()
+     */
     public NodeList getChildNodes() {
         return this;
     }
 
-    public boolean isSupported(String feature, String version)
-    {
+    public boolean isSupported(String feature, String version) {
         throw new UnsupportedOperationException();
-        //TODO
+        // TODO
     }
 
-
     /*
-      * (non-Javadoc)
-      * 
-      * @see org.w3c.dom.Node#appendChild(org.w3c.dom.Node)
-      */
+     * (non-Javadoc)
+     * 
+     * @see org.w3c.dom.Node#appendChild(org.w3c.dom.Node)
+     */
     public Node appendChild(Node newChild) throws DOMException {
         return insertBefore(newChild, null);
     }
 
     /*
-      * (non-Javadoc)
-      * 
-      * @see org.w3c.dom.Node#removeChild(org.w3c.dom.Node)
-      */
+     * (non-Javadoc)
+     * 
+     * @see org.w3c.dom.Node#removeChild(org.w3c.dom.Node)
+     */
     public Node removeChild(Node oldChild) throws DOMException {
         throw new DOMException(DOMException.NOT_FOUND_ERR, DOMMessageFormatter
                 .formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_FOUND_ERR",
@@ -258,12 +250,12 @@
     }
 
     /*
-      * (non-Javadoc)
-      * 
-      * @see org.w3c.dom.Node#insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)
-      */
+     * (non-Javadoc)
+     * 
+     * @see org.w3c.dom.Node#insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)
+     */
     public Node insertBefore(Node newChild, Node refChild) throws DOMException {
-        //Overridden in ParentNode
+        // Overridden in ParentNode
         throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
                 DOMMessageFormatter.formatMessage(
                         DOMMessageFormatter.DOM_DOMAIN,
@@ -272,10 +264,10 @@
     }
 
     /*
-      * (non-Javadoc)
-      * 
-      * @see org.w3c.dom.Node#replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)
-      */
+     * (non-Javadoc)
+     * 
+     * @see org.w3c.dom.Node#replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)
+     */
     public Node replaceChild(Node newChild, Node oldChild) throws DOMException {
         throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
                 DOMMessageFormatter.formatMessage(
@@ -283,8 +275,6 @@
                         "HIERARCHY_REQUEST_ERR", null));
     }
 
-
-
     //
     // NodeList methods
     //
@@ -293,8 +283,9 @@
      * NodeList method: Returns the number of immediate children of this node.
      * <P>
      * By default we do not have any children, ParentNode overrides this.
+     * 
      * @see ParentNode
-     *
+     * 
      * @return Returns int.
      */
     public int getLength() {
@@ -302,12 +293,13 @@
     }
 
     /**
-     * NodeList method: Returns the Nth immediate child of this node, or
-     * null if the index is out of bounds.
+     * NodeList method: Returns the Nth immediate child of this node, or null if
+     * the index is out of bounds.
      * <P>
      * By default we do not have any children, ParentNode overrides this.
+     * 
      * @see ParentNode
-     *
+     * 
      * @return Returns org.w3c.dom.Node
      * @param index
      */
@@ -315,13 +307,9 @@
         return null;
     }
 
-
-
-
     /*
-    * Flags setters and getters
-    */
-
+     * Flags setters and getters
+     */
 
     final boolean isOwned() {
         return (flags & OWNED) != 0;
@@ -364,24 +352,28 @@
         if (!value && isNormalized() && ownerNode != null) {
             ownerNode.isNormalized(false);
         }
-        flags = (short) (value ?  flags | NORMALIZED : flags & ~NORMALIZED);
+        flags = (short) (value ? flags | NORMALIZED : flags & ~NORMALIZED);
     }
 
-    ///
-    ///OM Methods
-    ///
+    // /
+    // /OM Methods
+    // /
 
-    /* (non-Javadoc)
-      * @see org.apache.axis.om.OMNode#getParent()
-      */
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.axis.om.OMNode#getParent()
+     */
     public OMContainer getParent() throws OMException {
         return null; // overriden by ChildNode
-        //Document, DocumentFragment, and Attribute will never have parents.
+        // Document, DocumentFragment, and Attribute will never have parents.
     }
 
-    /* (non-Javadoc)
-      * @see org.apache.axis.om.OMNode#isComplete()
-      */
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.axis.om.OMNode#isComplete()
+     */
     public boolean isComplete() {
         return this.done;
     }
@@ -394,15 +386,19 @@
     /**
      * There no concept of caching in this OM-DOM implementation.
      */
-    public void serializeWithCache(OMOutputImpl omOutput) throws XMLStreamException {
+    public void serializeWithCache(OMOutputImpl omOutput)
+            throws XMLStreamException {
         this.serialize(omOutput);
     }
 
-    /* (non-Javadoc)
-      * @see org.apache.axis.om.OMNode#insertSiblingAfter(org.apache.axis.om.OMNode)
-      */
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.axis.om.OMNode#insertSiblingAfter
+     * (org.apache.axis.om.OMNode)
+     */
     public void insertSiblingAfter(OMNode sibling) throws OMException {
-        //Overridden in ChildNode
+        // Overridden in ChildNode
         throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
                 DOMMessageFormatter.formatMessage(
                         DOMMessageFormatter.DOM_DOMAIN,
@@ -410,11 +406,14 @@
 
     }
 
-    /* (non-Javadoc)
-      * @see org.apache.axis.om.OMNode#insertSiblingBefore(org.apache.axis.om.OMNode)
-      */
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.axis.om.OMNode#insertSiblingBefore
+     * (org.apache.axis.om.OMNode)
+     */
     public void insertSiblingBefore(OMNode sibling) throws OMException {
-        //Overridden in ChildNode
+        // Overridden in ChildNode
         throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
                 DOMMessageFormatter.formatMessage(
                         DOMMessageFormatter.DOM_DOMAIN,
@@ -422,8 +421,6 @@
 
     }
 
-
-
     /**
      * Default behavior returns null, overriden in ChildNode.
      */
@@ -462,6 +459,7 @@
 
     /**
      * Sets the owner document.
+     * 
      * @param document
      */
     protected void setOwnerDocument(DocumentImpl document) {
@@ -475,7 +473,8 @@
         omOutput.flush();
     }
 
-    public void serializeAndConsume(XMLStreamWriter xmlWriter) throws XMLStreamException {
+    public void serializeAndConsume(XMLStreamWriter xmlWriter)
+            throws XMLStreamException {
         OMOutputImpl omOutput = new OMOutputImpl(xmlWriter);
         serializeAndConsume(omOutput);
         omOutput.flush();
@@ -483,12 +482,12 @@
 
     public OMNode detach() {
         throw new OMException(
-                    "Elements that doesn't have a parent can not be detached");
+                "Elements that doesn't have a parent can not be detached");
     }
 
     /*
-      * DOM-Level 3 methods 
-      */
+     * DOM-Level 3 methods
+     */
 
     public String getBaseURI() {
         // TODO TODO
@@ -558,35 +557,44 @@
         serialize(XMLOutputFactory.newInstance().createXMLStreamWriter(writer));
     }
 
-    public void serializeAndConsume(OutputStream output) throws XMLStreamException {
-        serializeAndConsume(XMLOutputFactory.newInstance().createXMLStreamWriter(output));
+    public void serializeAndConsume(OutputStream output)
+            throws XMLStreamException {
+        serializeAndConsume(XMLOutputFactory.newInstance()
+                .createXMLStreamWriter(output));
     }
 
     public void serializeAndConsume(Writer writer) throws XMLStreamException {
-        serializeAndConsume(XMLOutputFactory.newInstance().createXMLStreamWriter(writer));
+        serializeAndConsume(XMLOutputFactory.newInstance()
+                .createXMLStreamWriter(writer));
     }
 
-    public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {    
-        OMOutputImpl omOutput = new  OMOutputImpl(output, format);
+    public void serialize(OutputStream output, OMOutputFormat format)
+            throws XMLStreamException {
+        OMOutputImpl omOutput = new OMOutputImpl(output, format);
         serialize(omOutput);
         omOutput.flush();
     }
 
-    public void serialize(Writer writer, OMOutputFormat format) throws XMLStreamException {
-        OMOutputImpl omOutput = new  OMOutputImpl(XMLOutputFactory.newInstance().createXMLStreamWriter(writer));
+    public void serialize(Writer writer, OMOutputFormat format)
+            throws XMLStreamException {
+        OMOutputImpl omOutput = new OMOutputImpl(XMLOutputFactory.newInstance()
+                .createXMLStreamWriter(writer));
         omOutput.setOutputFormat(format);
         serialize(omOutput);
         omOutput.flush();
     }
 
-    public void serializeAndConsume(OutputStream output, OMOutputFormat format) throws XMLStreamException {
-        OMOutputImpl omOutput = new  OMOutputImpl(output, format);
+    public void serializeAndConsume(OutputStream output, OMOutputFormat format)
+            throws XMLStreamException {
+        OMOutputImpl omOutput = new OMOutputImpl(output, format);
         serializeAndConsume(omOutput);
         omOutput.flush();
     }
 
-    public void serializeAndConsume(Writer writer, OMOutputFormat format) throws XMLStreamException {
-        OMOutputImpl omOutput = new  OMOutputImpl(XMLOutputFactory.newInstance().createXMLStreamWriter(writer));
+    public void serializeAndConsume(Writer writer, OMOutputFormat format)
+            throws XMLStreamException {
+        OMOutputImpl omOutput = new OMOutputImpl(XMLOutputFactory.newInstance()
+                .createXMLStreamWriter(writer));
         omOutput.setOutputFormat(format);
         serializeAndConsume(omOutput);
         omOutput.flush();

Modified: webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NodeListImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NodeListImpl.java?rev=367519&r1=367518&r2=367519&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NodeListImpl.java (original)
+++ webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/NodeListImpl.java Mon Jan  9 23:53:43 2006
@@ -26,87 +26,106 @@
 /**
  * Implementation of org.w3c.dom.NodeList
  */
-public class NodeListImpl implements NodeList  {
-	
-    protected NodeImpl rootNode; 
-    protected String tagName;  
+public class NodeListImpl implements NodeList {
+
+    protected NodeImpl rootNode;
+
+    protected String tagName;
+
     protected Vector nodes;
-    
+
     protected String nsName;
+
     protected boolean enableNS = false;
-	
-	
+
     /** Constructor. */
     public NodeListImpl(NodeImpl rootNode, String tagName) {
         this.rootNode = rootNode;
-        this.tagName  = (tagName != null && !tagName.equals("")) ? tagName : null;
+        this.tagName = (tagName != null && !tagName.equals("")) ? tagName
+                : null;
         nodes = new Vector();
-    }  
+    }
 
     /** Constructor for Namespace support. */
-    public NodeListImpl(NodeImpl rootNode,
-                            String namespaceURI, String localName) {
+    public NodeListImpl(NodeImpl rootNode, String namespaceURI, 
+                                                    String localName) {
         this(rootNode, localName);
-        this.nsName = (namespaceURI != null && !namespaceURI.equals("")) ? namespaceURI : null;
-        if(this.nsName != null) {
-        	enableNS = true;
+        this.nsName = (namespaceURI != null && !namespaceURI.equals("")) 
+                       ? namespaceURI
+                       : null;
+        if (this.nsName != null) {
+            enableNS = true;
+        }
+    }
+
+    /**
+     * Returns the number of nodes.
+     * 
+     * @see org.w3c.dom.NodeList#getLength()
+     */
+    public int getLength() {
+        Iterator children;
+        if (this.tagName == null) {
+            children = ((OMContainerEx) rootNode).getChildren();
+        } else if (!enableNS) {
+            children = ((OMContainerEx) rootNode)
+                    .getChildrenWithName(new QName(this.tagName));
+        } else {
+            if (DOMUtil.getPrefix(this.tagName) != null) {
+                children = ((OMContainerEx) rootNode)
+                        .getChildrenWithName(new QName(this.nsName, DOMUtil
+                                .getLocalName(this.tagName), DOMUtil
+                                .getPrefix(this.tagName)));
+            } else {
+                children = ((OMContainerEx) rootNode)
+                        .getChildrenWithName(new QName(this.nsName, DOMUtil
+                                .getLocalName(this.tagName)));
+            }
         }
+        int count = 0;
+        while (children.hasNext()) {
+            count++;
+            children.next();
+        }
+        return count;
     }
 
-	/**
-	 * Returns the number of nodes.
-	 * @see org.w3c.dom.NodeList#getLength()
-	 */
-	public int getLength() {
-		Iterator children;
-		if(this.tagName == null) {
-			children = ((OMContainerEx)rootNode).getChildren();
-		} else if(!enableNS) {
-			children = ((OMContainerEx)rootNode).getChildrenWithName(new QName(this.tagName));
-		} else {
-			if(DOMUtil.getPrefix(this.tagName) != null) {
-				children = ((OMContainerEx)rootNode).getChildrenWithName(new QName(this.nsName, DOMUtil.getLocalName(this.tagName), DOMUtil.getPrefix(this.tagName)));
-			} else {
-				children = ((OMContainerEx)rootNode).getChildrenWithName(new QName(this.nsName, DOMUtil.getLocalName(this.tagName)));
-			}
-		}
-		int count  = 0;
-		while (children.hasNext()) {
-			count++;
-			children.next();
-		}
-		return count;
-	}
-
-	/**
-	 * Returns the node at the given index.
-	 * Returns null if the index is invalid. 
-	 * @see org.w3c.dom.NodeList#item(int)
-	 */
-	public Node item(int index) {
-		Iterator children;
-
-		if(this.tagName == null) {
-			children = ((OMContainerEx)rootNode).getChildren();
-		} else if(!enableNS) {
-			children = ((OMContainerEx)rootNode).getChildrenWithName(new QName(this.tagName));
-		} else {
-			if(DOMUtil.getPrefix(this.tagName) != null) {
-				children = ((OMContainerEx)rootNode).getChildrenWithName(new QName(this.nsName, DOMUtil.getLocalName(this.tagName), DOMUtil.getPrefix(this.tagName)));
-			} else {
-				children = ((OMContainerEx)rootNode).getChildrenWithName(new QName(this.nsName, DOMUtil.getLocalName(this.tagName)));
-			}
-		}
-
-		int count  = 0;
-		while (children.hasNext()) {
-			if(count == index) {
-				return (Node)children.next();
-			} else {
-				children.next();
-			}
-			count++;
-		}
-		return null;
-	}
+    /**
+     * Returns the node at the given index. Returns null if the index is
+     * invalid.
+     * 
+     * @see org.w3c.dom.NodeList#item(int)
+     */
+    public Node item(int index) {
+        Iterator children;
+
+        if (this.tagName == null) {
+            children = ((OMContainerEx) rootNode).getChildren();
+        } else if (!enableNS) {
+            children = ((OMContainerEx) rootNode)
+                    .getChildrenWithName(new QName(this.tagName));
+        } else {
+            if (DOMUtil.getPrefix(this.tagName) != null) {
+                children = ((OMContainerEx) rootNode)
+                        .getChildrenWithName(new QName(this.nsName, DOMUtil
+                                .getLocalName(this.tagName), DOMUtil
+                                .getPrefix(this.tagName)));
+            } else {
+                children = ((OMContainerEx) rootNode)
+                        .getChildrenWithName(new QName(this.nsName, DOMUtil
+                                .getLocalName(this.tagName)));
+            }
+        }
+
+        int count = 0;
+        while (children.hasNext()) {
+            if (count == index) {
+                return (Node) children.next();
+            } else {
+                children.next();
+            }
+            count++;
+        }
+        return null;
+    }
 }

Modified: webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/ParentNode.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/ParentNode.java?rev=367519&r1=367518&r2=367519&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/ParentNode.java (original)
+++ webservices/axis2/trunk/java/modules/doom/src/org/apache/axis2/om/impl/dom/ParentNode.java Mon Jan  9 23:53:43 2006
@@ -32,413 +32,414 @@
 
 public abstract class ParentNode extends ChildNode implements OMContainerEx {
 
+    protected ChildNode firstChild;
 
-	protected ChildNode firstChild;
-	
-	protected ChildNode lastChild;
-	
-
-	
-	/**
-	 * @param ownerDocument
-	 */
-	protected ParentNode(DocumentImpl ownerDocument) {
-		super(ownerDocument);
-	}
-	
-	protected ParentNode() {
-	}
-	
-	// /
-	// /OMContainer methods
-	///
-	
-	public void addChild(OMNode omNode) {
-		this.appendChild((Node)omNode);
-	}
-	
-	
-	public void buildNext() {
-		if(!this.done)
-			builder.next();
-	}
-	
-	public Iterator getChildren() {
-		return new OMChildrenIterator(this.firstChild);
-	}
-	
-	/**
-	 * Returns an iterator of child nodes having a given qname.
-	 * @see org.apache.axis2.om.OMContainer#getChildrenWithName(javax.xml.namespace.QName)
-	 */
-	public Iterator getChildrenWithName(QName elementQName) throws OMException {
-		return new OMChildrenQNameIterator(getFirstOMChild(),
-                elementQName);
-	}
-	
-	/**
-	 * Returns the first OMElement child node.
-	 * @see org.apache.axis2.om.OMContainer#getFirstChildWithName(javax.xml.namespace.QName)
-	 */
-	public OMElement getFirstChildWithName(QName elementQName)
-			throws OMException {
-		Iterator children = new OMChildrenQNameIterator(getFirstOMChild(),
+    protected ChildNode lastChild;
+
+    /**
+     * @param ownerDocument
+     */
+    protected ParentNode(DocumentImpl ownerDocument) {
+        super(ownerDocument);
+    }
+
+    protected ParentNode() {
+    }
+
+    // /
+    // /OMContainer methods
+    // /
+
+    public void addChild(OMNode omNode) {
+        this.appendChild((Node) omNode);
+    }
+
+    public void buildNext() {
+        if (!this.done)
+            builder.next();
+    }
+
+    public Iterator getChildren() {
+        return new OMChildrenIterator(this.firstChild);
+    }
+
+    /**
+     * Returns an iterator of child nodes having a given qname.
+     * 
+     * @see org.apache.axis2.om.OMContainer#getChildrenWithName
+     * (javax.xml.namespace.QName)
+     */
+    public Iterator getChildrenWithName(QName elementQName) throws OMException {
+        return new OMChildrenQNameIterator(getFirstOMChild(), elementQName);
+    }
+
+    /**
+     * Returns the first OMElement child node.
+     * 
+     * @see org.apache.axis2.om.OMContainer#getFirstChildWithName
+     * (javax.xml.namespace.QName)
+     */
+    public OMElement getFirstChildWithName(QName elementQName)
+            throws OMException {
+        Iterator children = new OMChildrenQNameIterator(getFirstOMChild(),
                 elementQName);
-		while (children.hasNext()) {
-			OMNode node = (OMNode) children.next();
-			
-			//Return the first OMElement node that is found
-			if(node instanceof OMElement) {
-				return (OMElement)node;
-			}
-		}
-		return null;
-	}
-	
-	public OMNode getFirstOMChild() {
+        while (children.hasNext()) {
+            OMNode node = (OMNode) children.next();
+
+            // Return the first OMElement node that is found
+            if (node instanceof OMElement) {
+                return (OMElement) node;
+            }
+        }
+        return null;
+    }
+
+    public OMNode getFirstOMChild() {
         while ((firstChild == null) && !done) {
             buildNext();
         }
         return firstChild;
-	}
-	
-	public void setFirstChild(OMNode omNode) {
+    }
+
+    public void setFirstChild(OMNode omNode) {
         if (firstChild != null) {
             ((OMNodeEx) omNode).setParent(this);
         }
-        this.firstChild = (ChildNode)omNode;
-	}
-	
-	
-	///
-	///DOM Node methods
-	///	
-	
-	public NodeList getChildNodes() {
-		if (!this.done) {
-			this.build();
-		}
-		return new NodeListImpl(this, null,null);
-	}
-	
-	public Node getFirstChild() {
-		return (Node)this.getFirstOMChild();
-	}
-	
-	public Node getLastChild() {
-		if(!this.done) {
-			this.build();
-		}
-		return this.lastChild;
-	}
-			
-	public boolean hasChildNodes() {
+        this.firstChild = (ChildNode) omNode;
+    }
+
+    // /
+    // /DOM Node methods
+    // /
+
+    public NodeList getChildNodes() {
+        if (!this.done) {
+            this.build();
+        }
+        return new NodeListImpl(this, null, null);
+    }
+
+    public Node getFirstChild() {
+        return (Node) this.getFirstOMChild();
+    }
+
+    public Node getLastChild() {
+        if (!this.done) {
+            this.build();
+        }
+        return this.lastChild;
+    }
+
+    public boolean hasChildNodes() {
         while ((firstChild == null) && !done) {
             buildNext();
         }
-		return this.firstChild != null;
-	}
-	
-	/**
-	 * Inserts newChild before the refChild.
-	 * If the refChild is null then the newChild is made the last child.  
-	 */
-	public Node insertBefore(Node newChild, Node refChild) throws DOMException {
-	
-		ChildNode newDomChild = (ChildNode)newChild;
-		ChildNode refDomChild = (ChildNode)refChild;
-		
-		if(this == newChild || !isAncestor(newChild)) {
-			throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
-					DOMMessageFormatter.formatMessage(
-							DOMMessageFormatter.DOM_DOMAIN,
-							"HIERARCHY_REQUEST_ERR", null));
-		}
-		
-		if(!(this instanceof Document) && !(this.ownerNode == newDomChild.getOwnerDocument())) {
-			throw new DOMException(DOMException.WRONG_DOCUMENT_ERR,
-					DOMMessageFormatter.formatMessage(
-							DOMMessageFormatter.DOM_DOMAIN,
-							"WRONG_DOCUMENT_ERR", null));			
-		}
-		
-		if(this.isReadonly()) {
-			throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
-					DOMMessageFormatter.formatMessage(
-							DOMMessageFormatter.DOM_DOMAIN,
-							"NO_MODIFICATION_ALLOWED_ERR", null));
-		}
-		
-		if(this instanceof Document) {
-			if(((DocumentImpl)this).documentElement != null && !(newDomChild instanceof CommentImpl)) {
-				//Throw exception since there cannot be two document elements
-				throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
-						DOMMessageFormatter.formatMessage(
-								DOMMessageFormatter.DOM_DOMAIN,
-								"HIERARCHY_REQUEST_ERR", null));
-			} else if(newDomChild instanceof ElementImpl) {
-				if(newDomChild.parentNode == null) {
-					newDomChild.parentNode = this;
-				}
-				//set the document element
-				((DocumentImpl)this).documentElement = (ElementImpl)newDomChild;
-			}
-		}
-		
-		if(refChild == null) { //Append the child to the end of the list
-			//if there are no children 
-			if(this.lastChild == null && firstChild == null ) {
-				this.lastChild = newDomChild;
-				this.firstChild = newDomChild;
-				this.firstChild.isFirstChild(true);
-				newDomChild.setParent(this);
-			} else {
-				this.lastChild.nextSibling = newDomChild;
-				newDomChild.previousSibling = this.lastChild;
-			
-				this.lastChild = newDomChild;
-			}
-			if(newDomChild.parentNode == null) {
-				newDomChild.parentNode = this;
-			}
-			return newChild;
-		} else {
-			Iterator children = this.getChildren(); 
-			boolean found = false;
-			while(children.hasNext()) {
-				ChildNode tempNode = (ChildNode)children.next();
-				
-				if(tempNode.equals(refChild)) { 
-					//RefChild found
-					if(tempNode.isFirstChild()) { //If the refChild is the first child
-						
-						if(newChild instanceof DocumentFragmentimpl) {
-							//The new child is a DocumentFragment
-							DocumentFragmentimpl docFrag = (DocumentFragmentimpl)newChild;
-							this.firstChild = docFrag.firstChild;
-							docFrag.lastChild.nextSibling = refDomChild;
-							refDomChild.previousSibling = docFrag.lastChild.nextSibling; 
-							
-						} else {
-							
-							//Make the newNode the first Child
-							this.firstChild = newDomChild;
-							
-							newDomChild.nextSibling = refDomChild;
-							refDomChild.previousSibling = newDomChild;
-							
-							this.firstChild.isFirstChild(true);
-							refDomChild.isFirstChild(false);
-							newDomChild.previousSibling = null; //Just to be sure :-)
-							
-						}
-					} else { //If the refChild is not the fist child
-						ChildNode previousNode = refDomChild.previousSibling;
-						
-						if(newChild instanceof DocumentFragmentimpl) {
-							//the newChild is a document fragment
-							DocumentFragmentimpl docFrag = (DocumentFragmentimpl)newChild;
-							
-							previousNode.nextSibling = docFrag.firstChild;
-							docFrag.firstChild.previousSibling = previousNode;
-							
-							docFrag.lastChild.nextSibling = refDomChild;
-							refDomChild.previousSibling = docFrag.lastChild;
-						} else {
-							
-							previousNode.nextSibling = newDomChild;
-							newDomChild.previousSibling = previousNode;
-							
-							newDomChild.nextSibling = refDomChild;
-							refDomChild.previousSibling = newDomChild;
-						}
-						
-					}
-					found = true;
-					break;
-				}
-			}
-			
-			if(!found) {
-				throw new DOMException(DOMException.NOT_FOUND_ERR,
-						DOMMessageFormatter.formatMessage(
-								DOMMessageFormatter.DOM_DOMAIN,
-								"NOT_FOUND_ERR", null));
-			}
-			
-			if(newDomChild.parentNode == null) {
-				newDomChild.parentNode = this;
-			}
-			
-			return newChild;
-		}
-	}
-	
-	/**
-	 * Replaces the oldChild with the newChild.
-	 */
-	public Node replaceChild(Node newChild, Node oldChild) throws DOMException {
-		ChildNode newDomChild = (ChildNode)newChild;
-		ChildNode oldDomChild = (ChildNode)oldChild;
-		
-		if(this == newChild || !isAncestor(newChild)) {
-				throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
-						DOMMessageFormatter.formatMessage(
-								DOMMessageFormatter.DOM_DOMAIN,
-								"HIERARCHY_REQUEST_ERR", null));
-		}
-		
-		if(!this.ownerNode.equals(newDomChild.ownerNode)) {
-			throw new DOMException(DOMException.WRONG_DOCUMENT_ERR,
-					DOMMessageFormatter.formatMessage(
-							DOMMessageFormatter.DOM_DOMAIN,
-							"WRONG_DOCUMENT_ERR", null));			
-		}
-		
-		if (this.isReadonly()) { 
-			throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
-					DOMMessageFormatter.formatMessage(
-							DOMMessageFormatter.DOM_DOMAIN,
-							"NO_MODIFICATION_ALLOWED_ERR", null));
-		}
-		
-		Iterator children = this.getChildren(); 
-		boolean found = false;
-		while(children.hasNext()) {
-			ChildNode tempNode = (ChildNode)children.next();
-			if(tempNode.equals(oldChild)) {
-				if(newChild instanceof DocumentFragmentimpl) {
-					DocumentFragmentimpl docFrag = (DocumentFragmentimpl)newDomChild;
-					ChildNode child = (ChildNode)docFrag.getFirstChild();
-					child.parentNode = this;
-					this.replaceChild(child, oldChild);
-				} else {
-					if(oldDomChild.isFirstChild()) {
-						oldDomChild.detach();
-						this.addChild(newDomChild);
-					} else {
-						newDomChild.nextSibling = oldDomChild.nextSibling;
-						newDomChild.previousSibling = oldDomChild.previousSibling;
-						
-						oldDomChild.previousSibling.nextSibling = newDomChild;
-						
-						//If the old child is not the last
-						if(oldDomChild.nextSibling != null) {
-							oldDomChild.nextSibling.previousSibling = newDomChild;
-						} else {
-							this.lastChild = newDomChild;
-						}
-						
-						if(newDomChild.parentNode == null) {
-							newDomChild.parentNode = this;
-						}
-					}
-				}
-				found = true;
-				
-				//remove the old child's references to this tree
-				oldDomChild.nextSibling = null;
-				oldDomChild.previousSibling = null;
-				oldDomChild.parentNode = null;
-			}	
-		}
-		
-		
-		if(!found) 
-			throw new DOMException(DOMException.NOT_FOUND_ERR,
-					DOMMessageFormatter.formatMessage(
-							DOMMessageFormatter.DOM_DOMAIN,
-							"NOT_FOUND_ERR", null));
-		
-		return oldChild;
-	}
-	
-	
-	/**
-	 * Removes the given child from the DOM Tree.
-	 */
-	public Node removeChild(Node oldChild) throws DOMException {
-		//Check if this node is readonly
-		if(this.isReadonly()) {
-			throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
-					DOMMessageFormatter.formatMessage(
-							DOMMessageFormatter.DOM_DOMAIN,
-							"NO_MODIFICATION_ALLOWED_ERR", null));
-		}
-		
-		//Check if the Child is there
-		Iterator children = this.getChildren();
-		boolean childFound = false;
-		while(children.hasNext()) {
-			ChildNode tempNode = (ChildNode)children.next();
-			if(tempNode.equals(oldChild)) {
-				
-				if(tempNode.isFirstChild()) {
-					//If this is the first child
-					this.firstChild = null;
-					this.lastChild = null;
-					tempNode.parentNode = null;
-				} else if (this.lastChild == tempNode) {
-					//not the first child, but the last child 
-					ChildNode prevSib = tempNode.previousSibling;
-					prevSib.nextSibling = null;
-					tempNode.parentNode = null;
-					tempNode.previousSibling = null;
-				} else {
-	
-					ChildNode oldDomChild = (ChildNode)oldChild;
-					ChildNode privChild = oldDomChild.previousSibling;
-					
-					privChild.nextSibling = oldDomChild.nextSibling;
-					oldDomChild.nextSibling.previousSibling = privChild;
-					
-					//Remove old child's references to this tree
-					oldDomChild.nextSibling = null;
-					oldDomChild.previousSibling = null;
-				}
-				//Child found
-				childFound = true;
-			}
-		}
-		
-		if(!childFound) 
-			throw new DOMException(DOMException.NOT_FOUND_ERR,
-					DOMMessageFormatter.formatMessage(
-							DOMMessageFormatter.DOM_DOMAIN,
-							"NOT_FOUND_ERR", null));
-		
-		return oldChild;
-	}
-
-	
-	
-	private boolean isAncestor(Node newNode) {
-		
-		//TODO isAncestor
-		return true;
-	}
-	
+        return this.firstChild != null;
+    }
+
+    /**
+     * Inserts newChild before the refChild. If the refChild is null then the
+     * newChild is made the last child.
+     */
+    public Node insertBefore(Node newChild, Node refChild) throws DOMException {
+
+        ChildNode newDomChild = (ChildNode) newChild;
+        ChildNode refDomChild = (ChildNode) refChild;
+
+        if (this == newChild || !isAncestor(newChild)) {
+            throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
+                    DOMMessageFormatter.formatMessage(
+                            DOMMessageFormatter.DOM_DOMAIN,
+                            "HIERARCHY_REQUEST_ERR", null));
+        }
+
+        if (!(this instanceof Document)
+                && !(this.ownerNode == newDomChild.getOwnerDocument())) {
+            throw new DOMException(DOMException.WRONG_DOCUMENT_ERR,
+                    DOMMessageFormatter.formatMessage(
+                            DOMMessageFormatter.DOM_DOMAIN,
+                            "WRONG_DOCUMENT_ERR", null));
+        }
+
+        if (this.isReadonly()) {
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    DOMMessageFormatter.formatMessage(
+                            DOMMessageFormatter.DOM_DOMAIN,
+                            "NO_MODIFICATION_ALLOWED_ERR", null));
+        }
+
+        if (this instanceof Document) {
+            if (((DocumentImpl) this).documentElement != null
+                    && !(newDomChild instanceof CommentImpl)) {
+                // Throw exception since there cannot be two document elements
+                throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
+                        DOMMessageFormatter.formatMessage(
+                                DOMMessageFormatter.DOM_DOMAIN,
+                                "HIERARCHY_REQUEST_ERR", null));
+            } else if (newDomChild instanceof ElementImpl) {
+                if (newDomChild.parentNode == null) {
+                    newDomChild.parentNode = this;
+                }
+                // set the document element
+                ((DocumentImpl) this).documentElement = (ElementImpl) newDomChild;
+            }
+        }
+
+        if (refChild == null) { // Append the child to the end of the list
+            // if there are no children
+            if (this.lastChild == null && firstChild == null) {
+                this.lastChild = newDomChild;
+                this.firstChild = newDomChild;
+                this.firstChild.isFirstChild(true);
+                newDomChild.setParent(this);
+            } else {
+                this.lastChild.nextSibling = newDomChild;
+                newDomChild.previousSibling = this.lastChild;
+
+                this.lastChild = newDomChild;
+            }
+            if (newDomChild.parentNode == null) {
+                newDomChild.parentNode = this;
+            }
+            return newChild;
+        } else {
+            Iterator children = this.getChildren();
+            boolean found = false;
+            while (children.hasNext()) {
+                ChildNode tempNode = (ChildNode) children.next();
+
+                if (tempNode.equals(refChild)) {
+                    // RefChild found
+                    if (tempNode.isFirstChild()) { // If the refChild is the
+                                                    // first child
+
+                        if (newChild instanceof DocumentFragmentimpl) {
+                            // The new child is a DocumentFragment
+                            DocumentFragmentimpl docFrag = 
+                                                (DocumentFragmentimpl) newChild;
+                            this.firstChild = docFrag.firstChild;
+                            docFrag.lastChild.nextSibling = refDomChild;
+                            refDomChild.previousSibling = 
+                                                docFrag.lastChild.nextSibling;
+
+                        } else {
+
+                            // Make the newNode the first Child
+                            this.firstChild = newDomChild;
+
+                            newDomChild.nextSibling = refDomChild;
+                            refDomChild.previousSibling = newDomChild;
+
+                            this.firstChild.isFirstChild(true);
+                            refDomChild.isFirstChild(false);
+                            newDomChild.previousSibling = null; // Just to be
+                                                                // sure :-)
+
+                        }
+                    } else { // If the refChild is not the fist child
+                        ChildNode previousNode = refDomChild.previousSibling;
+
+                        if (newChild instanceof DocumentFragmentimpl) {
+                            // the newChild is a document fragment
+                            DocumentFragmentimpl docFrag = 
+                                                (DocumentFragmentimpl) newChild;
+
+                            previousNode.nextSibling = docFrag.firstChild;
+                            docFrag.firstChild.previousSibling = previousNode;
+
+                            docFrag.lastChild.nextSibling = refDomChild;
+                            refDomChild.previousSibling = docFrag.lastChild;
+                        } else {
+
+                            previousNode.nextSibling = newDomChild;
+                            newDomChild.previousSibling = previousNode;
+
+                            newDomChild.nextSibling = refDomChild;
+                            refDomChild.previousSibling = newDomChild;
+                        }
+
+                    }
+                    found = true;
+                    break;
+                }
+            }
+
+            if (!found) {
+                throw new DOMException(DOMException.NOT_FOUND_ERR,
+                        DOMMessageFormatter.formatMessage(
+                                DOMMessageFormatter.DOM_DOMAIN,
+                                "NOT_FOUND_ERR", null));
+            }
+
+            if (newDomChild.parentNode == null) {
+                newDomChild.parentNode = this;
+            }
+
+            return newChild;
+        }
+    }
+
+    /**
+     * Replaces the oldChild with the newChild.
+     */
+    public Node replaceChild(Node newChild, Node oldChild) throws DOMException {
+        ChildNode newDomChild = (ChildNode) newChild;
+        ChildNode oldDomChild = (ChildNode) oldChild;
+
+        if (this == newChild || !isAncestor(newChild)) {
+            throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
+                    DOMMessageFormatter.formatMessage(
+                            DOMMessageFormatter.DOM_DOMAIN,
+                            "HIERARCHY_REQUEST_ERR", null));
+        }
+
+        if (!this.ownerNode.equals(newDomChild.ownerNode)) {
+            throw new DOMException(DOMException.WRONG_DOCUMENT_ERR,
+                    DOMMessageFormatter.formatMessage(
+                            DOMMessageFormatter.DOM_DOMAIN,
+                            "WRONG_DOCUMENT_ERR", null));
+        }
+
+        if (this.isReadonly()) {
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    DOMMessageFormatter.formatMessage(
+                            DOMMessageFormatter.DOM_DOMAIN,
+                            "NO_MODIFICATION_ALLOWED_ERR", null));
+        }
+
+        Iterator children = this.getChildren();
+        boolean found = false;
+        while (children.hasNext()) {
+            ChildNode tempNode = (ChildNode) children.next();
+            if (tempNode.equals(oldChild)) {
+                if (newChild instanceof DocumentFragmentimpl) {
+                    DocumentFragmentimpl docFrag = 
+                                            (DocumentFragmentimpl) newDomChild;
+                    ChildNode child = (ChildNode) docFrag.getFirstChild();
+                    child.parentNode = this;
+                    this.replaceChild(child, oldChild);
+                } else {
+                    if (oldDomChild.isFirstChild()) {
+                        oldDomChild.detach();
+                        this.addChild(newDomChild);
+                    } else {
+                        newDomChild.nextSibling = oldDomChild.nextSibling;
+                        newDomChild.previousSibling = oldDomChild.previousSibling;
+
+                        oldDomChild.previousSibling.nextSibling = newDomChild;
+
+                        // If the old child is not the last
+                        if (oldDomChild.nextSibling != null) {
+                            oldDomChild.nextSibling.previousSibling = newDomChild;
+                        } else {
+                            this.lastChild = newDomChild;
+                        }
+
+                        if (newDomChild.parentNode == null) {
+                            newDomChild.parentNode = this;
+                        }
+                    }
+                }
+                found = true;
+
+                // remove the old child's references to this tree
+                oldDomChild.nextSibling = null;
+                oldDomChild.previousSibling = null;
+                oldDomChild.parentNode = null;
+            }
+        }
+
+        if (!found)
+            throw new DOMException(DOMException.NOT_FOUND_ERR,
+                    DOMMessageFormatter.formatMessage(
+                            DOMMessageFormatter.DOM_DOMAIN, "NOT_FOUND_ERR",
+                            null));
+
+        return oldChild;
+    }
+
+    /**
+     * Removes the given child from the DOM Tree.
+     */
+    public Node removeChild(Node oldChild) throws DOMException {
+        // Check if this node is readonly
+        if (this.isReadonly()) {
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    DOMMessageFormatter.formatMessage(
+                            DOMMessageFormatter.DOM_DOMAIN,
+                            "NO_MODIFICATION_ALLOWED_ERR", null));
+        }
+
+        // Check if the Child is there
+        Iterator children = this.getChildren();
+        boolean childFound = false;
+        while (children.hasNext()) {
+            ChildNode tempNode = (ChildNode) children.next();
+            if (tempNode.equals(oldChild)) {
+
+                if (tempNode.isFirstChild()) {
+                    // If this is the first child
+                    this.firstChild = null;
+                    this.lastChild = null;
+                    tempNode.parentNode = null;
+                } else if (this.lastChild == tempNode) {
+                    // not the first child, but the last child
+                    ChildNode prevSib = tempNode.previousSibling;
+                    prevSib.nextSibling = null;
+                    tempNode.parentNode = null;
+                    tempNode.previousSibling = null;
+                } else {
+
+                    ChildNode oldDomChild = (ChildNode) oldChild;
+                    ChildNode privChild = oldDomChild.previousSibling;
+
+                    privChild.nextSibling = oldDomChild.nextSibling;
+                    oldDomChild.nextSibling.previousSibling = privChild;
+
+                    // Remove old child's references to this tree
+                    oldDomChild.nextSibling = null;
+                    oldDomChild.previousSibling = null;
+                }
+                // Child found
+                childFound = true;
+            }
+        }
+
+        if (!childFound)
+            throw new DOMException(DOMException.NOT_FOUND_ERR,
+                    DOMMessageFormatter.formatMessage(
+                            DOMMessageFormatter.DOM_DOMAIN, "NOT_FOUND_ERR",
+                            null));
+
+        return oldChild;
+    }
+
+    private boolean isAncestor(Node newNode) {
+
+        // TODO isAncestor
+        return true;
+    }
+
     public Node cloneNode(boolean deep) {
 
-    	ParentNode newnode = (ParentNode) super.cloneNode(deep);
+        ParentNode newnode = (ParentNode) super.cloneNode(deep);
 
         // set owner document
         newnode.ownerNode = ownerNode;
 
-    	// Need to break the association w/ original kids
-    	newnode.firstChild = null;
-    	newnode.lastChild = null;
+        // Need to break the association w/ original kids
+        newnode.firstChild = null;
+        newnode.lastChild = null;
 
         // Then, if deep, clone the kids too.
-    	if (deep) {
-            for (ChildNode child = firstChild;
-                 child != null;
-                 child = child.nextSibling) {
+        if (deep) {
+            for (ChildNode child = firstChild; child != null; 
+                    child = child.nextSibling) {
                 newnode.appendChild(child.cloneNode(true));
             }
         }
 
-    	return newnode;
+        return newnode;
 
     }
 }