[jbossws-commits] JBossWS SVN: r13263 - in stack/native/trunk/modules: testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws2651 and 1 other directory.
jbossws-commits at lists.jboss.org
jbossws-commits at lists.jboss.org
Thu Nov 18 04:15:41 EST 2010
Author: jim.ma
Date: 2010-11-18 04:15:40 -0500 (Thu, 18 Nov 2010)
New Revision: 13263
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/soap/EnvelopeBuilderDOM.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws2651/EnvelopBuilderTestCase.java
Log:
[JBWS-3159]:SAAJ implementation does not set the correct NS prefix in SOAP header and body elements
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/soap/EnvelopeBuilderDOM.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/soap/EnvelopeBuilderDOM.java 2010-11-16 22:57:48 UTC (rev 13262)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/soap/EnvelopeBuilderDOM.java 2010-11-18 09:15:40 UTC (rev 13263)
@@ -171,7 +171,12 @@
soapHeader = soapEnv.addHeader();
DOMUtils.copyAttributes(soapHeader, domHeader);
-
+
+ if (!soapHeader.getPrefix().equals(domHeader.getPrefix()))
+ {
+ soapHeader.setPrefix(domHeader.getPrefix());
+ }
+
NodeList headerChildNodes = domHeader.getChildNodes();
for (int i = 0; i < headerChildNodes.getLength(); i++)
{
@@ -212,6 +217,11 @@
DOMUtils.copyAttributes(soapBody, domBody);
+ if (!soapBody.getPrefix().equals(domBody.getPrefix()))
+ {
+ soapBody.setPrefix(domBody.getPrefix());
+ }
+
SOAPBodyElement soapBodyElement = null;
boolean attachHRefElements = Constants.URI_SOAP11_ENC.equals(soapEnv.getAttributeNS(envNS, "encodingStyle"));
Modified: stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws2651/EnvelopBuilderTestCase.java
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws2651/EnvelopBuilderTestCase.java 2010-11-16 22:57:48 UTC (rev 13262)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws2651/EnvelopBuilderTestCase.java 2010-11-18 09:15:40 UTC (rev 13263)
@@ -22,8 +22,13 @@
package org.jboss.test.ws.jaxws.jbws2651;
import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.InputStream;
+import java.io.StringReader;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.transform.stream.StreamSource;
+
import junit.framework.TestCase;
import org.jboss.ws.core.CommonSOAPFaultException;
@@ -78,5 +83,24 @@
}
}
+ //JBWS3159
+ public void testDifferentNSPrefix() throws Exception
+ {
+ String soapMsg = "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>"
+ + "<S:Header xmlns:S='http://schemas.xmlsoap.org/soap/envelope/'/>"
+ + "<S:Body xmlns:S='http://schemas.xmlsoap.org/soap/envelope/'>"
+ + "<ns1:addItemResponse xmlns:ns1='http://org.jboss.ws/addressing/replyto'>"
+ + "<result>Mars Bar</result></ns1:addItemResponse></S:Body></env:Envelope>";
+ SOAPMessageImpl soapMessage = (SOAPMessageImpl) factory.createMessage();
+ StringReader strReader = new java.io.StringReader(soapMsg);
+ StreamSource streamSource2 = new StreamSource(strReader);
+ soapMessage.getSOAPPart().setContent(streamSource2);
+
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ soapMessage.writeTo(bout);
+ assertTrue(new String(bout.toByteArray()).indexOf("S:Header") > -1);
+ assertTrue(new String(bout.toByteArray()).indexOf("S:Body") > -1);
+ }
+
}
More information about the jbossws-commits
mailing list