[java-xmltooling COMMIT] in /branches/REL_1: doc/RELEASE-NOTES.txt src/main/java/org/opensaml/xml/io/AbstractXMLObjec...

noreply at shibboleth.net noreply at shibboleth.net
Fri Mar 15 17:35:54 EDT 2013


Author: scantor
Date: Fri Mar 15 17:35:54 2013
New Revision: 800

URL: http://svn.shibboleth.net/view/java-xmltooling?rev=800&view=rev
Log:
JXT-87: Replace NodeList usage.

Modified:
    branches/REL_1/doc/RELEASE-NOTES.txt
    branches/REL_1/src/main/java/org/opensaml/xml/io/AbstractXMLObjectUnmarshaller.java
    branches/REL_1/src/main/java/org/opensaml/xml/signature/AbstractSignableXMLObject.java

Modified: branches/REL_1/doc/RELEASE-NOTES.txt
URL: http://svn.shibboleth.net/view/java-xmltooling/branches/REL_1/doc/RELEASE-NOTES.txt?rev=800&r1=799&r2=800&view=diff
==============================================================================
--- branches/REL_1/doc/RELEASE-NOTES.txt (original)
+++ branches/REL_1/doc/RELEASE-NOTES.txt Fri Mar 15 17:35:54 2013
@@ -1,6 +1,7 @@
 Changes in Release 1.4.0
 =============================================
 [JXT-24] - Support for CDATA content
+[JXT-87] - Code in AbstractSignableXMLObject etc unnecessarily calls NodeList which is thread-unsafe
 [JXT-88] - AbstractXMLObject unnecessarily creates a new QName in getElementQName
 [JXT-89] - AbstractXMLObjectUnmarshaller should check log level before *creating* QNames and logging
 [JXT-93] - X509Util.determineEntityCertificate doesn't catch lower layer SecurityException

Modified: branches/REL_1/src/main/java/org/opensaml/xml/io/AbstractXMLObjectUnmarshaller.java
URL: http://svn.shibboleth.net/view/java-xmltooling/branches/REL_1/src/main/java/org/opensaml/xml/io/AbstractXMLObjectUnmarshaller.java?rev=800&r1=799&r2=800&view=diff
==============================================================================
--- branches/REL_1/src/main/java/org/opensaml/xml/io/AbstractXMLObjectUnmarshaller.java (original)
+++ branches/REL_1/src/main/java/org/opensaml/xml/io/AbstractXMLObjectUnmarshaller.java Fri Mar 15 17:35:54 2013
@@ -34,7 +34,6 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 import org.w3c.dom.Text;
 
 /**
@@ -119,18 +118,19 @@
             log.trace("Unmarshalling other child nodes of DOM Element {}", XMLHelper.getNodeQName(domElement));
         }
         
-        NodeList childNodes = domElement.getChildNodes();
-        Node childNode;
-        for (int i = 0; i < childNodes.getLength(); i++) {
-            childNode = childNodes.item(i);
+        Node childNode = domElement.getFirstChild();
+        while (childNode != null) {
 
             if (childNode.getNodeType() == Node.ATTRIBUTE_NODE) {
                 unmarshallAttribute(xmlObject, (Attr) childNode);
             } else if (childNode.getNodeType() == Node.ELEMENT_NODE) {
                 unmarshallChildElement(xmlObject, (Element) childNode);
-            } else if (childNode.getNodeType() == Node.TEXT_NODE || childNode.getNodeType() == Node.CDATA_SECTION_NODE) {
+            } else if (childNode.getNodeType() == Node.TEXT_NODE
+                    || childNode.getNodeType() == Node.CDATA_SECTION_NODE) {
                 unmarshallTextContent(xmlObject, (Text) childNode);
             }
+            
+            childNode = childNode.getNextSibling();
         }
 
         xmlObject.setDOM(domElement);

Modified: branches/REL_1/src/main/java/org/opensaml/xml/signature/AbstractSignableXMLObject.java
URL: http://svn.shibboleth.net/view/java-xmltooling/branches/REL_1/src/main/java/org/opensaml/xml/signature/AbstractSignableXMLObject.java?rev=800&r1=799&r2=800&view=diff
==============================================================================
--- branches/REL_1/src/main/java/org/opensaml/xml/signature/AbstractSignableXMLObject.java (original)
+++ branches/REL_1/src/main/java/org/opensaml/xml/signature/AbstractSignableXMLObject.java Fri Mar 15 17:35:54 2013
@@ -19,20 +19,19 @@
 
 import org.opensaml.xml.AbstractXMLObject;
 import org.opensaml.xml.util.XMLConstants;
+import org.opensaml.xml.util.XMLHelper;
 import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * Base for signable XMLObjects.
  */
 public abstract class AbstractSignableXMLObject extends AbstractXMLObject implements SignableXMLObject {
 
-    /** XMLSecSignatureImpl */
+    /** Signature object. */
     private Signature signature;
 
     /**
-     * Constructor
+     * Constructor.
      * 
      * @param namespaceURI the namespace the element is in
      * @param elementLocalName the local name of the XML element this Object represents
@@ -49,19 +48,15 @@
         if (domElement == null) {
             return false;
         }
+        
 
-        NodeList children = domElement.getChildNodes();
-        Element childElement;
-        for (int i = 0; i < children.getLength(); i++) {
-            if (children.item(i).getNodeType() != Node.ELEMENT_NODE) {
-                continue;
-            }
-
-            childElement = (Element) children.item(i);
-            if (childElement.getNamespaceURI().equals(XMLConstants.XMLSIG_NS)
-                    && childElement.getLocalName().equals(Signature.DEFAULT_ELEMENT_LOCAL_NAME)) {

[... 11 lines stripped ...]


More information about the commits mailing list