DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7722>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7722

Extended interfaces do not show up in WSDL

           Summary: Extended interfaces do not show up in WSDL
           Product: Axis
           Version: beta-1
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Deployment / Registries
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Situation:
interface BaseInterface;
interface ExtendedInterface extends BaseInterface;

JavaProvider uses the ExtendedInterface as a class, useInheritedMethods is set 
to true. The methods in the BaseInterface do not show up in the WSDL.

Solution:
in ClassRep.java, the walkInheritanceChain() and addMethods() methods use 
recursion, but only one level deep. The following one-liner fixes it:

  // add methods from interfaces
  Class[] interfaces = cls.getInterfaces();
  for (int i=0; i < interfaces.length; i++) {
-     walkInheritanceChain(interfaces[i], inhMethods, implClass);
+     addMethods(interfaces[i], inhMethods, implClass);
  }

This makes sure that 'addMethods' is called recursive, instead of 
calling 'walkInheritanceChain' recursive. The latter method only 
supports 'getSuperClass()', while the addMethods() call will also consider 
interfaces (and interfaces of interfaces).

As a side-note: The code in the init() method seems redundant (and useless 
too). The gathered list of interfaces and superclasses is never used, and 
because the ClassRep constructor is called recursively, it loses that 
information (_interfaces and _methods are members of ClassRep).

Reply via email to