This is an automated email from the ASF dual-hosted git repository.

billblough pushed a commit to branch 1_5_x
in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-rampart.git

commit c3c59c88d62831488757e58930e8a5666c68b053
Author: Thilina Mahesh Buddhika <thilin...@apache.org>
AuthorDate: Thu Sep 29 11:12:10 2011 +0000

    Committing the patch provided by AmilaJ for RAMPART-336.
---
 .../src/main/java/org/apache/rampart/util/Axis2Util.java  | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git 
a/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java 
b/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java
index 2de1406..7874475 100644
--- a/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java
+++ b/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java
@@ -194,6 +194,10 @@ public class Axis2Util {
                         // it is a header we have added in rampart eg. 
EncryptedHeader and should
                         // be converted to SOAPHeaderBlock for processing
                        } else {
+                            // First detach element from soap header
+                            element.detach();
+
+                            // add new element
                                header = 
soapHeader.addHeaderBlock(element.getLocalName(), element.getNamespace());
                                Iterator attrIter = element.getAllAttributes();
                                while (attrIter.hasNext()) {
@@ -206,14 +210,17 @@ public class Axis2Util {
                                        header.declareNamespace(ns);
                                }
                                Iterator children = element.getChildElements();
-                               while (children.hasNext()) {
+
+                            // Element is a composite element, in which it has 
many siblings.
+                            // All siblings will be added when we add a single 
node.
+                            // See ParentNode.insertBefore(Node newChild, Node 
refChild) for
+                            // more information.
+                               if (children.hasNext()) {
                                        OMNode child = (OMNode)children.next();
                                        children.remove();
                                        header.addChild(child);
                                }
-                               
-                               element.detach();
-                               
+
                                soapHeader.build();
                                
                                header.setProcessed();

Reply via email to