You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2012/10/03 17:31:21 UTC
svn commit: r1393546 -
/cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java
Author: dkulp
Date: Wed Oct 3 15:31:21 2012
New Revision: 1393546
URL: http://svn.apache.org/viewvc?rev=1393546&view=rev
Log:
Merged revisions 1392577 via git cherry-pick from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1392577 | dkulp | 2012-10-01 16:37:15 -0400 (Mon, 01 Oct 2012) | 2 lines
[CXF-4522] Update the soap:body content for SOAPMessage
........
Modified:
cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java
Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java?rev=1393546&r1=1393545&r2=1393546&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java Wed Oct 3 15:31:21 2012
@@ -44,6 +44,8 @@ import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+import com.ibm.wsdl.util.xml.DOMUtils;
+
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.saaj.SAAJFactoryResolver;
import org.apache.cxf.binding.soap.saaj.SAAJUtils;
@@ -52,8 +54,10 @@ import org.apache.cxf.common.logging.Log
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.io.CachedOutputStream;
import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.message.XMLMessage;
import org.apache.cxf.staxutils.StaxUtils;
+import org.apache.cxf.staxutils.W3CDOMStreamReader;
import org.apache.cxf.staxutils.W3CDOMStreamWriter;
@@ -184,11 +188,29 @@ public class LogicalMessageImpl implemen
return source;
}
- public void setPayload(Source s) {
+ public void setPayload(Source s) {
Message message = msgContext.getWrappedMessage();
Service.Mode mode = (Service.Mode)msgContext.getWrappedMessage()
.getContextualProperty(Service.Mode.class.getName());
- if (mode != null) {
+ SOAPMessage m = message.getContent(SOAPMessage.class);
+ if (m != null && !MessageUtils.isOutbound(message)) {
+ try {
+ SAAJUtils.getBody(m).removeContents();
+ W3CDOMStreamWriter writer = new W3CDOMStreamWriter(SAAJUtils.getBody(m));
+ StaxUtils.copy(s, writer);
+ writer.flush();
+ writer.close();
+ if (mode == Service.Mode.MESSAGE) {
+ s = new DOMSource(m.getSOAPPart());
+ } else {
+ s = new DOMSource(SAAJUtils.getBody(m).getFirstChild());
+ }
+ W3CDOMStreamReader r = new W3CDOMStreamReader(DOMUtils.getFirstChildElement(SAAJUtils.getBody(m)));
+ message.setContent(XMLStreamReader.class, r);
+ } catch (Exception e) {
+ throw new Fault(e);
+ }
+ } else if (mode != null) {
if (message instanceof SoapMessage) {
if (mode == Service.Mode.MESSAGE) {
try {