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