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