You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by nt...@apache.org on 2007/07/26 23:06:58 UTC

svn commit: r559975 - /webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java

Author: nthaker
Date: Thu Jul 26 14:06:58 2007
New Revision: 559975

URL: http://svn.apache.org/viewvc?view=rev&rev=559975
Log:
Axis2_3023

Modified:
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java?view=diff&rev=559975&r1=559974&r2=559975
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java Thu Jul 26 14:06:58 2007
@@ -49,7 +49,9 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 //import org.apache.log4j.BasicConfigurator;
+import java.util.Map;
 
 /** @see ../EndpointInterfaceDescription */
 class EndpointInterfaceDescriptionImpl
@@ -58,6 +60,7 @@
     private EndpointDescriptionImpl parentEndpointDescription;
     private ArrayList<OperationDescription> operationDescriptions =
             new ArrayList<OperationDescription>();
+    private Map<QName, List<OperationDescription>> dispatchableOperations = new HashMap<QName, List<OperationDescription>>();
     // This may be an actual Service Endpoint Interface -OR- it may be a service implementation class that did not 
     // specify an @WebService.endpointInterface.
     private Class seiClass;
@@ -95,6 +98,15 @@
 
     void addOperation(OperationDescription operation) {
         operationDescriptions.add(operation);
+        
+        if (!operation.isJAXWSAsyncClientMethod()) {
+        	List<OperationDescription> operations = dispatchableOperations.get(operation.getName());
+        	if(operations==null) {
+        		operations = new ArrayList<OperationDescription>();
+        		dispatchableOperations.put(operation.getName(), operations);
+        	}
+        	operations.add(operation);
+        }
     }
 
     EndpointInterfaceDescriptionImpl(Class sei, EndpointDescriptionImpl parent) {
@@ -474,22 +486,14 @@
     * @see org.apache.axis2.jaxws.description.EndpointInterfaceDescription#getDispatchableOperation(QName operationQName)
     */
     public OperationDescription[] getDispatchableOperation(QName operationQName) {
-        OperationDescription[] returnOperations = null;
-        OperationDescription[] allMatchingOperations = getOperation(operationQName);
-        if (allMatchingOperations != null && allMatchingOperations.length > 0) {
-            ArrayList<OperationDescription> dispatchableOperations =
-                    new ArrayList<OperationDescription>();
-            for (OperationDescription operation : allMatchingOperations) {
-                if (!operation.isJAXWSAsyncClientMethod()) {
-                    dispatchableOperations.add(operation);
-                }
-            }
-
-            if (dispatchableOperations.size() > 0) {
-                returnOperations = dispatchableOperations.toArray(new OperationDescription[0]);
-            }
-        }
-        return returnOperations;
+    	//FIXME:OperationDescriptionImpl creates operation qname with empty namespace. Thus using localname
+    	//to read dispachable operation.
+    	QName key = new QName("",operationQName.getLocalPart());
+    	List<OperationDescription> operations = dispatchableOperations.get(key);
+    	if(operations!=null){
+    		return operations.toArray(new OperationDescription[operations.size()]);
+    	}
+    	return new OperationDescription[0];
     }
     /* (non-Javadoc)
      * @see org.apache.axis2.jaxws.description.EndpointInterfaceDescription#getDispatchableOperations()



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org