You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/03/12 15:49:29 UTC

svn commit: r752880 - in /cxf/trunk: rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ systests/src/test/java/org/apache/cxf/systest/jaxws/

Author: dkulp
Date: Thu Mar 12 14:49:29 2009
New Revision: 752880

URL: http://svn.apache.org/viewvc?rev=752880&view=rev
Log:
Fix problems with methods ending in Async always being treated async
Copy the request context for async Dispatch calls to avoid issues with thread local


Modified:
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchAsyncCallable.java
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchAsyncCallable.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchAsyncCallable.java?rev=752880&r1=752879&r2=752880&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchAsyncCallable.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchAsyncCallable.java Thu Mar 12 14:49:29 2009
@@ -31,15 +31,19 @@
     private Dispatch<T> dispatch;
     private T object;
     private AsyncHandler callback;
+    private Map<String, Object> ctx;
     
     public DispatchAsyncCallable(Dispatch<T> disp, T obj, AsyncHandler c) {
         dispatch = disp;
         object = obj;
         callback = c;
+        ctx = disp.getRequestContext();
     }
 
     @SuppressWarnings("unchecked")
     public T call() throws Exception {
+        dispatch.getRequestContext().clear();
+        dispatch.getRequestContext().putAll(ctx);
         final T result = dispatch.invoke(object);
         if (callback != null) {
             callback.handleResponse(new Response<Object>() {

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java?rev=752880&r1=752879&r2=752880&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java Thu Mar 12 14:49:29 2009
@@ -46,6 +46,8 @@
 
 import org.w3c.dom.Node;
 
+import com.sun.corba.se.impl.orbutil.closure.Future;
+
 import org.apache.cxf.binding.soap.SoapFault;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
@@ -113,7 +115,7 @@
         }
 
         client.getRequestContext().put(Method.class.getName(), method);
-        boolean isAsync = method.getName().endsWith("Async");
+        boolean isAsync = isAsync(method);
 
         Object result = null;
         try {
@@ -165,6 +167,11 @@
         return result;
 
     }
+    boolean isAsync(Method m) {
+        return m.getName().endsWith("Async")
+            && (Future.class.equals(m.getReturnType()) 
+                || Response.class.equals(m.getReturnType()));
+    }
     
     private SOAPFault createSoapFault(Exception ex) throws SOAPException {
         SOAPFault soapFault;

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java?rev=752880&r1=752879&r2=752880&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java Thu Mar 12 14:49:29 2009
@@ -279,6 +279,8 @@
         port.doOneWay();
         assertTrue((System.currentTimeMillis() - start) < 500);
         
+        assertEquals("Hello", port.echoStringNotReallyAsync("Hello"));
+        
         Set<Foo> fooSet = port.getFooSet();
         assertEquals(2, fooSet.size());
         

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java?rev=752880&r1=752879&r2=752880&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java Thu Mar 12 14:49:29 2009
@@ -60,6 +60,9 @@
     @WebMethod
     Vector<String> listOutput();
     
+    @WebMethod 
+    String echoStringNotReallyAsync(String s);
+    
     @WebMethod
     int[] echoIntArray(int[] ar, Exchange ex);
     

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java?rev=752880&r1=752879&r2=752880&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceImpl.java Thu Mar 12 14:49:29 2009
@@ -205,4 +205,9 @@
             e.printStackTrace();
         }
     }
+    
+    public String echoStringNotReallyAsync(String s) {
+        return s;
+    }
+    
 }