Muhammed,

This code has been re-architected, and I fixed this problem a while ago.

You may want to try a new version of Axis.

Thanks for the catch!

Rich Scheuerle
XML & Web Services Development
512-838-5115  (IBM TL 678-5115)


                                                                                       
                                           
                      "Muhammad Ali                                                    
                                           
                      Siddiqui"                To:       <[EMAIL PROTECTED]>, 
<[EMAIL PROTECTED]>                     
                      <asiddiqui@netpac        cc:                                     
                                           
                      e.com>                   Subject:  Query About: 
org.apache.axis.wsdlgen.Emitter                             
                                                                                       
                                           
                      02/04/2002 05:30                                                 
                                           
                      PM                                                               
                                           
                      Please respond to                                                
                                           
                      axis-dev                                                         
                                           
                                                                                       
                                           
                                                                                       
                                           



Hi Daniel,

This is a snapshot of your code from org.apache.axis.wsdlgen.Emitter class:

/** Create a PortType
     *
     * @param def
     * @param binding
     * @throws Exception
     */
    private void writePortType(Definition def, Binding binding) throws
Exception{

        PortType portType = def.createPortType();
        portType.setUndefined(false);

        portType.setQName(new javax.wsdl.QName(intfNS, clsName +
"PortType"));

        /** @todo should introduce allowInterfaces, to publish all methods
from a interface */
        /** @todo if allowedMethods is specified always look for inherited
methods as well?? */
        Method[] methods;
        if (useInheritedMethods & (allowedMethods != null) &&
(allowedMethods.trim().length() > 0))
          methods = cls.getMethods();
        else
          methods = cls.getDeclaredMethods();

        for(int i = 0, j = methods.length; i < j; i++) {
            if (allowedMethods != null) {
                if (allowedMethods.indexOf(methods[i].getName()) == -1)
                    continue;
            }
            Operation oper = writeOperation(def, binding,
methods[i].getName());
            writeMessages(def, oper, methods[i]);
            portType.addOperation(oper);
        }

        def.addPortType(portType);

        binding.setPortType(portType);
    }

I want to ask a question about the for loop. In this for loop you are
checking Methods name with indexOf method in String class (the red line).
This method simply checks for an instance of String accurance in the main
String object and returns the starting index of the string provided as a
parameter. My queastion is: lets say there are two methods, one with the
name foo() and another with the name foo1(). I just want method foo1 to be
published as a webservice. But since your are itterating all the methods
declared in the class, your code will publish both foo1() and foo() in the
WSDL, since foo is a substring of foo1.

Please notify me if it is a bug, or you did it intentionally?

Best Regards

Ali




Reply via email to