Author: dkulp
Date: Fri Apr 27 13:17:20 2007
New Revision: 533208
URL: http://svn.apache.org/viewvc?view=rev&rev=533208
Log:
[CXF-609] Patch from jgenender. Thanks Jeff!
Disable Multiplex tests. The latest RM/Addressing changes broke them.
Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexClientServerTest.java
Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java?view=diff&rev=533208&r1=533207&r2=533208
==============================================================================
---
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
(original)
+++
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
Fri Apr 27 13:17:20 2007
@@ -32,6 +32,9 @@
import java.util.logging.Logger;
import javax.xml.bind.JAXBContext;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.soap.SOAPFault;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
@@ -40,12 +43,15 @@
import javax.xml.ws.WebServiceException;
import javax.xml.ws.http.HTTPBinding;
import javax.xml.ws.http.HTTPException;
+import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.soap.SOAPFaultException;
import org.apache.cxf.Bus;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.endpoint.ConduitSelector;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.endpoint.UpfrontConduitSelector;
+import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.interceptor.Interceptor;
import org.apache.cxf.jaxws.interceptors.DispatchInInterceptor;
import org.apache.cxf.jaxws.interceptors.DispatchOutInterceptor;
@@ -147,7 +153,18 @@
getConduitSelector().complete(exchange);
if (message.getContent(Exception.class) != null) {
- if (getBinding() instanceof HTTPBinding) {
+ if (getBinding() instanceof SOAPBinding) {
+ try {
+ SOAPFault soapFault =
SOAPFactory.newInstance().createFault();
+ Fault fault = (Fault)message.getContent(Exception.class);
+ soapFault.setFaultCode(fault.getFaultCode());
+ soapFault.setFaultString(fault.getMessage());
+ SOAPFaultException exception = new
SOAPFaultException(soapFault);
+ throw exception;
+ } catch (SOAPException e) {
+ throw new WebServiceException(e);
+ }
+ } else if (getBinding() instanceof HTTPBinding) {
HTTPException exception = new
HTTPException(HttpURLConnection.HTTP_INTERNAL_ERROR);
exception.initCause(message.getContent(Exception.class));
throw exception;
Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java?view=diff&rev=533208&r1=533207&r2=533208
==============================================================================
---
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java
(original)
+++
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java
Fri Apr 27 13:17:20 2007
@@ -28,6 +28,7 @@
import javax.xml.ws.Service;
import javax.xml.ws.http.HTTPBinding;
import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.soap.SOAPFaultException;
import org.w3c.dom.Document;
@@ -43,11 +44,13 @@
import org.junit.Before;
import org.junit.Test;
-
public class DispatchTest extends AbstractJaxWsTest {
- private final QName serviceName = new
QName("http://apache.org/hello_world_soap_http", "SOAPService");
+ private final QName serviceName = new
QName("http://apache.org/hello_world_soap_http", "SOAPService");
+
private final QName portName = new
QName("http://apache.org/hello_world_soap_http", "SoapPort");
+
private final String address =
"http://localhost:9000/SoapContext/SoapPort";
+
private Destination d;
@Before
@@ -57,17 +60,17 @@
d = localTransport.getDestination(ei);
}
-
+
@Test
public void testJAXB() throws Exception {
d.setMessageObserver(new
MessageReplayObserver("/org/apache/cxf/jaxws/sayHiResponse.xml"));
-
+
URL wsdl = getClass().getResource("/wsdl/hello_world.wsdl");
assertNotNull(wsdl);
SOAPService service = new SOAPService(wsdl, serviceName);
assertNotNull(service);
-
+
JAXBContext jc =
JAXBContext.newInstance("org.apache.hello_world_soap_http.types");
Dispatch<Object> disp = service.createDispatch(portName, jc,
Service.Mode.PAYLOAD);
@@ -77,40 +80,60 @@
assertNotNull(response);
assertTrue(response instanceof SayHiResponse);
}
-
+
@Test
public void testDOMSource() throws Exception {
ServiceImpl service =
- new ServiceImpl(getBus(),
- getClass().getResource("/wsdl/hello_world.wsdl"),
- serviceName,
- null);
-
+ new ServiceImpl(getBus(),
getClass().getResource("/wsdl/hello_world.wsdl"), serviceName, null);
+
Dispatch<Source> disp = service.createDispatch(portName, Source.class,
Service.Mode.MESSAGE);
disp.getRequestContext().put(Dispatch.ENDPOINT_ADDRESS_PROPERTY,
address);
-
+
d.setMessageObserver(new
MessageReplayObserver("/org/apache/cxf/jaxws/sayHiResponse.xml"));
-
+
Document doc =
DOMUtils.readXml(getResourceAsStream("/org/apache/cxf/jaxws/sayHi.xml"));
DOMSource source = new DOMSource(doc);
Source res = disp.invoke(source);
assertNotNull(res);
-
+
}
-
+
@Test
public void testHTTPBinding() throws Exception {
- ServiceImpl service = new ServiceImpl(getBus(), null, serviceName,
null);
+ ServiceImpl service = new ServiceImpl(getBus(), null, serviceName,
null);
service.addPort(portName, HTTPBinding.HTTP_BINDING, "local://foobar");
Dispatch<Source> disp = service.createDispatch(portName, Source.class,
Service.Mode.MESSAGE);
- assertTrue(disp.getBinding() instanceof HTTPBinding);
+ assertTrue(disp.getBinding() instanceof HTTPBinding);
}
-
+
@Test
public void testSOAPPBinding() throws Exception {
- ServiceImpl service = new ServiceImpl(getBus(), null, serviceName,
null);
+ ServiceImpl service = new ServiceImpl(getBus(), null, serviceName,
null);
service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING,
"local://foobar");
Dispatch<Source> disp = service.createDispatch(portName, Source.class,
Service.Mode.MESSAGE);
- assertTrue(disp.getBinding() instanceof SOAPBinding);
+ assertTrue(disp.getBinding() instanceof SOAPBinding);
+ }
+
+ @Test
+ public void testSOAPPBindingNullMessage() throws Exception {
+ d.setMessageObserver(new
MessageReplayObserver("/org/apache/cxf/jaxws/sayHiResponse.xml"));
+
+ URL wsdl = getClass().getResource("/wsdl/hello_world.wsdl");
+ assertNotNull(wsdl);
+
+ SOAPService service = new SOAPService(wsdl, serviceName);
+ assertNotNull(service);
+
+ JAXBContext jc =
JAXBContext.newInstance("org.apache.hello_world_soap_http.types");
+ Dispatch<Object> disp = service.createDispatch(portName, jc,
Service.Mode.PAYLOAD);
+ try {
+ // Send a null message
+ disp.invoke(null);
+ } catch (SOAPFaultException e) {
+ //Passed
+ return;
+ }
+
+ fail("SOAPFaultException was not thrown");
}
}
Modified:
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexClientServerTest.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexClientServerTest.java?view=diff&rev=533208&r1=533207&r2=533208
==============================================================================
---
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexClientServerTest.java
(original)
+++
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexClientServerTest.java
Fri Apr 27 13:17:20 2007
@@ -37,9 +37,11 @@
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
[EMAIL PROTECTED]
public class MultiplexClientServerTest extends AbstractBusClientServerTestBase
{
public static class Server extends AbstractBusTestServerBase {