Author: thilinamb
Date: Thu Sep 29 11:06:11 2011
New Revision: 1177260

URL: http://svn.apache.org/viewvc?rev=1177260&view=rev
Log:
Committing the patch provided by AmilaJ for RAMPART-336.

Modified:
    
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java?rev=1177260&r1=1177259&r2=1177260&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java
 Thu Sep 29 11:06:11 2011
@@ -217,6 +217,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()) {
@@ -231,14 +235,17 @@ public class Axis2Util {
                                // retrieve all child nodes (including any text 
nodes)
                                // and re-attach to header block
                                Iterator children = element.getChildren();
-                               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