Author: veithen
Date: Sat May  7 21:24:10 2011
New Revision: 1100628

URL: http://svn.apache.org/viewvc?rev=1100628&view=rev
Log:
AXIS2-5006: Fixed an issue in SOAPElementImpl#copyContents that causes 
incorrect behavior when using appendChild to add a non SOAPHeaderElement to a 
SOAPHeader.

Modified:
    
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
    
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java

Modified: 
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java?rev=1100628&r1=1100627&r2=1100628&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
 Sat May  7 21:24:10 2011
@@ -933,9 +933,8 @@ public class SOAPElementImpl extends Nod
             childEle.addAttribute(name, node.getValue());
         }
 
-        NodeList children = child.getChildNodes();        
-        for (int i = 0; i < children.getLength(); i++) {
-            Node node = children.item(i);
+        Node node;
+        while ((node = child.getFirstChild()) != null) {
             childEle.appendChild(node);
         }
     }

Modified: 
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java?rev=1100628&r1=1100627&r2=1100628&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java
 Sat May  7 21:24:10 2011
@@ -423,4 +423,22 @@ public class SOAPHeaderTest extends Asse
         assertEquals("DEF", text.getData());
         assertFalse(iter.hasNext());   
     }
+    
+    @Validated @Test
+    public void testAXIS2_5006() throws Exception {
+        MessageFactory fact = MessageFactory.newInstance();
+        SOAPMessage message = fact.createMessage();
+        SOAPHeader header = message.getSOAPHeader();
+        
+        Document doc = message.getSOAPPart();
+        Element orgElement = doc.createElementNS("urn:ns", "ns:test");
+        orgElement.appendChild(doc.createElementNS(null, "child1"));
+        orgElement.appendChild(doc.createElementNS(null, "child2"));
+        orgElement.appendChild(doc.createElementNS(null, "child3"));
+        header.appendChild(orgElement);
+        
+        SOAPElement element = (SOAPElement)header.getChildElements().next();
+        assertTrue(element instanceof SOAPHeaderElement);
+        assertEquals(3, element.getChildNodes().getLength());
+    }
 }
\ No newline at end of file


Reply via email to