From a1f1485ebf771c5bd9cc4bddb6adfbd5fc2eb550 Mon Sep 17 00:00:00 2001 From: antelder Date: Fri, 23 Oct 2009 10:25:33 +0000 Subject: Update JavaInterfaceIntrospectorImpl to not consider teh JAXWS Async API methods in the overloaded ops on remotable interfaces git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@828990 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/impl/JavaInterfaceIntrospectorImpl.java | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java index 6b8ea60517..e903783300 100644 --- a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java +++ b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java @@ -31,8 +31,11 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.Future; import javax.xml.namespace.QName; +import javax.xml.ws.AsyncHandler; +import javax.xml.ws.Response; import org.apache.tuscany.sca.interfacedef.DataType; import org.apache.tuscany.sca.interfacedef.InvalidAnnotationException; @@ -187,7 +190,7 @@ public class JavaInterfaceIntrospectorImpl { if (remotable && names.contains(name)) { throw new OverloadedOperationException(method); } - if (remotable) { + if (remotable && !jaxwsAsyncMethod(method)) { names.add(name); } @@ -254,4 +257,22 @@ public class JavaInterfaceIntrospectorImpl { return operations; } + private boolean jaxwsAsyncMethod(Method method) { + if (method.getName().endsWith("Async")) { + if (method.getName().endsWith("Async")) { + if (method.getReturnType().isAssignableFrom(Future.class)) { + if (method.getParameterTypes().length > 0) { + if (method.getParameterTypes()[method.getParameterTypes().length-1].isAssignableFrom(AsyncHandler.class)) { + return true; + } + } + } + if (method.getReturnType().isAssignableFrom(Response.class)) { + return true; + } + } + } + return false; + } + } -- cgit v1.2.3