[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