butek       02/03/21 06:28:53

  Modified:    java/src/org/apache/axis/wsdl/toJava
                        JavaServiceImplWriter.java JavaDeployWriter.java
  Log:
  Added getPort(Class) to generated Services.  (one more step toward
  JAX-RPC)  Note:  this is still unimplemented in org.apache.axis.client.Service,
  but that work is probably part of the dynamic proxy work.
  
  Revision  Changes    Path
  1.8       +55 -0     
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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JavaServiceImplWriter.java        8 Mar 2002 15:57:17 -0000       1.7
  +++ JavaServiceImplWriter.java        21 Mar 2002 14:28:53 -0000      1.8
  @@ -63,6 +63,7 @@
   import java.util.List;
   import java.util.ListIterator;
   import java.util.Map;
  +import java.util.Vector;
   
   import javax.wsdl.Binding;
   import javax.wsdl.Port;
  @@ -108,6 +109,12 @@
           // output comments
           writeComment(pw, service.getDocumentationElement());
   
  +        // Used to construct the getPort(Class) method.
  +        Vector getPortIfaces = new Vector();
  +        Vector getPortStubClasses = new Vector();
  +        Vector getPortPortNames = new Vector();
  +        boolean printGetPortNotice = false;
  +
           // get ports
           Map portMap = service.getPorts();
           Iterator portIterator = portMap.values().iterator();
  @@ -148,6 +155,17 @@
               String bindingType = bEntry.hasLiteral() ?
                       bEntry.getName() : ptEntry.getName();
   
  +            // getPort(Class) must return a stub for an interface.  Collect all
  +            // the port interfaces so the getPort(Class) method can be constructed.
  +            if (getPortIfaces.contains(bindingType)) {
  +                printGetPortNotice = true;
  +            }
  +            else {
  +                getPortIfaces.add(bindingType);
  +                getPortStubClasses.add(stubClass);
  +                getPortPortNames.add(portName);
  +            }
  +
               // Get endpoint address and validate it
               String address = getAddressFromPort(p);
               if (address == null) {
  @@ -197,6 +215,43 @@
               pw.println("        }");
               pw.println("    }");
           }
  +
  +        // Build the getPort method.
  +        pw.println();
  +        pw.println("    /**");
  +        pw.println("     * " + JavaUtils.getMessage("getPortDoc00"));
  +        pw.println("     * " + JavaUtils.getMessage("getPortDoc01"));
  +        pw.println("     * " + JavaUtils.getMessage("getPortDoc02"));
  +        if (printGetPortNotice) {
  +            pw.println("     * " + JavaUtils.getMessage("getPortDoc03"));
  +            pw.println("     * " + JavaUtils.getMessage("getPortDoc04"));
  +        }
  +        pw.println("     */");
  +        pw.println("    public java.rmi.Remote getPort(Class 
serviceEndpointInterface) throws javax.xml.rpc.ServiceException {");
  +        if (getPortIfaces.size() == 0) {
  +            pw.println("        throw new javax.xml.rpc.ServiceException(\""
  +                    + JavaUtils.getMessage("noStub") + "  \" + 
(serviceEndpointInterface == null ? \"null\" : serviceEndpointInterface.getName()));");
  +        }
  +        else {
  +            pw.println("        try {");
  +            for (int i = 0; i < getPortIfaces.size(); ++i) {
  +                String iface = (String) getPortIfaces.get(i);
  +                String stubClass = (String) getPortStubClasses.get(i);
  +                String portName = (String) getPortPortNames.get(i);
  +                pw.println("            if (" + iface + 
".class.isAssignableFrom(serviceEndpointInterface)) {");
  +                pw.println("                return new " + stubClass + "(new 
java.net.URL(" + portName + "_address), this);");
  +                pw.println("            }");
  +            }
  +            pw.println("        }");
  +            pw.println("        catch (Throwable t) {");
  +            pw.println("            throw new javax.xml.rpc.ServiceException(t);");
  +            pw.println("        }");
  +            pw.println("        throw new javax.xml.rpc.ServiceException(\""
  +                    + JavaUtils.getMessage("noStub") + "  \" + 
(serviceEndpointInterface == null ? \"null\" : serviceEndpointInterface.getName()));");
  +        }
  +        pw.println("    }");
  +        pw.println();
  +
           // all done
           pw.println("}");
           pw.close();
  
  
  
  1.28      +7 -2      
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
  
  Index: JavaDeployWriter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- JavaDeployWriter.java     18 Mar 2002 22:37:34 -0000      1.27
  +++ JavaDeployWriter.java     21 Mar 2002 14:28:53 -0000      1.28
  @@ -302,8 +302,13 @@
   
           }
   
  -        pw.println("      <parameter name=\"allowedMethods\" value=\""
  -                + methodList.substring(1) + "\"/>");
  +        pw.print("      <parameter name=\"allowedMethods\" value=\"");
  +        if (methodList.length() == 0) {
  +            pw.println("\"/>");
  +        }
  +        else {
  +            pw.println(methodList.substring(1) + "\"/>");
  +        }
   
           if (emitter.getScope() == Emitter.APPLICATION_SCOPE) {
               pw.println("      <parameter name=\"scope\" value=\"Application\"/>");
  
  
  


Reply via email to