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:32:34 UTC

svn commit: r1602385 - in /santuario/xml-security-java/branches/1.5.x-fixes/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/tran...

Author: coheigea
Date: Fri Jun 13 11:32:34 2014
New Revision: 1602385

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


Conflicts:
	src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java
	src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java
	src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java
	src/main/java/org/apache/xml/security/keys/KeyInfo.java
	src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java
	src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java
	src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java
	src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java
	src/test/java/org/apache/xml/security/test/signature/InvalidKeyTest.java
	src/test/java/org/apache/xml/security/test/stax/signature/SignatureCreationTest.java

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

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMKeyInfo.java Fri Jun 13 11:32:34 2014
@@ -36,7 +36,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;
 
 /**
  * DOM-based implementation of KeyInfo.
@@ -97,36 +96,32 @@ public final class DOMKeyInfo extends DO
         }
 
         // 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/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMPGPData.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMPGPData.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMPGPData.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMPGPData.java Fri Jun 13 11:32:34 2014
@@ -33,7 +33,6 @@ import javax.xml.crypto.dsig.keyinfo.PGP
 import org.w3c.dom.Document;
 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;
 
@@ -145,13 +144,12 @@ public final class DOMPGPData extends DO
         // 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 {
@@ -167,6 +165,7 @@ public final class DOMPGPData extends DO
                     throw new MarshalException(bde);
                 }
             }
+            firstChild = firstChild.getNextSibling();
         }
         this.keyId = keyId;
         this.keyPacket = keyPacket;

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java Fri Jun 13 11:32:34 2014
@@ -34,7 +34,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;
 
 /**
  * DOM-based implementation of SignatureProperties.
@@ -98,22 +97,19 @@ public final class DOMSignaturePropertie
             id = null;
         }
 
-        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,
-                                                        context));
+                properties.add(new DOMSignatureProperty((Element)firstChild, context));
             }
+            firstChild = firstChild.getNextSibling();
         }
         if (properties.isEmpty()) {
             throw new MarshalException("properties cannot be empty");

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java Fri Jun 13 11:32:34 2014
@@ -34,7 +34,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;
 
 /**
  * DOM-based implementation of SignatureProperty.
@@ -106,11 +105,11 @@ public final class DOMSignatureProperty 
             id = null;
         }
 
-        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/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMUtils.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMUtils.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMUtils.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMUtils.java Fri Jun 13 11:32:34 2014
@@ -350,9 +350,11 @@ public 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/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMX509Data.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMX509Data.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMX509Data.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMX509Data.java Fri Jun 13 11:32:34 2014
@@ -37,7 +37,6 @@ import javax.security.auth.x500.X500Prin
 import org.w3c.dom.Document;
 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;
 
@@ -98,36 +97,32 @@ public final class DOMX509Data extends D
      */
     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/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java Fri Jun 13 11:32:34 2014
@@ -35,7 +35,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;
 
 /**
  * DOM-based implementation of XMLObject.
@@ -105,28 +104,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, context));
-                    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();
         }
         if (content.isEmpty()) {
             this.content = Collections.emptyList();

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/keys/KeyInfo.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/keys/KeyInfo.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/keys/KeyInfo.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/keys/KeyInfo.java Fri Jun 13 11:32:34 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,
@@ -477,21 +476,19 @@ public class KeyInfo extends SignatureEl
      */
     public int lengthUnknownElement() {
         int res = 0;
-        NodeList nl = this.constructionElement.getChildNodes();
-
-        for (int i = 0; i < nl.getLength(); i++) {
-            Node current = nl.item(i);
-
+        Node childNode = this.constructionElement.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;
     }
 
@@ -690,24 +687,22 @@ public class KeyInfo extends SignatureEl
      * @return the element number of the unknown elements
      */
     public Element itemUnknownElement(int i) {
-        NodeList nl = this.constructionElement.getChildNodes();
         int res = 0;
-
-        for (int j = 0; j < nl.getLength(); j++) {
-            Node current = nl.item(j);
-
+        Node childNode = this.constructionElement.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/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/signature/XMLSignature.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/signature/XMLSignature.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/signature/XMLSignature.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/signature/XMLSignature.java Fri Jun 13 11:32:34 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;
 
 /**
@@ -405,13 +404,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);
@@ -419,6 +416,7 @@ public final class XMLSignature extends 
                         new SignatureProperties(childElem, baseURI);
                     }
                 }
+                firstChild = firstChild.getNextSibling();
             }
 
             objectElem = XMLUtils.getNextElement(objectElem.getNextSibling());

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/implementations/TransformXPath.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/implementations/TransformXPath.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/implementations/TransformXPath.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/implementations/TransformXPath.java Fri Jun 13 11:32:34 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/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer.java Fri Jun 13 11:32:34 2014
@@ -255,14 +255,12 @@ public class XPath2FilterContainer exten
      * @return the first Text node which contains information from the XPath 2 Filter String
      */
     public Node getXPathFilterTextNode() {
-
-        NodeList children = this.constructionElement.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 = this.constructionElement.getFirstChild();
+        while (childNode != null) {
+            if (childNode.getNodeType() == Node.TEXT_NODE) {
+                return childNode;
             }
+            childNode = childNode.getNextSibling();
         }
 
         return null;

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java Fri Jun 13 11:32:34 2014
@@ -25,7 +25,6 @@ import org.apache.xml.security.utils.XML
 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
@@ -224,13 +223,12 @@ public class XPath2FilterContainer04 ext
      * @return the first Text node which contains information from the XPath 2 Filter String
      */
     public Node getXPathFilterTextNode() {
-        NodeList children = this.constructionElement.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 = this.constructionElement.getFirstChild();
+        while (childNode != null) {
+            if (childNode.getNodeType() == Node.TEXT_NODE) {
+                return childNode;
             }
+            childNode = childNode.getNextSibling();
         }
 
         return null;

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/transforms/params/XPathContainer.java Fri Jun 13 11:32:34 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 (this.constructionElement.getChildNodes() != null) {
-            NodeList nl = this.constructionElement.getChildNodes();
-
-            for (int i = 0; i < nl.getLength(); i++) {
-                this.constructionElement.removeChild(nl.item(i));
-            }
+        Node childNode = this.constructionElement.getFirstChild();
+        while (childNode != null) {
+            Node nodeToBeRemoved = childNode;
+            childNode = childNode.getNextSibling();
+            this.constructionElement.removeChild(nodeToBeRemoved);
         }
 
         Text xpathText = this.doc.createTextNode(xpath);

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/test/java/org/apache/xml/security/test/signature/InvalidKeyTest.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/test/java/org/apache/xml/security/test/signature/InvalidKeyTest.java?rev=1602385&r1=1602384&r2=1602385&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/test/java/org/apache/xml/security/test/signature/InvalidKeyTest.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/test/java/org/apache/xml/security/test/signature/InvalidKeyTest.java Fri Jun 13 11:32:34 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((Element)n,"");
+        XMLSignature si = new XMLSignature(n, "");
         si.checkSignatureValue(pk);
 
         // System.out.println("VALIDATION OK" );