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