Author: hiranya
Date: Sat May  7 12:10:05 2011
New Revision: 1100517

URL: http://svn.apache.org/viewvc?rev=1100517&view=rev
Log:
Fixing some bugs in the SOAP conversion logic and adding a test case

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SOAPUtils.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SOAPUtils.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SOAPUtils.java?rev=1100517&r1=1100516&r2=1100517&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SOAPUtils.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SOAPUtils.java
 Sat May  7 12:10:05 2011
@@ -136,13 +136,16 @@ public class SOAPUtils {
 
                         Iterator itrChildren = soapHeader.getChildren();
                         while (itrChildren.hasNext()) {
-                            newSOAPHeader.addChild(((OMNode) 
itrChildren.next()));
+                            OMNode node = (OMNode) itrChildren.next();
+                            itrChildren.remove();
+                            newSOAPHeader.addChild(node);
                         }
 
                         newEnvelope.getHeader().addChild(newSOAPHeader);
                     } // while(allAttributes.hasNext())
 
                 } else {
+                    itr.remove();
                     newEnvelope.getHeader().addChild(omNode);
                 }
 
@@ -198,13 +201,15 @@ public class SOAPUtils {
                                 = 
soap12Factory.createSOAPFaultDetail(newSOAPFault);
                         Iterator<OMElement> iter = 
detail.getAllDetailEntries();
                         while (iter.hasNext()) {
-                          OMElement detailEntry = iter.next();
-                          newSOAPFaultDetail.addDetailEntry(detailEntry);
+                            OMElement detailEntry = iter.next();
+                            iter.remove();
+                            newSOAPFaultDetail.addDetailEntry(detailEntry);
                         }
                          newSOAPFault.setDetail(newSOAPFaultDetail);
                     }
 
                 } else {
+                    itrBodyChildren.remove();
                     newEnvelope.getBody().addChild(omNode);
 
                 } // if (omNode instanceof SOAPFault)
@@ -287,13 +292,16 @@ public class SOAPUtils {
 
                         Iterator itrChildren = soapHeaderBlock.getChildren();
                         while (itrChildren.hasNext()) {
-                            newSOAPHeader.addChild(((OMNode) 
itrChildren.next()));
+                            OMNode node = (OMNode) itrChildren.next();
+                            itrChildren.remove();
+                            newSOAPHeader.addChild(node);
                         }
 
                         newEnvelope.getHeader().addChild(newSOAPHeader);
                     }
 
                 } else {
+                    itr.remove();
                     newEnvelope.getHeader().addChild(omNode);
                 }
             }
@@ -331,6 +339,7 @@ public class SOAPUtils {
                     Iterator iterAllSoapTexts = allSoapTexts.iterator();
                     if (iterAllSoapTexts.hasNext()) {
                         SOAPFaultText soapFaultText = (SOAPFaultText) 
iterAllSoapTexts.next();
+                        iterAllSoapTexts.remove();
                         newSOAPFaultReason.setText(soapFaultText.getText());
                     }
                 }
@@ -342,6 +351,7 @@ public class SOAPUtils {
                     Iterator<OMElement> iter = detail.getAllDetailEntries();
                     while (iter.hasNext()) {
                         OMElement detailEntry = iter.next();
+                        iter.remove();
                         newSOAPFaultDetail.addDetailEntry(detailEntry);
                     }
                     newSOAPFault.setDetail(newSOAPFaultDetail);
@@ -352,6 +362,7 @@ public class SOAPUtils {
                 while (itr.hasNext()) {
                     OMNode omNode = (OMNode) itr.next();
                     if (omNode != null) {
+                        itr.remove();
                         newEnvelope.getBody().addChild(omNode);
                     }
                 }


Reply via email to