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);