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; + } + }