[jboss-svn-commits] JBL Code SVN: r37880 - in labs/jbossesb/trunk/product/rosetta: tests/src/org/jboss/internal/soa/esb/webservice and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Feb 6 12:20:52 EST 2012


Author: beve
Date: 2012-02-06 12:20:52 -0500 (Mon, 06 Feb 2012)
New Revision: 37880

Added:
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/BaseWebServiceUnitTest.java
Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
Log:
JBESB-3730 "BaseWebService: DOMException: WRONG_DOCUMENT_ERR when when running with JBoss AS 6.1.0.GA"


Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2012-02-03 17:56:47 UTC (rev 37879)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2012-02-06 17:20:52 UTC (rev 37880)
@@ -240,7 +240,7 @@
                                 {
                                     final Document detailDoc = parseAsDom(faultDetail) ;
                                     final Detail detail = fault.addDetail() ;
-                                    detail.appendChild(detailDoc.getDocumentElement()) ;
+                                    detail.appendChild(detail.getOwnerDocument().importNode(detailDoc.getDocumentElement(), true)) ;
                                 }
                                 catch (final Exception ex2)
                                 {

Added: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/BaseWebServiceUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/BaseWebServiceUnitTest.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/BaseWebServiceUnitTest.java	2012-02-06 17:20:52 UTC (rev 37880)
@@ -0,0 +1,86 @@
+package org.jboss.internal.soa.esb.webservice;
+
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static junit.framework.Assert.assertNotNull;
+
+import java.net.URI;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPMessage;
+
+import junit.framework.JUnit4TestAdapter;
+
+import org.jboss.soa.esb.client.ServiceInvoker;
+import org.jboss.soa.esb.couriers.FaultMessageException;
+import org.jboss.soa.esb.message.Fault;
+import org.jboss.soa.esb.message.Message;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Unit test for {@link BaseWebService}
+ * 
+ * @author Daniel Bevenius
+ */
+public class BaseWebServiceUnitTest
+{
+    private String currentSOAPMessageFactoryImpl;
+    
+    @Before
+    public void setAS610SOAPMessageFactory() {
+        currentSOAPMessageFactoryImpl = System.getProperty("javax.xml.soap.MessageFactory", "");
+        System.setProperty("javax.xml.soap.MessageFactory", "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl");
+    }
+    
+    @After
+    public void resetSOAPMessageFactory() {
+        System.setProperty("javax.xml.soap.MessageFactory", currentSOAPMessageFactoryImpl);
+    }
+    
+    @Test
+    public void createFault_using_default_soap_message_factory() throws Exception {
+        final SOAPMessage result = invokeCausingFault();
+        assertNotNull("No detail was added as added since a DOMException: WRONG_DOCUMENT_ERR was thrown but only logged as WARN", 
+                    result.getSOAPBody().getFault().getDetail().getFirstChild());
+    }
+    
+    private SOAPMessage invokeCausingFault() throws Exception {
+        // Create Message with a fault
+        final Message message = org.jboss.soa.esb.message.format.MessageFactory.getInstance().getMessage();
+        message.getBody().add(Fault.DETAIL_CODE_CONTENT, new QName("someNs", "fault:one"));
+        message.getBody().add(Fault.DETAIL_DESCRIPTION_CONTENT, "Something went wrong");
+        message.getBody().add(Fault.DETAIL_DETAIL_CONTENT, "<detail>Very wrong</detail>");
+        final FaultMessageException faultException = new FaultMessageException("Some error message", new URI("http://dummy.com"), message);
+        
+        // Create mock service invoker
+        final ServiceInvoker serviceInvoker = mock(ServiceInvoker.class);
+        doThrow(faultException).when(serviceInvoker).deliverSync((Message)anyObject(), anyInt());
+        
+        final RequestResponseBaseWebService webService = new RequestResponseBaseWebService("deployment", serviceInvoker, null, null, "action");
+        final SOAPMessage soapMessage = createSOAPMessageWithPayload();
+        return webService.invoke(soapMessage);
+    }
+    
+    private SOAPMessage createSOAPMessageWithPayload() throws Exception
+    {
+        final SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
+        final SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
+        final SOAPBodyElement bodyElement = soapBody.addBodyElement(new QName("content"));
+        bodyElement.addTextNode("dummyPayload");
+        return soapMessage;
+    }
+    
+	public static junit.framework.Test suite()
+	{
+		return new JUnit4TestAdapter( BaseWebServiceUnitTest.class );
+	}
+
+}


Property changes on: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/BaseWebServiceUnitTest.java
___________________________________________________________________
Added: svn:keywords
   + Id Revision
Added: svn:eol-style
   + LF



More information about the jboss-svn-commits mailing list