Skip to content

Commit d67bced

Browse files
committed
SWS-248
1 parent 2defbcb commit d67bced

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

core/src/main/java/org/springframework/ws/pox/dom/DomPoxMessage.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@
2626
import javax.xml.transform.dom.DOMSource;
2727
import javax.xml.transform.stream.StreamResult;
2828

29+
import org.w3c.dom.Document;
30+
import org.w3c.dom.Element;
31+
import org.w3c.dom.NodeList;
32+
2933
import org.springframework.util.Assert;
3034
import org.springframework.ws.pox.PoxMessage;
3135
import org.springframework.ws.transport.TransportConstants;
3236
import org.springframework.ws.transport.TransportOutputStream;
3337
import org.springframework.xml.namespace.QNameUtils;
34-
import org.w3c.dom.Document;
35-
import org.w3c.dom.Element;
3638

3739
/**
3840
* Implementation of the <code>PoxMessage</code> interface that is based on a DOM Document.
@@ -69,6 +71,10 @@ public Document getDocument() {
6971
}
7072

7173
public Result getPayloadResult() {
74+
NodeList children = document.getChildNodes();
75+
for (int i = 0; i < children.getLength(); i++) {
76+
document.removeChild(children.item(i));
77+
}
7278
return new DOMResult(document);
7379
}
7480

core/src/test/java/org/springframework/ws/pox/dom/DomPoxMessageTest.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@
2323
import javax.xml.transform.TransformerFactory;
2424

2525
import org.custommonkey.xmlunit.XMLTestCase;
26+
import org.w3c.dom.Document;
27+
2628
import org.springframework.xml.transform.StringResult;
2729
import org.springframework.xml.transform.StringSource;
28-
import org.w3c.dom.Document;
2930

3031
public class DomPoxMessageTest extends XMLTestCase {
3132

@@ -53,6 +54,15 @@ public void testGetPayload() throws Exception {
5354
assertXMLEqual(content, stringResult.toString());
5455
}
5556

57+
public void testGetPayloadResultTwice() throws Exception {
58+
String content = "<element xmlns=\"http://www.springframework.org/spring-ws\" />";
59+
transformer.transform(new StringSource(content), message.getPayloadResult());
60+
transformer.transform(new StringSource(content), message.getPayloadResult());
61+
StringResult stringResult = new StringResult();
62+
transformer.transform(message.getPayloadSource(), stringResult);
63+
assertXMLEqual(content, stringResult.toString());
64+
}
65+
5666
public void testWriteTo() throws Exception {
5767
String content = "<root xmlns='http://www.springframework.org/spring-ws'>" + "<child/></root>";
5868
StringSource source = new StringSource(content);

0 commit comments

Comments
 (0)