You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ba...@apache.org on 2007/02/15 18:20:12 UTC

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

Author: barrettj
Date: Thu Feb 15 09:20:11 2007
New Revision: 508026

URL: http://svn.apache.org/viewvc?view=rev&rev=508026
Log:
AXIS2-2182
Patch contributed by Roy Wood Jr.  Fix the processing of interface super-interfaces in the metadata layer.

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=508026&r1=508025&r2=508026
==============================================================================
--- 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 Feb 15 09:20:11 2007
@@ -403,6 +403,7 @@
         }
         return returnOperations;
     }
+    
     /* (non-Javadoc)
      * @see org.apache.axis2.jaxws.description.EndpointInterfaceDescription#getDispatchableOperation(QName operationQName)
      */
@@ -424,8 +425,6 @@
         return returnOperations;
     }
 
-
-    
     /**
      * Return an OperationDescription for the corresponding SEI method.  Note that this ONLY works
      * if the OperationDescriptions were created from introspecting an SEI.  If the were created with a WSDL
@@ -541,22 +540,9 @@
         ArrayList<MethodDescriptionComposite> retrieveList = new ArrayList<MethodDescriptionComposite>();
 
         if (dbc.isInterface()) {
-        
-            retrieveList = retrieveSEIMethods(dbc);
-
-            //Now gather methods off the chain of superclasses, if any
-            DescriptionBuilderComposite tempDBC = dbc;          
-            while (!DescriptionUtils.isEmpty(tempDBC.getSuperClassName())) {
-            	
-                if (DescriptionUtils.javifyClassName(tempDBC.getSuperClassName()).equals(MDQConstants.OBJECT_CLASS_NAME))
-                    break;
-
-                DescriptionBuilderComposite superDBC = 
-                                    getEndpointDescriptionImpl().getServiceDescriptionImpl().getDBCMap().get(tempDBC.getSuperClassName());
-                retrieveList.addAll(retrieveSEIMethods(superDBC));
-                tempDBC = superDBC;
-            }
-                
+        	
+            retrieveList.addAll(retrieveSEIMethodsChain(dbc));
+            
         } else {
             //this is an implied SEI...rules are more complicated
             
@@ -663,9 +649,37 @@
         return retrieveList;
     }
 
+    private ArrayList<MethodDescriptionComposite> retrieveSEIMethodsChain(DescriptionBuilderComposite tmpDBC) {
+        
+    	DescriptionBuilderComposite dbc = tmpDBC;
+        ArrayList<MethodDescriptionComposite> retrieveList = new ArrayList<MethodDescriptionComposite>();
+
+    	retrieveList = retrieveSEIMethods(dbc);
+
+        //Since this is an interface, anything that is in the extends clause will actually appear
+        // in the interfaces list instead.
+        Iterator<String> iter = null;
+        List<String> interfacesList = dbc.getInterfacesList();
+        if (interfacesList != null ) {
+        	iter = dbc.getInterfacesList().iterator();
+        
+        	while (iter.hasNext()) {
+        		
+        		String interfaceName = iter.next();
+        		DescriptionBuilderComposite superInterface = 
+                    getEndpointDescriptionImpl().getServiceDescriptionImpl().getDBCMap().get(interfaceName);
+        		   
+                retrieveList.addAll(retrieveSEIMethodsChain(superInterface));
+        	}
+        }
+        	
+       return retrieveList;
+    }
+    
     private Definition getWSDLDefinition() {
         return ((ServiceDescriptionWSDL) getEndpointDescription().getServiceDescription()).getWSDLDefinition();
     }
+    
     public PortType getWSDLPortType() {
         PortType portType = null;
 //        EndpointDescriptionWSDL endpointDescWSDL = (EndpointDescriptionWSDL) getEndpointDescription();



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