butek       2002/10/10 13:36:31

  Modified:    java/src/org/apache/axis/wsdl/toJava
                        JavaServiceImplWriter.java
  Log:
  The generated locator methods getPort and getPorts were not complete
  when a service had multiple ports.
  
  Revision  Changes    Path
  1.28      +23 -10    
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java
  
  Index: JavaServiceImplWriter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- JavaServiceImplWriter.java        18 Sep 2002 16:10:36 -0000      1.27
  +++ JavaServiceImplWriter.java        10 Oct 2002 20:36:31 -0000      1.28
  @@ -179,11 +179,9 @@
               if (getPortIfaces.contains(bindingType)) {
                   printGetPortNotice = true;
               }
  -            else {
  -                getPortIfaces.add(bindingType);
  -                getPortStubClasses.add(stubClass);
  -                getPortPortNames.add(portName);
  -            }
  +            getPortIfaces.add(bindingType);
  +            getPortStubClasses.add(stubClass);
  +            getPortPortNames.add(portName);
   
               // Get endpoint address and validate it
               String address = WSDLUtils.getAddressFromPort(p);
  @@ -208,7 +206,7 @@
           }
           writeGetPortClass(pw, getPortIfaces, getPortStubClasses,
                   getPortPortNames, printGetPortNotice);
  -        writeGetPortQNameClass(pw);
  +        writeGetPortQNameClass(pw, getPortPortNames);
           writeGetServiceName(pw, sEntry.getQName());
           writeGetPorts(pw, getPortPortNames);
       } // writeFileBody
  @@ -339,16 +337,31 @@
       /**
        * Write the getPort(QName portName, Class serviceInterfaceWriter) method.
        */
  -    protected void writeGetPortQNameClass(PrintWriter pw) {
  +    protected void writeGetPortQNameClass(PrintWriter pw,
  +             Vector getPortPortNames) {
           pw.println("    /**");
           pw.println("     * " + Messages.getMessage("getPortDoc00"));
           pw.println("     * " + Messages.getMessage("getPortDoc01"));
           pw.println("     * " + Messages.getMessage("getPortDoc02"));
           pw.println("     */");
           pw.println("    public java.rmi.Remote getPort(javax.xml.namespace.QName 
portName, Class serviceEndpointInterface) throws " + 
javax.xml.rpc.ServiceException.class.getName() + " {");
  -        pw.println("        java.rmi.Remote _stub = 
getPort(serviceEndpointInterface);");
  -        pw.println("        ((org.apache.axis.client.Stub) 
_stub).setPortName(portName);");
  -        pw.println("        return _stub;");
  +        pw.println("        if (portName == null) {");
  +        pw.println("            return getPort(serviceEndpointInterface);");
  +        pw.println("        }");
  +        pw.println("        String inputPortName = portName.getLocalPart();");
  +        pw.print("        ");
  +        for (int i = 0; i < getPortPortNames.size(); ++i) {
  +            String portName = (String) getPortPortNames.get(i);
  +            pw.println("if (\"" + portName + "\".equals(inputPortName)) {");
  +            pw.println("            return get" + portName + "();");
  +            pw.println("        }");
  +            pw.print("        else ");
  +        }
  +        pw.println(" {");
  +        pw.println("            java.rmi.Remote _stub = 
getPort(serviceEndpointInterface);");
  +        pw.println("            ((org.apache.axis.client.Stub) 
_stub).setPortName(portName);");
  +        pw.println("            return _stub;");
  +        pw.println("        }");
           pw.println("    }");
           pw.println();
       } // writeGetPortQNameClass
  
  
  


Reply via email to