You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by gd...@apache.org on 2001/09/03 23:55:12 UTC
cvs commit: xml-axis/java/src/org/apache/axis/wsdl Emitter.java Wsdl2java.java
gdaniels 01/09/03 14:55:12
Modified: java/src/org/apache/axis/wsdl Emitter.java Wsdl2java.java
Log:
Remove xerces dependency, add -messageContext switch.
Submitted by Steve Graham (sggraham@us.ibm.com)
Revision Changes Path
1.5 +128 -122 xml-axis/java/src/org/apache/axis/wsdl/Emitter.java
Index: Emitter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/Emitter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Emitter.java 2001/09/03 19:59:13 1.4
+++ Emitter.java 2001/09/03 21:55:12 1.5
@@ -82,12 +82,6 @@
import javax.wsdl.WSDLException;
import org.w3c.dom.*;
-import org.apache.xml.serialize.XMLSerializer;
-import org.apache.xml.serialize.OutputFormat;
-
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
import org.apache.axis.utils.XMLUtils;
import com.ibm.wsdl.xml.WSDLReader;
@@ -108,6 +102,7 @@
private Document doc = null;
private Definition def = null;
private boolean bEmitSkeleton = false;
+ private boolean bMessageContext = false;
/**
* Call this method if you have a uri for the WSDL document
@@ -154,7 +149,14 @@
public void generateSkeleton(boolean value) {
this.bEmitSkeleton = value;
}
-
+
+ /**
+ * Turn on/off server Message Context parm creation in skel
+ * @param boolean value
+ */
+ public void generateMessageContext(boolean value) {
+ this.bMessageContext = value;
+ }
/**
* This method returns a set of all the complex types in a given PortType. The elements of the returned HashSet are Strings.
*/
@@ -299,7 +301,8 @@
new FileWriter (nameValue + ".java"));
System.out.println("Generating server-side PortType interface: " + nameValue + ".java");
- interfacePW.println ("import org.apache.axis.MessageContext;");
+ if(bMessageContext)
+ interfacePW.println ("import org.apache.axis.MessageContext;");
interfacePW.println ("public interface " + nameValue + " extends java.rmi.Remote");
interfacePW.println ("{");
@@ -307,7 +310,7 @@
for (int i = 0; i < operations.size (); ++i) {
Operation operation = (Operation) operations.get (i);
- Parameters operationInfo = writeOperationSkelSignatures (operation, interfacePW);
+ Parameters operationInfo = writeOperationAxisSkelSignatures(operation, interfacePW);
}
interfacePW.println ("}");
@@ -357,6 +360,9 @@
// The signature that the skeleton will use
public String skelSignature = null;
+ // The signature that the skeleton impl
+ public String axisSignature = null;
+
// The numbers of the respective parameters
public int inputs = 0;
public int inouts = 0;
@@ -367,6 +373,7 @@
+ "\nfaultString = " + faultString
+ "\nsignature = " + signature
+ "\nskelSignature = " + skelSignature
+ + "\naxisSignature = " + axisSignature
+ "\n(inputs, inouts, outputs) = (" + inputs + ", " + inouts + ", " + outputs + ")"
+ "\nlist = " + list;
} // toString
@@ -503,16 +510,28 @@
private void constructSignatures(Parameters parms, String name) {
int allOuts = parms.outputs + parms.inouts;
String signature = " public " + parms.returnType + " " + name + " (";
+ String axisSig = " public " + parms.returnType + " " + name + " (";
String skelSig = null;
+ String retType = "";
if (allOuts == 0)
- skelSig = " public void " + name + "(";
- else
- skelSig = " public " + parms.returnType + " " + name + " (";
+ retType = "void";
+ else if (allOuts == 1)
+ retType = parms.returnType;
+ else //allOuts > 1
+ retType = "java.util.Vector";
- skelSig = skelSig + "MessageContext ctx";
- if (parms.list.size() > 0)
- skelSig = skelSig + ", ";
+ skelSig = " public " + retType + " " + name + " ( ";
+
+ if(bMessageContext){
+ skelSig = skelSig + "MessageContext ctx";
+ axisSig = axisSig + " MessageContext ctx ";
+
+ if (parms.list.size() > 0){
+ skelSig = skelSig + ", ";
+ axisSig = axisSig + ", ";
+ }
+ }
boolean needComma = false;
for (int i = 0; i < parms.list.size (); ++i) {
@@ -520,6 +539,7 @@
if (needComma) {
signature = signature + ", ";
+ axisSig = axisSig + ", ";
if (p.mode != Parameter.OUT)
skelSig = skelSig + ", ";
}
@@ -527,24 +547,30 @@
needComma = true;
if (p.mode == Parameter.IN) {
signature = signature + p.type + " " + p.name;
+ axisSig = axisSig + p.type + " " + p.name;
skelSig = skelSig + p.type + " " + p.name;
}
else if (p.mode == Parameter.INOUT) {
signature = signature + p.type + "Holder " + p.name;
+ axisSig = axisSig + p.type + "Holder " + p.name;
skelSig = skelSig + p.type + " " + p.name;
}
else// (p.mode == Parameter.OUT)
{
signature = signature + p.type + "Holder " + p.name;
+ axisSig = axisSig + p.type + "Holder " + p.name;
}
}
signature = signature + ") throws java.rmi.RemoteException";
+ axisSig = axisSig + ") throws java.rmi.RemoteException";
skelSig = skelSig + ") throws java.rmi.RemoteException";
if (parms.faultString != null) {
signature = signature + ", " + parms.faultString;
+ axisSig = axisSig + ", " + parms.faultString;
skelSig = skelSig + ", " + parms.faultString;
}
parms.signature = signature;
+ parms.axisSignature = axisSig;
parms.skelSignature = skelSig;
} // constructSignatures
@@ -588,6 +614,18 @@
} // writeOperation
/**
+ * This method generates the axis server side impl interface signatures operation.
+ */
+ private Parameters writeOperationAxisSkelSignatures(Operation operation, PrintWriter interfacePW) throws IOException {
+ String name = operation.getName ();
+ Parameters parms = parameters (operation);
+
+ interfacePW.println (parms.axisSignature + ";");
+
+ return parms;
+ } // writeOperation
+
+ /**
* This generates an exception class for the given fault and returns the capitalized name of
* the fault.
*/
@@ -758,8 +796,8 @@
String skelName = name + "Skeleton";
skelPW = new PrintWriter (new FileWriter (skelName + ".java"));
System.out.println("Generating server-side skeleton: " + skelName + ".java");
-
- skelPW.println ("import org.apache.axis.MessageContext;");
+ if(bMessageContext)
+ skelPW.println ("import org.apache.axis.MessageContext;");
skelPW.println ("public class " + skelName);
skelPW.println ("{");
skelPW.println (" private " + portTypeName + "Axis impl;");
@@ -959,9 +997,13 @@
pw.print (" impl." + name + "(");
else
pw.print (" " + parms.returnType + " ret = impl." + name + "(");
- pw.print("ctx");
- if(parms.list.size() > 0)
- pw.print(", ");
+
+ if(bMessageContext){
+ pw.print("ctx");
+ if(parms.list.size() > 0)
+ pw.print(", ");
+ }
+
boolean needComma = false;
for (int i = 0; i < parms.list.size (); ++i) {
if (needComma)
@@ -1015,23 +1057,23 @@
*/
private void writeDeploymentXML(){
try{
- PrintWriter dpw = new PrintWriter (new FileWriter ("deploy.xml"));
+ PrintWriter deployPW = new PrintWriter (new FileWriter ("deploy.xml"));
System.out.println("Generating deployment document: deploy.xml");
- XMLSerializer deploy = initializeDeploymentDoc(dpw, "deploy");
-
- PrintWriter upw = new PrintWriter (new FileWriter ("undeploy.xml"));
+ initializeDeploymentDoc(deployPW, "deploy");
+
+ PrintWriter undeployPW = new PrintWriter (new FileWriter ("undeploy.xml"));
System.out.println("Generating deployment document: undeploy.xml");
- XMLSerializer undeploy = initializeDeploymentDoc(upw, "undeploy");
+ initializeDeploymentDoc(undeployPW, "undeploy");
- writeDeployServices(deploy, undeploy);
- writeDeployTypes(deploy);
+ writeDeployServices(deployPW, undeployPW);
+ writeDeployTypes(deployPW);
- deploy.endElement("AdminService", "deploy", "m:deploy");
- dpw.close();
+ deployPW.println("</m:deploy>");
+ deployPW.close();
- undeploy.endElement("AdminService", "undeploy", "m:undeploy");
- upw.close();
- }catch (Exception e){
+ undeployPW.println("</m:undeploy>");
+ undeployPW.close();
+ }catch (IOException e){
System.err.println("Failed to write deployment documents");
e.printStackTrace();
}
@@ -1039,56 +1081,42 @@
} // writeDeploymentXML
/**
- * Initialize the deployment document
+ * Initialize the deployment document, spit out preamble comments
+ * and opening tag
*/
- private XMLSerializer initializeDeploymentDoc(PrintWriter w, String deploymentOpName) throws Exception{
- OutputFormat of = new OutputFormat();
- of.setIndenting(true);
- of.setIndent(3);
- of.setOmitXMLDeclaration(true);
-
- XMLSerializer ser = new XMLSerializer(w, of);
-
- ser.comment(
- " ");
- ser.comment(
- "Use this file to undeploy some handlers/chains and services ");
- ser.comment(
- "Two ways to do this: ");
- ser.comment(
- " java org.apache.axis.utils.Admin undeploy.xml ");
- ser.comment(
- " from the same dir that the Axis engine runs ");
- ser.comment(
- "or ");
- ser.comment(
- " java org.apache.axis.client.AdminClient undeploy.xml ");
- ser.comment(
- " after the axis server is running ");
- ser.comment(
- "This file will be replaced by WSDD once it's ready ");
- ser.comment(
- " ");
-
- ser.startDocument();
-
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("","xmlns:m","", "", "AdminService");
- ser.startElement("AdminService", deploymentOpName, "m:"+ deploymentOpName, attrs);
+ private void initializeDeploymentDoc(PrintWriter pw, String deploymentOpName) throws IOException{
+ pw.println(
+ "<!-- -->");
+ pw.println(
+ "<!--Use this file to " + deploymentOpName + " some handlers/chains and services -->");
+ pw.println(
+ "<!--Two ways to do this: -->");
+ pw.println(
+ "<!-- java org.apache.axis.utils.Admin "+ deploymentOpName + ".xml -->");
+ pw.println(
+ "<!-- from the same dir that the Axis engine runs -->");
+ pw.println(
+ "<!--or -->");
+ pw.println(
+ "<!-- java org.apache.axis.client.AdminClient " + deploymentOpName + ".xml -->");
+ pw.println(
+ "<!-- after the axis server is running -->");
+ pw.println(
+ "<!--This file will be replaced by WSDD once it's ready -->");
+ pw.println();
- return ser;
+ pw.println("<m:" + deploymentOpName + " xmlns:m=\"AdminService\">");
} // initializeDeploymentDoc
/**
* Write out bean mappings for each type
*/
- private void writeDeployTypes(XMLSerializer deploy) throws org.xml.sax.SAXException{
+ private void writeDeployTypes(PrintWriter pw) throws IOException{
Vector types = findChildNodesByName (doc, "complexType");
if(types.isEmpty()) return;
- newLine(deploy);
- newLine(deploy);
+ pw.println();
//assumes all complex type elements are under one parent
Node type = (Node)types.get(0);
@@ -1106,49 +1134,47 @@
}
}
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("","xmlns:" + namespacePrefix,"", "", namespaceURI);
- deploy.startElement("", "beanMappings", "", attrs);
+ pw.println(" <beanMappings xmlns:" + namespacePrefix + "=\"" + namespaceURI + "\">");
for (int i = 0; i < types.size (); ++i) {
type = (Node) types.get (i);
NamedNodeMap attributes = type.getAttributes ();
String typeName = capitalize (attributes.getNamedItem ("name").getNodeValue ());
- AttributesImpl attrs2 = new AttributesImpl();
- attrs2.addAttribute("","classname","", "", typeName);
- deploy.startElement(namespaceURI, typeName, namespacePrefix + ":" + typeName, attrs2);
- deploy.endElement(namespaceURI, typeName, namespacePrefix + ":" + typeName);
+ pw.println(" <" + namespacePrefix + ":" + typeName + " classname= \"" + typeName + "\"/>");
}
- deploy.endElement("", "beanMappings", "");
+ pw.println(" </beanMappings>");
} //writeDeployTypes
/**
* Write out deployment and undeployment instructions for each WSDL service
*/
- private void writeDeployServices(XMLSerializer deploy, XMLSerializer undeploy) throws IOException, org.xml.sax.SAXException{
+ private void writeDeployServices(PrintWriter deployPW, PrintWriter undeployPW) throws IOException{
//deploy the ports on each service
Map serviceMap = def.getServices();
for ( Iterator mapIterator = serviceMap.values().iterator(); mapIterator.hasNext();) {
Service myService = (Service)mapIterator.next();
- newLine(deploy);
- deploy.comment("Services from " + myService.getQName().getLocalPart() + " WSDL service");
- newLine(undeploy);
- undeploy.comment("Services from " + myService.getQName().getLocalPart() + " WSDL service");
-
+
+ deployPW.println();
+ deployPW.println(" <!-- Services from " + myService.getQName().getLocalPart() + " WSDL service -->");
+ deployPW.println();
+
+ undeployPW.println();
+ undeployPW.println(" <!-- Services from " + myService.getQName().getLocalPart() + " WSDL service -->");
+ undeployPW.println();
+
for (Iterator portIterator = myService.getPorts().values().iterator(); portIterator.hasNext();) {
Port myPort = (Port)portIterator.next();
- writeDeployPort(deploy, undeploy, myPort);
+ writeDeployPort(deployPW, undeployPW, myPort);
}
- }
-
+ }
} //writeDeployServices
/**
* Write out deployment and undeployment instructions for given WSDL port
*/
- private void writeDeployPort(XMLSerializer deploy, XMLSerializer undeploy, Port port) throws org.xml.sax.SAXException{
+ private void writeDeployPort(PrintWriter deployPW, PrintWriter undeployPW, Port port) throws IOException{
Binding binding = port.getBinding();
String serviceName = port.getName();
@@ -1161,43 +1187,33 @@
break;
}
}
-
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("","name","", "", serviceName);
- attrs.addAttribute("","pivot","", "", isRPC ? "RPCDispatcher" : "MsgDispatcher" );
- deploy.startElement("", "service", "", attrs);
- undeploy.startElement("", "service", "", attrs);
-
- writeDeployBinding(deploy, binding);
+
+ deployPW.println(" <service name=\"" + serviceName
+ + "\" pivot=\"" + (isRPC ? "RPCDispatcher" : "MsgDispatcher") + "\">" );
+ undeployPW.println(" <service name=\"" + serviceName
+ + "\" pivot=\"" + (isRPC ? "RPCDispatcher" : "MsgDispatcher") + "\">" );
- deploy.endElement("", "service", "");
- undeploy.endElement("", "service", "");
+ writeDeployBinding(deployPW, binding);
+ deployPW.println(" </service>");
+ undeployPW.println(" </service>");
} //writeDeployPort
/**
* Write out deployment instructions for given WSDL binding
*/
- private void writeDeployBinding(XMLSerializer deploy, Binding binding) throws org.xml.sax.SAXException{
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("","name","", "", "className");
- attrs.addAttribute("","value","", "", binding.getQName ().getLocalPart () + "Impl" );
- deploy.startElement("", "option", "", attrs);
- deploy.endElement("", "option", "");
-
+ private void writeDeployBinding(PrintWriter deployPW, Binding binding) throws IOException{
+ deployPW.println(" <option name=\"className\" value=\"" +
+ binding.getQName ().getLocalPart () + "Impl" + "\"/>");
+
String methodList = "";
Iterator operationsIterator = binding.getBindingOperations().iterator();
for ( ; operationsIterator.hasNext(); ) {
BindingOperation op = (BindingOperation)operationsIterator.next();
methodList = methodList + " " + op.getName();
}
-
- attrs = new AttributesImpl();
- attrs.addAttribute("","name","", "", "methodName");
- attrs.addAttribute("","value","", "", methodList);
- deploy.startElement("", "option", "", attrs);
- deploy.endElement("", "option", "");
+ deployPW.println(" <option name=\"methodName\" value=\"" + methodList + "\"/>");
} //writeDeployBinding
@@ -1372,16 +1388,6 @@
//
// Utility methods
//
-
- /**
- * Put a line seperator to the given XML serializer
- */
- private void newLine(XMLSerializer ser) throws org.xml.sax.SAXException{
- String nl = "\n";
- char[] crlf = new char[nl.length()];
- nl.getChars(0, nl.length(), crlf, 0);
- ser.ignorableWhitespace(crlf,0, crlf.length);
- }
/**
* For a given string, strip off the prefix - everything before the colon.
1.2 +8 -1 xml-axis/java/src/org/apache/axis/wsdl/Wsdl2java.java
Index: Wsdl2java.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/Wsdl2java.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Wsdl2java.java 2001/08/30 20:59:02 1.1
+++ Wsdl2java.java 2001/09/03 21:55:12 1.2
@@ -65,9 +65,10 @@
* print usage message
*/
private static void usage() {
- System.out.println ("Usage: java org.apache.axis.wsdl.Wsdl2java [-skeleton] WSDL-URI");
+ System.out.println ("Usage: java org.apache.axis.wsdl.Wsdl2java [-skeleton] [-messageContext] WSDL-URI");
System.out.println ("Switches:");
System.out.println (" -skeleton - emit skeleton class for web service");
+ System.out.println (" -messageContext - emit a MessageContext parameter in skeleton");
System.exit(-1);
}
@@ -75,6 +76,7 @@
public static void main(String[] args) {
try {
boolean bSkeleton = false;
+ boolean bMessageContext = false;
int argcount = args.length;
int arg = 0;
while ( arg < (args.length-1)) {
@@ -82,6 +84,10 @@
bSkeleton = true;
--argcount;
}
+ if( args[arg].equals("-messageContext") ) {
+ bMessageContext = true;
+ --argcount;
+ }
++arg;
}
if (argcount != 1 )
@@ -93,6 +99,7 @@
Emitter emitter = new Emitter ();
emitter.generateSkeleton(bSkeleton);
+ emitter.generateMessageContext(bMessageContext);
emitter.emit (uri);
}
catch (Throwable t) {