You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2004/11/04 21:51:28 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/dom CoreDocumentImpl.java

mrglavas    2004/11/04 12:51:28

  Modified:    java/src/org/apache/xerces/dom CoreDocumentImpl.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.82      +46 -50    xml-xerces/java/src/org/apache/xerces/dom/CoreDocumentImpl.java
  
  Index: CoreDocumentImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/CoreDocumentImpl.java,v
  retrieving revision 1.81
  retrieving revision 1.82
  diff -u -r1.81 -r1.82
  --- CoreDocumentImpl.java	21 Oct 2004 21:51:05 -0000	1.81
  +++ CoreDocumentImpl.java	4 Nov 2004 20:51:27 -0000	1.82
  @@ -956,10 +956,10 @@
        */
       public Node renameNode(Node n,String namespaceURI,String name)
       throws DOMException{
  -
  -        if (n.getOwnerDocument() != this && n != this) {
  +        
  +        if (errorChecking && n.getOwnerDocument() != this && n != this) {
               String msg = DOMMessageFormatter.formatMessage(
  -            DOMMessageFormatter.DOM_DOMAIN, "WRONG_DOCUMENT_ERR", null);
  +                    DOMMessageFormatter.DOM_DOMAIN, "WRONG_DOCUMENT_ERR", null);
               throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, msg);
           }
           switch (n.getNodeType()) {
  @@ -969,44 +969,45 @@
                       ((ElementNSImpl) el).rename(namespaceURI, name);
                       
                       // fire user data NODE_RENAMED event
  -                    callUserDataHandlers(el, null,
  -                    UserDataHandler.NODE_RENAMED);
  +                    callUserDataHandlers(el, null, UserDataHandler.NODE_RENAMED);
                   }
                   else {
                       if (namespaceURI == null) {
  -                        int colon1 = name.indexOf(':');
  -                        if(colon1 != -1){
  -                            String msg =
  -                            DOMMessageFormatter.formatMessage(
  -                            DOMMessageFormatter.DOM_DOMAIN,
  -                            "NAMESPACE_ERR",
  -                            null);
  -                            throw new DOMException(DOMException.NAMESPACE_ERR, msg);
  -                        }
  -                        if (errorChecking && !isXMLName(name,xml11Version)) {
  -                            String msg = DOMMessageFormatter.formatMessage(
  -                            DOMMessageFormatter.DOM_DOMAIN,
  -                            "INVALID_CHARACTER_ERR", null);
  -                            throw new DOMException(DOMException.INVALID_CHARACTER_ERR,
  -                            msg);
  +                        if (errorChecking) {
  +                            int colon1 = name.indexOf(':');
  +                            if(colon1 != -1){
  +                                String msg =
  +                                    DOMMessageFormatter.formatMessage(
  +                                            DOMMessageFormatter.DOM_DOMAIN,
  +                                            "NAMESPACE_ERR",
  +                                            null);
  +                                throw new DOMException(DOMException.NAMESPACE_ERR, msg);
  +                            }
  +                            if (!isXMLName(name,xml11Version)) {
  +                                String msg = DOMMessageFormatter.formatMessage(
  +                                        DOMMessageFormatter.DOM_DOMAIN,
  +                                        "INVALID_CHARACTER_ERR", null);
  +                                throw new DOMException(DOMException.INVALID_CHARACTER_ERR,
  +                                        msg);
  +                            }
                           }
                           el.rename(name);
                           
                           // fire user data NODE_RENAMED event
                           callUserDataHandlers(el, null,
  -                        UserDataHandler.NODE_RENAMED);
  +                                UserDataHandler.NODE_RENAMED);
                       }
                       else {
                           // we need to create a new object
                           ElementNSImpl nel =
  -                        new ElementNSImpl(this, namespaceURI, name);
  -
  +                            new ElementNSImpl(this, namespaceURI, name);
  +                        
                           // register event listeners on new node
                           copyEventListeners(el, nel);
  -
  +                        
                           // remove user data from old node
                           Hashtable data = removeUserDataTable(el);
  -
  +                        
                           // remove old node from parent if any
                           Node parent = el.getParentNode();
                           Node nextSib = el.getNextSibling();
  @@ -1022,14 +1023,14 @@
                           }
                           // move specified attributes to new node
                           nel.moveSpecifiedAttributes(el);
  -
  +                        
                           // attach user data to new node
                           setUserDataTable(nel, data);
  -
  +                        
                           // and fire user data NODE_RENAMED event
                           callUserDataHandlers(el, nel,
  -                        UserDataHandler.NODE_RENAMED);
  -
  +                                UserDataHandler.NODE_RENAMED);
  +                        
                           // insert new node where old one was
                           if (parent != null) {
                               parent.insertBefore(nel, nextSib);
  @@ -1043,7 +1044,7 @@
               }
               case ATTRIBUTE_NODE: {
                   AttrImpl at = (AttrImpl) n;
  -
  +                
                   // dettach attr from element
                   Element el = at.getOwnerElement();
                   if (el != null) {
  @@ -1057,8 +1058,7 @@
                       }
                       
                       // fire user data NODE_RENAMED event
  -                    callUserDataHandlers(at, null,
  -                    UserDataHandler.NODE_RENAMED);
  +                    callUserDataHandlers(at, null, UserDataHandler.NODE_RENAMED);
                   }
                   else {
                       if (namespaceURI == null) {
  @@ -1069,20 +1069,18 @@
                           }
                           
                           // fire user data NODE_RENAMED event
  -                        callUserDataHandlers(at, null,
  -                        UserDataHandler.NODE_RENAMED);
  +                        callUserDataHandlers(at, null, UserDataHandler.NODE_RENAMED);
                       }
                       else {
                           // we need to create a new object
  -                        AttrNSImpl nat =
  -                        new AttrNSImpl(this, namespaceURI, name);
  -
  +                        AttrNSImpl nat = new AttrNSImpl(this, namespaceURI, name);
  +                        
                           // register event listeners on new node
                           copyEventListeners(at, nat);
  -
  +                        
                           // remove user data from old node
                           Hashtable data = removeUserDataTable(at);
  -
  +                        
                           // move children to new node
                           Node child = at.getFirstChild();
                           while (child != null) {
  @@ -1090,14 +1088,13 @@
                               nat.appendChild(child);
                               child = at.getFirstChild();
                           }
  -
  +                        
                           // attach user data to new node
                           setUserDataTable(nat, data);
  -
  +                        
                           // and fire user data NODE_RENAMED event
  -                        callUserDataHandlers(at, nat,
  -                        UserDataHandler.NODE_RENAMED);
  -
  +                        callUserDataHandlers(at, nat, UserDataHandler.NODE_RENAMED);
  +                        
                           // reattach attr to element
                           if (el != null) {
                               el.setAttributeNode(nat);
  @@ -1107,7 +1104,7 @@
                   }
                   // fire AttributeNameChanged event
                   renamedAttrNode((Attr) n, at);
  -
  +                
                   return at;
               }
               default: {
  @@ -1115,7 +1112,7 @@
                   throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
               }
           }
  -
  +        
       }
   
   
  @@ -1318,8 +1315,8 @@
        */
       public String saveXML(Node node)
       throws DOMException {
  -        if ( node != null &&
  -        this != node.getOwnerDocument() ) {
  +        if ( errorChecking && node != null &&
  +            this != node.getOwnerDocument() ) {
               String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "WRONG_DOCUMENT_ERR", null);
               throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, msg);
           }
  @@ -1330,7 +1327,6 @@
           }
           return xmlWriter.writeToString(node);
       }
  -
   
       /**
        * Sets whether the DOM implementation generates mutation events
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org