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