You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by eg...@apache.org on 2009/05/18 14:56:29 UTC
svn commit: r775926 - in /cxf/trunk:
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java
systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
Author: eglynn
Date: Mon May 18 12:56:29 2009
New Revision: 775926
URL: http://svn.apache.org/viewvc?rev=775926&view=rev
Log:
Fixed NPE exception in Dispatch client in receipt of partial response when operation was provided via Message.WSDL_OPERATION property on request context.
Modified:
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java?rev=775926&r1=775925&r2=775926&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java Mon May 18 12:56:29 2009
@@ -55,7 +55,8 @@
public void handleMessage(Message message) throws Fault {
Exchange ex = message.getExchange();
BindingOperationInfo boi = ex.get(BindingOperationInfo.class);
- if (boi == null) {
+ if (Boolean.TRUE.equals(message.get(Message.PARTIAL_RESPONSE_MESSAGE))
+ || boi == null) {
return;
}
Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java?rev=775926&r1=775925&r2=775926&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java Mon May 18 12:56:29 2009
@@ -28,6 +28,7 @@
import java.util.concurrent.Executors;
import java.util.logging.Logger;
+import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
@@ -39,8 +40,8 @@
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
-
import javax.xml.ws.WebServiceException;
+import javax.xml.ws.handler.MessageContext;
import org.w3c.dom.Document;
@@ -92,8 +93,12 @@
public class SequenceTest extends AbstractBusClientServerTestBase {
private static final Logger LOG = LogUtils.getLogger(SequenceTest.class);
+ private static final QName GREETMEONEWAY_NAME
+ = new QName("http://cxf.apache.org/greeter_control", "greetMeOneWay");
private static final String GREETMEONEWAY_ACTION
= "http://cxf.apache.org/greeter_control/Greeter/greetMeOneWayRequest";
+ private static final QName GREETME_NAME
+ = new QName("http://cxf.apache.org/greeter_control", "greetMe");
private static final String GREETME_ACTION
= "http://cxf.apache.org/greeter_control/Greeter/greetMeRequest";
private static final String GREETME_RESPONSE_ACTION
@@ -188,23 +193,24 @@
greeter.greetMeOneWay("twice");
greeter.greetMeOneWay("thrice");
- verifyOnewayAnonymousAcks(GREETMEONEWAY_ACTION);
+ verifyOnewayAnonymousAcks();
}
@Test
public void testOnewayAnonymousAcksDispatch() throws Exception {
init("org/apache/cxf/systest/ws/rm/rminterceptors.xml", false, true);
+ dispatch.getRequestContext().put(MessageContext.WSDL_OPERATION,
+ GREETMEONEWAY_NAME);
+
dispatch.invokeOneWay(getDOMRequest("One", true));
dispatch.invokeOneWay(getDOMRequest("Two", true));
dispatch.invokeOneWay(getDOMRequest("Three", true));
- String dispatchStyleAction =
- "http://cxf.apache.org/jaxws/dispatch/Greeter/InvokeOneWayRequest";
- verifyOnewayAnonymousAcks(dispatchStyleAction);
+ verifyOnewayAnonymousAcks();
}
- private void verifyOnewayAnonymousAcks(String greeterAction) throws Exception {
+ private void verifyOnewayAnonymousAcks() throws Exception {
// three application messages plus createSequence
awaitMessages(4, 4);
@@ -213,9 +219,9 @@
mf.verifyMessages(4, true);
String[] expectedActions = new String[] {RMConstants.getCreateSequenceAction(),
- greeterAction,
- greeterAction,
- greeterAction};
+ GREETMEONEWAY_ACTION,
+ GREETMEONEWAY_ACTION,
+ GREETMEONEWAY_ACTION};
mf.verifyActions(expectedActions, true);
mf.verifyMessageNumbers(new String[] {null, "1", "2", "3"}, true);
@@ -422,23 +428,24 @@
assertEquals("TWO", greeter.greetMe("two"));
assertEquals("THREE", greeter.greetMe("three"));
- verifyTwowayNonAnonymous(GREETME_ACTION);
+ verifyTwowayNonAnonymous();
}
@Test
public void testTwowayNonAnonymousDispatch() throws Exception {
init("org/apache/cxf/systest/ws/rm/rminterceptors.xml", true, true);
+ dispatch.getRequestContext().put(MessageContext.WSDL_OPERATION,
+ GREETME_NAME);
+
verifyDOMResponse(dispatch.invoke(getDOMRequest("One")), "ONE");
verifyDOMResponse(dispatch.invoke(getDOMRequest("Two")), "TWO");
verifyDOMResponse(dispatch.invoke(getDOMRequest("Three")), "THREE");
- String dispatchStyleAction =
- "http://cxf.apache.org/jaxws/dispatch/Greeter/InvokeRequest";
- verifyTwowayNonAnonymous(dispatchStyleAction);
+ verifyTwowayNonAnonymous();
}
- private void verifyTwowayNonAnonymous(String greeterAction) throws Exception {
+ private void verifyTwowayNonAnonymous() throws Exception {
// CreateSequence and three greetMe messages
// TODO there should be partial responses to the decoupled responses!
@@ -450,9 +457,9 @@
mf.verifyMessages(4, true);
String[] expectedActions = new String[] {RMConstants.getCreateSequenceAction(),
- greeterAction,
- greeterAction,
- greeterAction};
+ GREETME_ACTION,
+ GREETME_ACTION,
+ GREETME_ACTION};
mf.verifyActions(expectedActions, true);
mf.verifyMessageNumbers(new String[] {null, "1", "2", "3"}, true);
mf.verifyLastMessage(new boolean[] {false, false, false, false}, true);