You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2014/06/13 13:20:44 UTC

svn commit: r1602377 - in /santuario/xml-security-java/trunk/src: main/java/org/apache/jcp/xml/dsig/internal/dom/ main/java/org/apache/xml/security/keys/ main/java/org/apache/xml/security/signature/ main/java/org/apache/xml/security/stax/ext/ main/java...

Author: coheigea
Date: Fri Jun 13 11:20:43 2014
New Revision: 1602377

URL: http://svn.apache.org/r1602377
Log:
Replacing some getChildNodes() calls

Modified:
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMPGPData.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMUtils.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMX509Data.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/KeyInfo.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/signature/XMLSignature.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/implementations/TransformXPath.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java
    santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/signature/InvalidKeyTest.java
    santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/SignatureCreationTest.java

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java Fri Jun 13 11:20:43 2014
@@ -33,7 +33,6 @@ import java.util.*;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * DOM-based implementation of KeyInfo.
@@ -97,36 +96,32 @@ public final class DOMKeyInfo extends Ba
         id = DOMUtils.getIdAttributeValue(kiElem, "Id");
 
         // get all children nodes
-        NodeList nl = kiElem.getChildNodes();
-        int length = nl.getLength();
-        if (length < 1) {
-            throw new MarshalException
-                ("KeyInfo must contain at least one type");
-        }
-        List<XMLStructure> content = new ArrayList<XMLStructure>(length);
-        for (int i = 0; i < length; i++) {
-            Node child = nl.item(i);
-            // ignore all non-Element nodes
-            if (child.getNodeType() != Node.ELEMENT_NODE) {
-                continue;
-            }
-            Element childElem = (Element)child;
-            String localName = childElem.getLocalName();
-            String namespace = childElem.getNamespaceURI();
-            if (localName.equals("X509Data") && XMLSignature.XMLNS.equals(namespace)) {
-                content.add(new DOMX509Data(childElem));
-            } else if (localName.equals("KeyName") && XMLSignature.XMLNS.equals(namespace)) {
-                content.add(new DOMKeyName(childElem));
-            } else if (localName.equals("KeyValue") && XMLSignature.XMLNS.equals(namespace)) {
-                content.add(DOMKeyValue.unmarshal(childElem));
-            } else if (localName.equals("RetrievalMethod") && XMLSignature.XMLNS.equals(namespace)) {
-                content.add(new DOMRetrievalMethod(childElem,
-                                                   context, provider));
-            } else if (localName.equals("PGPData") && XMLSignature.XMLNS.equals(namespace)) {
-                content.add(new DOMPGPData(childElem));
-            } else { //may be MgmtData, SPKIData or element from other namespace
-                content.add(new javax.xml.crypto.dom.DOMStructure(childElem));
+        List<XMLStructure> content = new ArrayList<XMLStructure>();
+        Node firstChild = kiElem.getFirstChild();
+        if (firstChild == null) {
+            throw new MarshalException("KeyInfo must contain at least one type");
+        }
+        while (firstChild != null) {
+            if (firstChild.getNodeType() == Node.ELEMENT_NODE) {
+                Element childElem = (Element)firstChild;
+                String localName = childElem.getLocalName();
+                String namespace = childElem.getNamespaceURI();
+                if (localName.equals("X509Data") && XMLSignature.XMLNS.equals(namespace)) {
+                    content.add(new DOMX509Data(childElem));
+                } else if (localName.equals("KeyName") && XMLSignature.XMLNS.equals(namespace)) {
+                    content.add(new DOMKeyName(childElem));
+                } else if (localName.equals("KeyValue") && XMLSignature.XMLNS.equals(namespace)) {
+                    content.add(DOMKeyValue.unmarshal(childElem));
+                } else if (localName.equals("RetrievalMethod") && XMLSignature.XMLNS.equals(namespace)) {
+                    content.add(new DOMRetrievalMethod(childElem,
+                                                       context, provider));
+                } else if (localName.equals("PGPData") && XMLSignature.XMLNS.equals(namespace)) {
+                    content.add(new DOMPGPData(childElem));
+                } else { //may be MgmtData, SPKIData or element from other namespace
+                    content.add(new javax.xml.crypto.dom.DOMStructure(childElem));
+                }
             }
+            firstChild = firstChild.getNextSibling();
         }
         keyInfoTypes = Collections.unmodifiableList(content);
     }

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMPGPData.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMPGPData.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMPGPData.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMPGPData.java Fri Jun 13 11:20:43 2014
@@ -32,7 +32,6 @@ import javax.xml.crypto.dsig.keyinfo.PGP
 
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 import org.apache.xml.security.exceptions.Base64DecodingException;
 import org.apache.xml.security.utils.Base64;
 
@@ -144,13 +143,12 @@ public final class DOMPGPData extends Ba
         // get all children nodes
         byte[] keyId = null;
         byte[] keyPacket = null;
-        NodeList nl = pdElem.getChildNodes();
-        int length = nl.getLength();
-        List<XMLStructure> other = new ArrayList<XMLStructure>(length);
-        for (int x = 0; x < length; x++) {
-            Node n = nl.item(x);
-            if (n.getNodeType() == Node.ELEMENT_NODE) {
-                Element childElem = (Element)n;
+        
+        List<XMLStructure> other = new ArrayList<XMLStructure>();
+        Node firstChild = pdElem.getFirstChild();
+        while (firstChild != null) {
+            if (firstChild.getNodeType() == Node.ELEMENT_NODE) {
+                Element childElem = (Element)firstChild;
                 String localName = childElem.getLocalName();
                 String namespace = childElem.getNamespaceURI();
                 try {
@@ -166,6 +164,7 @@ public final class DOMPGPData extends Ba
                     throw new MarshalException(bde);
                 }
             }
+            firstChild = firstChild.getNextSibling();
         }
         this.keyId = keyId;
         this.keyPacket = keyPacket;

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java Fri Jun 13 11:20:43 2014
@@ -31,7 +31,6 @@ import java.util.*;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * DOM-based implementation of SignatureProperties.
@@ -88,21 +87,19 @@ public final class DOMSignaturePropertie
         // unmarshal attributes
         id = DOMUtils.getIdAttributeValue(propsElem, "Id");
 
-        NodeList nodes = propsElem.getChildNodes();
-        int length = nodes.getLength();
-        List<SignatureProperty> properties =
-            new ArrayList<SignatureProperty>(length);
-        for (int i = 0; i < length; i++) {
-            Node child = nodes.item(i);
-            if (child.getNodeType() == Node.ELEMENT_NODE) {
-                String name = child.getLocalName();
-                String namespace = child.getNamespaceURI();
+        List<SignatureProperty> properties = new ArrayList<SignatureProperty>();
+        Node firstChild = propsElem.getFirstChild();
+        while (firstChild != null) {
+            if (firstChild.getNodeType() == Node.ELEMENT_NODE) {
+                String name = firstChild.getLocalName();
+                String namespace = firstChild.getNamespaceURI();
                 if (!name.equals("SignatureProperty") || !XMLSignature.XMLNS.equals(namespace)) {
                     throw new MarshalException("Invalid element name: " + namespace + ":" + name +
                                                ", expected SignatureProperty");
                 }
-                properties.add(new DOMSignatureProperty((Element)child));
+                properties.add(new DOMSignatureProperty((Element)firstChild));
             }
+            firstChild = firstChild.getNextSibling();
         }
         if (properties.isEmpty()) {
             throw new MarshalException("properties cannot be empty");

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java Fri Jun 13 11:20:43 2014
@@ -31,7 +31,6 @@ import java.util.*;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * DOM-based implementation of SignatureProperty.
@@ -96,11 +95,11 @@ public final class DOMSignatureProperty 
         }
         id = DOMUtils.getIdAttributeValue(propElem, "Id");
 
-        NodeList nodes = propElem.getChildNodes();
-        int length = nodes.getLength();
-        List<XMLStructure> content = new ArrayList<XMLStructure>(length);
-        for (int i = 0; i < length; i++) {
-            content.add(new javax.xml.crypto.dom.DOMStructure(nodes.item(i)));
+        List<XMLStructure> content = new ArrayList<XMLStructure>();
+        Node firstChild = propElem.getFirstChild();
+        while (firstChild != null) {
+            content.add(new javax.xml.crypto.dom.DOMStructure(firstChild));
+            firstChild = firstChild.getNextSibling();
         }
         if (content.isEmpty()) {
             throw new MarshalException("content cannot be empty");

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMUtils.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMUtils.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMUtils.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMUtils.java Fri Jun 13 11:20:43 2014
@@ -392,9 +392,11 @@ public final class DOMUtils {
      * @param node the parent node whose children are to be removed
      */
     public static void removeAllChildren(Node node) {
-        NodeList children = node.getChildNodes();
-        for (int i = 0, length = children.getLength(); i < length; i++) {
-            node.removeChild(children.item(i));
+        Node firstChild = node.getFirstChild();
+        while (firstChild != null) {
+            Node nodeToRemove = firstChild;
+            firstChild = firstChild.getNextSibling();
+            node.removeChild(nodeToRemove);
         }
     }
 

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMX509Data.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMX509Data.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMX509Data.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMX509Data.java Fri Jun 13 11:20:43 2014
@@ -35,7 +35,6 @@ import javax.security.auth.x500.X500Prin
 
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 import org.apache.xml.security.exceptions.Base64DecodingException;
 import org.apache.xml.security.utils.Base64;
 
@@ -95,36 +94,32 @@ public final class DOMX509Data extends B
      */
     public DOMX509Data(Element xdElem) throws MarshalException {
         // get all children nodes
-        NodeList nl = xdElem.getChildNodes();
-        int length = nl.getLength();
-        List<Object> content = new ArrayList<Object>(length);
-        for (int i = 0; i < length; i++) {
-            Node child = nl.item(i);
-            // ignore all non-Element nodes
-            if (child.getNodeType() != Node.ELEMENT_NODE) {
-                continue;
-            }
-
-            Element childElem = (Element)child;
-            String localName = childElem.getLocalName();
-            String namespace = childElem.getNamespaceURI();
-            if (localName.equals("X509Certificate") && XMLSignature.XMLNS.equals(namespace)) {
-                content.add(unmarshalX509Certificate(childElem));
-            } else if (localName.equals("X509IssuerSerial") && XMLSignature.XMLNS.equals(namespace)) {
-                content.add(new DOMX509IssuerSerial(childElem));
-            } else if (localName.equals("X509SubjectName") && XMLSignature.XMLNS.equals(namespace)) {
-                content.add(childElem.getFirstChild().getNodeValue());
-            } else if (localName.equals("X509SKI") && XMLSignature.XMLNS.equals(namespace)) {
-                try {
-                    content.add(Base64.decode(childElem));
-                } catch (Base64DecodingException bde) {
-                    throw new MarshalException("cannot decode X509SKI", bde);
+        List<Object> content = new ArrayList<Object>();
+        Node firstChild = xdElem.getFirstChild();
+        while (firstChild != null) {
+            if (firstChild.getNodeType() == Node.ELEMENT_NODE) {
+                Element childElem = (Element)firstChild;
+                String localName = childElem.getLocalName();
+                String namespace = childElem.getNamespaceURI();
+                if (localName.equals("X509Certificate") && XMLSignature.XMLNS.equals(namespace)) {
+                    content.add(unmarshalX509Certificate(childElem));
+                } else if (localName.equals("X509IssuerSerial") && XMLSignature.XMLNS.equals(namespace)) {
+                    content.add(new DOMX509IssuerSerial(childElem));
+                } else if (localName.equals("X509SubjectName") && XMLSignature.XMLNS.equals(namespace)) {
+                    content.add(childElem.getFirstChild().getNodeValue());
+                } else if (localName.equals("X509SKI") && XMLSignature.XMLNS.equals(namespace)) {
+                    try {
+                        content.add(Base64.decode(childElem));
+                    } catch (Base64DecodingException bde) {
+                        throw new MarshalException("cannot decode X509SKI", bde);
+                    }
+                } else if (localName.equals("X509CRL") && XMLSignature.XMLNS.equals(namespace)) {
+                    content.add(unmarshalX509CRL(childElem));
+                } else {
+                    content.add(new javax.xml.crypto.dom.DOMStructure(childElem));
                 }
-            } else if (localName.equals("X509CRL") && XMLSignature.XMLNS.equals(namespace)) {
-                content.add(unmarshalX509CRL(childElem));
-            } else {
-                content.add(new javax.xml.crypto.dom.DOMStructure(childElem));
             }
+            firstChild = firstChild.getNextSibling();
         }
         this.content = Collections.unmodifiableList(content);
     }

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java Fri Jun 13 11:20:43 2014
@@ -34,7 +34,6 @@ import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * DOM-based implementation of XMLObject.
@@ -102,28 +101,27 @@ public final class DOMXMLObject extends 
         }
         this.mimeType = DOMUtils.getAttributeValue(objElem, "MimeType");
 
-        NodeList nodes = objElem.getChildNodes();
-        int length = nodes.getLength();
-        List<XMLStructure> content = new ArrayList<XMLStructure>(length);
-        for (int i = 0; i < length; i++) {
-            Node child = nodes.item(i);
-            if (child.getNodeType() == Node.ELEMENT_NODE) {
-                Element childElem = (Element)child;
+        List<XMLStructure> content = new ArrayList<XMLStructure>();
+        Node firstChild = objElem.getFirstChild();
+        while (firstChild != null) {
+            if (firstChild.getNodeType() == Node.ELEMENT_NODE) {
+                Element childElem = (Element)firstChild;
                 String tag = childElem.getLocalName();
                 String namespace = childElem.getNamespaceURI();
                 if (tag.equals("Manifest") && XMLSignature.XMLNS.equals(namespace)) {
                     content.add(new DOMManifest(childElem, context, provider));
-                    continue;
                 } else if (tag.equals("SignatureProperties") && XMLSignature.XMLNS.equals(namespace)) {
                     content.add(new DOMSignatureProperties(childElem));
-                    continue;
                 } else if (tag.equals("X509Data") && XMLSignature.XMLNS.equals(namespace)) {
                     content.add(new DOMX509Data(childElem));
-                    continue;
+                } else {
+                    //@@@FIXME: check for other dsig structures
+                    content.add(new javax.xml.crypto.dom.DOMStructure(firstChild));
                 }
-                //@@@FIXME: check for other dsig structures
+            } else {
+                content.add(new javax.xml.crypto.dom.DOMStructure(firstChild));
             }
-            content.add(new javax.xml.crypto.dom.DOMStructure(child));
+            firstChild = firstChild.getNextSibling();
         }
                 
         // Here we capture namespace declarations, so that when they're marshalled back

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/KeyInfo.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/KeyInfo.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/KeyInfo.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/KeyInfo.java Fri Jun 13 11:20:43 2014
@@ -55,7 +55,6 @@ import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * This class stand for KeyInfo Element that may contain keys, names,
@@ -474,21 +473,19 @@ public class KeyInfo extends SignatureEl
      */
     public int lengthUnknownElement() {
         int res = 0;
-        NodeList nl = getElement().getChildNodes();
-
-        for (int i = 0; i < nl.getLength(); i++) {
-            Node current = nl.item(i);
-
+        Node childNode = getElement().getFirstChild();
+        while (childNode != null) {
             /**
              * $todo$ using this method, we don't see unknown Elements
              *  from Signature NS; revisit
              */
-            if (current.getNodeType() == Node.ELEMENT_NODE
-                && current.getNamespaceURI().equals(Constants.SignatureSpecNS)) {
+            if (childNode.getNodeType() == Node.ELEMENT_NODE
+                && childNode.getNamespaceURI().equals(Constants.SignatureSpecNS)) {
                 res++;
             }
+            childNode = childNode.getNextSibling();
         }
-
+        
         return res;
     }
 
@@ -687,24 +684,22 @@ public class KeyInfo extends SignatureEl
      * @return the element number of the unknown elements
      */
     public Element itemUnknownElement(int i) {
-        NodeList nl = getElement().getChildNodes();
         int res = 0;
-
-        for (int j = 0; j < nl.getLength(); j++) {
-            Node current = nl.item(j);
-
+        Node childNode = getElement().getFirstChild();
+        while (childNode != null) {
             /**
              * $todo$ using this method, we don't see unknown Elements
              *  from Signature NS; revisit
              */
-            if (current.getNodeType() == Node.ELEMENT_NODE
-                && current.getNamespaceURI().equals(Constants.SignatureSpecNS)) {
+            if (childNode.getNodeType() == Node.ELEMENT_NODE
+                && childNode.getNamespaceURI().equals(Constants.SignatureSpecNS)) {
                 res++;
 
                 if (res == i) {
-                    return (Element) current;
+                    return (Element) childNode;
                 }
             }
+            childNode = childNode.getNextSibling();
         }
 
         return null;

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/signature/XMLSignature.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/signature/XMLSignature.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/signature/XMLSignature.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/signature/XMLSignature.java Fri Jun 13 11:20:43 2014
@@ -48,7 +48,6 @@ import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 import org.w3c.dom.Text;
 
 /**
@@ -428,13 +427,11 @@ public final class XMLSignature extends 
                 objectElem.setIdAttributeNode(objectAttr, true);
             }
 
-            NodeList nodes = objectElem.getChildNodes();
-            int length = nodes.getLength();
+            Node firstChild = objectElem.getFirstChild();
             // Register Ids of the Object child elements
-            for (int i = 0; i < length; i++) {
-                Node child = nodes.item(i);
-                if (child.getNodeType() == Node.ELEMENT_NODE) {
-                    Element childElem = (Element)child;
+            while (firstChild != null) {
+                if (firstChild.getNodeType() == Node.ELEMENT_NODE) {
+                    Element childElem = (Element)firstChild;
                     String tag = childElem.getLocalName();
                     if (tag.equals("Manifest")) {
                         new Manifest(childElem, baseURI);
@@ -442,6 +439,7 @@ public final class XMLSignature extends 
                         new SignatureProperties(childElem, baseURI);
                     }
                 }
+                firstChild = firstChild.getNextSibling();
             }
 
             objectElem = XMLUtils.getNextElement(objectElem.getNextSibling());

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java Fri Jun 13 11:20:43 2014
@@ -41,7 +41,6 @@ import org.w3c.dom.Attr;
 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;
 
 /**
@@ -286,9 +285,8 @@ public abstract class AbstractOutputProc
 
         QName elementName = new QName(element.getNamespaceURI(), element.getLocalName(), element.getPrefix());
         createStartElementAndOutputAsEvent(outputProcessorChain, elementName, namespaces, attributes);
-        NodeList childNodes = element.getChildNodes();
-        for (int i = 0; i < childNodes.getLength(); i++) {
-            Node childNode = childNodes.item(i);
+        Node childNode = element.getFirstChild();
+        while (childNode != null) {
             switch (childNode.getNodeType()) {
                 case Node.ELEMENT_NODE:
                     outputDOMElement((Element) childNode, outputProcessorChain);
@@ -297,6 +295,7 @@ public abstract class AbstractOutputProc
                     createCharactersAndOutputAsEvent(outputProcessorChain, ((Text) childNode).getData());
                     break;
             }
+            childNode = childNode.getNextSibling();
         }
         createEndElementAndOutputAsEvent(outputProcessorChain, elementName);
     }

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/implementations/TransformXPath.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/implementations/TransformXPath.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/implementations/TransformXPath.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/implementations/TransformXPath.java Fri Jun 13 11:20:43 2014
@@ -92,7 +92,7 @@ public class TransformXPath extends Tran
 
                 throw new TransformationException("xml.WrongContent", exArgs);
             }
-            Node xpathnode = xpathElement.getChildNodes().item(0);
+            Node xpathnode = xpathElement.getFirstChild();
             String str = XMLUtils.getStrFromNode(xpathnode);
             input.setNeedsToBeExpanded(needsCircumvent(str));
             if (xpathnode == null) {

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java Fri Jun 13 11:20:43 2014
@@ -250,14 +250,12 @@ public class XPath2FilterContainer exten
      * @return the first Text node which contains information from the XPath 2 Filter String
      */
     public Node getXPathFilterTextNode() {
-
-        NodeList children = getElement().getChildNodes();
-        int length = children.getLength();
-
-        for (int i = 0; i < length; i++) {
-            if (children.item(i).getNodeType() == Node.TEXT_NODE) {
-                return children.item(i);
+        Node childNode = getElement().getFirstChild();
+        while (childNode != null) {
+            if (childNode.getNodeType() == Node.TEXT_NODE) {
+                return childNode;
             }
+            childNode = childNode.getNextSibling();
         }
 
         return null;

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java Fri Jun 13 11:20:43 2014
@@ -24,7 +24,6 @@ import org.apache.xml.security.utils.Ele
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * Implements the parameters for the <A
@@ -218,13 +217,12 @@ public class XPath2FilterContainer04 ext
      * @return the first Text node which contains information from the XPath 2 Filter String
      */
     public Node getXPathFilterTextNode() {
-        NodeList children = getElement().getChildNodes();
-        int length = children.getLength();
-
-        for (int i = 0; i < length; i++) {
-            if (children.item(i).getNodeType() == Node.TEXT_NODE) {
-                return children.item(i);
+        Node childNode = getElement().getFirstChild();
+        while (childNode != null) {
+            if (childNode.getNodeType() == Node.TEXT_NODE) {
+                return childNode;
             }
+            childNode = childNode.getNextSibling();
         }
 
         return null;

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java Fri Jun 13 11:20:43 2014
@@ -23,7 +23,7 @@ import org.apache.xml.security.transform
 import org.apache.xml.security.utils.Constants;
 import org.apache.xml.security.utils.SignatureElementProxy;
 import org.w3c.dom.Document;
-import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
 import org.w3c.dom.Text;
 
 /**
@@ -50,12 +50,11 @@ public class XPathContainer extends Sign
      * @param xpath
      */
     public void setXPath(String xpath) {
-        if (getElement().getChildNodes() != null) {
-            NodeList nl = getElement().getChildNodes();
-
-            for (int i = 0; i < nl.getLength(); i++) {
-                getElement().removeChild(nl.item(i));
-            }
+        Node childNode = getElement().getFirstChild();
+        while (childNode != null) {
+            Node nodeToBeRemoved = childNode;
+            childNode = childNode.getNextSibling();
+            getElement().removeChild(nodeToBeRemoved);
         }
 
         Text xpathText = createText(xpath);

Modified: santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/signature/InvalidKeyTest.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/signature/InvalidKeyTest.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/signature/InvalidKeyTest.java (original)
+++ santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/signature/InvalidKeyTest.java Fri Jun 13 11:20:43 2014
@@ -77,10 +77,9 @@ public class InvalidKeyTest extends org.
             ((Element)assertion).setIdAttributeNode(attr, true);
         }
         
-        NodeList nl = assertion.getChildNodes();
-        Element n = (Element)nl.item(nl.getLength()-1);
+        Element n = (Element)assertion.getLastChild();
             
-        XMLSignature si = new XMLSignature(n,"");
+        XMLSignature si = new XMLSignature(n, "");
         si.checkSignatureValue(pk);
 
         // System.out.println("VALIDATION OK" );

Modified: santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/SignatureCreationTest.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/SignatureCreationTest.java?rev=1602377&r1=1602376&r2=1602377&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/SignatureCreationTest.java (original)
+++ santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/SignatureCreationTest.java Fri Jun 13 11:20:43 2014
@@ -92,14 +92,14 @@ public class SignatureCreationTest exten
             XMLUtils.createDocumentBuilder(false).parse(new ByteArrayInputStream(baos.toByteArray()));
 
         //first child element must be the dsig:Signature @see SANTUARIO-324:
-        NodeList nodeList = document.getDocumentElement().getChildNodes();
-        for (int i = 0; i < nodeList.getLength(); i++) {
-            Node child = nodeList.item(i);
-            if (child.getNodeType() == Node.ELEMENT_NODE) {
-                Element element = (Element)child;
+        Node childNode = document.getDocumentElement().getFirstChild();
+        while (childNode != null) {
+            if (childNode.getNodeType() == Node.ELEMENT_NODE) {
+                Element element = (Element)childNode;
                 Assert.assertEquals(element.getLocalName(), "Signature");
                 break;
             }
+            childNode = childNode.getNextSibling();
         }
         
         // Verify using DOM
@@ -196,14 +196,14 @@ public class SignatureCreationTest exten
                 XMLUtils.createDocumentBuilder(false).parse(new ByteArrayInputStream(baos.toByteArray()));
 
         //first child element must be the dsig:Signature @see SANTUARIO-324:
-        NodeList nodeList = document.getDocumentElement().getChildNodes();
-        for (int i = 0; i < nodeList.getLength(); i++) {
-            Node child = nodeList.item(i);
-            if (child.getNodeType() == Node.ELEMENT_NODE) {
-                Element element = (Element)child;
+        Node childNode = document.getDocumentElement().getFirstChild();
+        while (childNode != null) {
+            if (childNode.getNodeType() == Node.ELEMENT_NODE) {
+                Element element = (Element)childNode;
                 Assert.assertEquals(element.getLocalName(), "Signature");
                 break;
             }
+            childNode = childNode.getNextSibling();
         }
 
         // Verify using DOM
@@ -258,14 +258,14 @@ public class SignatureCreationTest exten
             XMLUtils.createDocumentBuilder(false).parse(new ByteArrayInputStream(baos.toByteArray()));
 
         //first child element must be the dsig:Signature @see SANTUARIO-324:
-        NodeList nodeList = document.getDocumentElement().getChildNodes();
-        for (int i = 0; i < nodeList.getLength(); i++) {
-            Node child = nodeList.item(i);
-            if (child.getNodeType() == Node.ELEMENT_NODE) {
-                Element element = (Element)child;
+        Node childNode = document.getDocumentElement().getFirstChild();
+        while (childNode != null) {
+            if (childNode.getNodeType() == Node.ELEMENT_NODE) {
+                Element element = (Element)childNode;
                 Assert.assertEquals(element.getLocalName(), "Signature");
                 break;
             }
+            childNode = childNode.getNextSibling();
         }
         
         // Verify using DOM