mrglavas    2004/11/04 13:53:30

  Modified:    java/src/org/apache/xerces/dom RangeImpl.java
  Log:
  DOM Level 3 specifies an attribute called strictErrorChecking [1] which when set to 
false
  allows an implementation to not test every possible error case. Reducing the amount
  of checking performed when strictErrorChecking is false. This patch is thanks to
  Naela Nissar.
  
  [1] 
http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#Document3-strictErrorChecking
  
  Revision  Changes    Path
  1.37      +194 -171  xml-xerces/java/src/org/apache/xerces/dom/RangeImpl.java
  
  Index: RangeImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/RangeImpl.java,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- RangeImpl.java    5 Oct 2004 17:12:51 -0000       1.36
  +++ RangeImpl.java    4 Nov 2004 21:53:30 -0000       1.37
  @@ -155,22 +155,23 @@
       public void setStart(Node refNode, int offset)
                            throws RangeException, DOMException
       {
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -        }
  -        if ( !isLegalContainer(refNode)) {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  -        }
  -        if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  -            throw new DOMException(
  -                DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +        if (fDocument.errorChecking) {
  +            if ( fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            if ( !isLegalContainer(refNode)) {
  +                throw new RangeExceptionImpl(
  +                        RangeException.INVALID_NODE_TYPE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +            }
  +            if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  +                throw new DOMException(
  +                        DOMException.WRONG_DOCUMENT_ERR,
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +            }
           }
  -
           
           checkIndex(refNode, offset);
           
  @@ -191,22 +192,24 @@
       public void setEnd(Node refNode, int offset)
                          throws RangeException, DOMException
       {
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -        }
  -        if ( !isLegalContainer(refNode)) {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  -        }
  -        if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  -            throw new DOMException(
  -                DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +        if (fDocument.errorChecking) {
  +            if (fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            if ( !isLegalContainer(refNode)) {
  +                throw new RangeExceptionImpl(
  +                        RangeException.INVALID_NODE_TYPE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +            }
  +            if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  +                throw new DOMException(
  +                        DOMException.WRONG_DOCUMENT_ERR,
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +            }
           }
  -        
  +     
           checkIndex(refNode, offset);
           
           fEndContainer = refNode;
  @@ -226,23 +229,26 @@
       public void setStartBefore(Node refNode) 
           throws RangeException 
       {
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -        }
  -        if ( !hasLegalRootContainer(refNode) ||
  -            !isLegalContainedNode(refNode) )
  -        {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  -        }
  -        if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  -            throw new DOMException(
  -                DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +        if (fDocument.errorChecking) {
  +            if (fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            if ( !hasLegalRootContainer(refNode) ||
  +                    !isLegalContainedNode(refNode) )
  +            {
  +                throw new RangeExceptionImpl(
  +                        RangeException.INVALID_NODE_TYPE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +            }
  +            if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  +                throw new DOMException(
  +                        DOMException.WRONG_DOCUMENT_ERR,
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +            }
           }
  +     
           fStartContainer = refNode.getParentNode();
           int i = 0;
           for (Node n = refNode; n!=null; n = n.getPreviousSibling()) {
  @@ -264,21 +270,23 @@
       public void setStartAfter(Node refNode)
           throws RangeException
       {
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -        }
  -        if ( !hasLegalRootContainer(refNode) || 
  -            !isLegalContainedNode(refNode)) {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  -        }
  -        if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  -            throw new DOMException(
  -                DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +        if (fDocument.errorChecking) {
  +            if (fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            if ( !hasLegalRootContainer(refNode) || 
  +                    !isLegalContainedNode(refNode)) {
  +                throw new RangeExceptionImpl(
  +                        RangeException.INVALID_NODE_TYPE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +            }
  +            if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  +                throw new DOMException(
  +                        DOMException.WRONG_DOCUMENT_ERR,
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +            }
           }
           fStartContainer = refNode.getParentNode();
           int i = 0;
  @@ -301,21 +309,23 @@
       public void setEndBefore(Node refNode)
           throws RangeException
       {
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -        }
  -        if ( !hasLegalRootContainer(refNode) ||
  -            !isLegalContainedNode(refNode)) {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  -        }
  -        if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  -            throw new DOMException(
  -                DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +        if (fDocument.errorChecking) {
  +            if (fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            if ( !hasLegalRootContainer(refNode) ||
  +                    !isLegalContainedNode(refNode)) {
  +                throw new RangeExceptionImpl(
  +                        RangeException.INVALID_NODE_TYPE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +            }
  +            if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  +                throw new DOMException(
  +                        DOMException.WRONG_DOCUMENT_ERR,
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +            }
           }
           fEndContainer = refNode.getParentNode();
           int i = 0;
  @@ -338,21 +348,23 @@
       public void setEndAfter(Node refNode)
           throws RangeException
       {
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -        }
  -        if ( !hasLegalRootContainer(refNode) ||
  -            !isLegalContainedNode(refNode)) {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  -        }
  -        if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  -            throw new DOMException(
  -                DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +        if (fDocument.errorChecking) {
  +            if( fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            if ( !hasLegalRootContainer(refNode) ||
  +                    !isLegalContainedNode(refNode)) {
  +                throw new RangeExceptionImpl(
  +                        RangeException.INVALID_NODE_TYPE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +            }
  +            if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  +                throw new DOMException(
  +                        DOMException.WRONG_DOCUMENT_ERR,
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +            }
           }
           fEndContainer = refNode.getParentNode();
           int i = 0;
  @@ -392,21 +404,23 @@
       public void selectNode(Node refNode)
           throws RangeException
       {
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -        }
  -        if ( !isLegalContainer( refNode.getParentNode() ) ||
  -            !isLegalContainedNode( refNode ) ) {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  -        }
  -        if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  -            throw new DOMException(
  -                DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +        if (fDocument.errorChecking) {
  +            if (fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            if ( !isLegalContainer( refNode.getParentNode() ) ||
  +                    !isLegalContainedNode( refNode ) ) {
  +                throw new RangeExceptionImpl(
  +                        RangeException.INVALID_NODE_TYPE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +            }
  +            if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  +                throw new DOMException(
  +                        DOMException.WRONG_DOCUMENT_ERR,
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +            }
           }
           Node parent = refNode.getParentNode();
           if (parent != null ) // REVIST: what to do if it IS null?
  @@ -425,20 +439,22 @@
       public void selectNodeContents(Node refNode)
           throws RangeException
       {
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -        }
  -        if ( !isLegalContainer(refNode)) {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  -        }
  -        if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  -            throw new DOMException(
  -                DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +        if (fDocument.errorChecking) {
  +            if( fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            if ( !isLegalContainer(refNode)) {
  +                throw new RangeExceptionImpl(
  +                        RangeException.INVALID_NODE_TYPE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +            }
  +            if ( fDocument != refNode.getOwnerDocument() && fDocument != refNode) {
  +                throw new DOMException(
  +                        DOMException.WRONG_DOCUMENT_ERR,
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +            }
           }
           fStartContainer = refNode;
           fEndContainer = refNode;
  @@ -459,20 +475,22 @@
       public short compareBoundaryPoints(short how, Range sourceRange)
           throws DOMException
       {
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -     }
  -        // WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same 
Document or DocumentFragment.  
  -     if ((fDocument != sourceRange.getStartContainer().getOwnerDocument()
  -                && fDocument != sourceRange.getStartContainer() 
  -                && sourceRange.getStartContainer() != null)
  -                || (fDocument != sourceRange.getEndContainer().getOwnerDocument()
  -                        && fDocument != sourceRange.getEndContainer() 
  -                        && sourceRange.getStartContainer() != null)) {
  -            throw new DOMException(DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage( DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +        if (fDocument.errorChecking) {
  +            if( fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            // WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same 
Document or DocumentFragment.  
  +            if ((fDocument != sourceRange.getStartContainer().getOwnerDocument()
  +                    && fDocument != sourceRange.getStartContainer() 
  +                    && sourceRange.getStartContainer() != null)
  +                    || (fDocument != 
sourceRange.getEndContainer().getOwnerDocument()
  +                            && fDocument != sourceRange.getEndContainer() 
  +                            && sourceRange.getStartContainer() != null)) {
  +                throw new DOMException(DOMException.WRONG_DOCUMENT_ERR,
  +                        DOMMessageFormatter.formatMessage( 
DOMMessageFormatter.DOM_DOMAIN, "WRONG_DOCUMENT_ERR", null));
  +            }
           }
           
           Node endPointA;
  @@ -601,27 +619,30 @@
           throws DOMException, RangeException
       {
        if ( newNode == null ) return; //throw exception?
  -        
  -        if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  +     
  +     int type = newNode.getNodeType();
  +     
  +     if (fDocument.errorChecking) {
  +         if (fDetach) {
  +             throw new DOMException(
  +                     DOMException.INVALID_STATE_ERR, 
  +                     
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +         }
  +         if ( fDocument != newNode.getOwnerDocument() ) {
  +             throw new DOMException(DOMException.WRONG_DOCUMENT_ERR,
  +                     
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  +         }
  +         
  +         if (type == Node.ATTRIBUTE_NODE
  +                 || type == Node.ENTITY_NODE
  +                 || type == Node.NOTATION_NODE
  +                 || type == Node.DOCUMENT_NODE)
  +         {
  +             throw new RangeExceptionImpl(
  +                     RangeException.INVALID_NODE_TYPE_ERR, 
  +                     
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +         }
        }
  -        if ( fDocument != newNode.getOwnerDocument() ) {
  -            throw new DOMException(DOMException.WRONG_DOCUMENT_ERR,
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"WRONG_DOCUMENT_ERR", null));
  -        }
  -       
  -        int type = newNode.getNodeType();
  -        if (type == Node.ATTRIBUTE_NODE
  -            || type == Node.ENTITY_NODE
  -            || type == Node.NOTATION_NODE
  -            || type == Node.DOCUMENT_NODE)
  -        {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  -        }
           Node cloneCurrent;
           Node current;
           int currentChildren = 0;
  @@ -691,23 +712,25 @@
           throws DOMException, RangeException
       {
           if (newParent==null) return;
  -        
  -     if( fDetach) {
  -             throw new DOMException(
  -             DOMException.INVALID_STATE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_STATE_ERR", null));
  -     }
           int type = newParent.getNodeType();
  -        if (type == Node.ATTRIBUTE_NODE
  -            || type == Node.ENTITY_NODE
  -            || type == Node.NOTATION_NODE
  -            || type == Node.DOCUMENT_TYPE_NODE
  -            || type == Node.DOCUMENT_NODE
  -            || type == Node.DOCUMENT_FRAGMENT_NODE)
  -        {
  -             throw new RangeExceptionImpl(
  -             RangeException.INVALID_NODE_TYPE_ERR, 
  -                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +        
  +        if (fDocument.errorChecking) {
  +            if (fDetach) {
  +                throw new DOMException(
  +                        DOMException.INVALID_STATE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "INVALID_STATE_ERR", 
null));
  +            }
  +            if (type == Node.ATTRIBUTE_NODE
  +                    || type == Node.ENTITY_NODE
  +                    || type == Node.NOTATION_NODE
  +                    || type == Node.DOCUMENT_TYPE_NODE
  +                    || type == Node.DOCUMENT_NODE
  +                    || type == Node.DOCUMENT_FRAGMENT_NODE)
  +            {
  +                throw new RangeExceptionImpl(
  +                        RangeException.INVALID_NODE_TYPE_ERR, 
  +                        
DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, 
"INVALID_NODE_TYPE_ERR", null));
  +            }
           }
           
           Node root = getCommonAncestorContainer();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to