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\"/>");