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