Author: darran.lofthouse(a)jboss.com
Date: 2010-12-08 13:48:37 -0500 (Wed, 08 Dec 2010)
New Revision: 13432
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/soap/SOAPElementTestCase.java
Log:
[JBWS-3170] SAAJ Where an Element is added to the SOAPBody this should be converted to a
SOAPElement
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java 2010-12-08
16:52:32 UTC (rev 13431)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java 2010-12-08
18:48:37 UTC (rev 13432)
@@ -269,8 +269,21 @@
return validChild == false;
}
- private static SOAPBodyElementDoc convertToBodyElement(Node node)
+ private static SOAPBodyElementDoc convertToBodyElement(Node node) throws DOMException
{
+ if (!(node instanceof SOAPElementImpl) && (node instanceof Element))
+ {
+ try
+ {
+ SOAPFactoryImpl soapFactory = new SOAPFactoryImpl();
+ node = (SOAPElementImpl)soapFactory.createElement((Element)node);
+ }
+ catch (SOAPException ex)
+ {
+ throw new DOMException(DOMException.INVALID_STATE_ERR, "Could not
convert Element to a SOAPElement");
+ }
+ }
+
if (!(node instanceof SOAPElementImpl))
throw new IllegalArgumentException("SOAPElement expected");
Modified:
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/soap/SOAPElementTestCase.java
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/soap/SOAPElementTestCase.java 2010-12-08
16:52:32 UTC (rev 13431)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/soap/SOAPElementTestCase.java 2010-12-08
18:48:37 UTC (rev 13432)
@@ -22,7 +22,6 @@
package org.jboss.test.ws.common.soap;
import java.io.ByteArrayInputStream;
-import java.io.File;
import java.io.InputStream;
import java.util.Iterator;
@@ -38,6 +37,7 @@
import org.jboss.wsf.test.JBossWSTest;
import org.w3c.dom.Document;
+import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -97,6 +97,24 @@
assertEquals(se, se2);
}
+ // JBWS-3170
+ public void testAppendNonSoapElement() throws Exception
+ {
+ MessageFactory msgFactory = MessageFactory.newInstance();
+ SOAPMessage soapMessage = msgFactory.createMessage();
+ SOAPEnvelope env = soapMessage.getSOAPPart().getEnvelope();
+ SOAPBody body = env.getBody();
+
+ Element e = body.getOwnerDocument().createElement("MyChild1");
+ SOAPElement se = (SOAPElement)body.appendChild(e);
+ assertNotNull("Expected an element", se);
+
+ assertEquals("Expected 1 child element", 1,
getIteratorCount(body.getChildElements()));
+
+ SOAPElement se2 = (SOAPElement)body.getChildElements().next();
+ assertEquals(se, se2);
+ }
+
//JBWS-2346
public void testGetElementByTagNameNS() throws Exception
{
Show replies by date