scheu 02/04/12 14:25:52
Modified: java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java
Log:
Cleaned up the code to separate the logic and printing for typeMapping and operation.
Revision Changes Path
1.35 +108 -53
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.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- JavaDeployWriter.java 11 Apr 2002 18:31:17 -0000 1.34
+++ JavaDeployWriter.java 12 Apr 2002 21:25:52 -0000 1.35
@@ -173,39 +173,57 @@
}
if (process) {
- pw.println(" <typeMapping");
- pw.println(" xmlns:ns=\"" +
type.getQName().getNamespaceURI() + "\"");
- pw.println(" qname=\"ns:" + type.getQName().getLocalPart() +
'"');
- pw.println(" type=\"java:" + type.getName() + '"');
- if (type.getName().endsWith("[]")) {
- pw.println("
serializer=\"org.apache.axis.encoding.ser.ArraySerializerFactory\"");
- pw.println("
deserializer=\"org.apache.axis.encoding.ser.ArrayDeserializerFactory\"");
+ String namespaceURI = type.getQName().getNamespaceURI();
+ String localPart = type.getQName().getLocalPart();
+ String javaType = type.getName();
+ String serializerFactory;
+ String deserializerFactory;
+ String encodingStyle = "";
+ if (!hasLiteral) {
+ encodingStyle = Constants.URI_CURRENT_SOAP_ENC;
+ }
+
+ if (javaType.endsWith("[]")) {
+ serializerFactory =
"org.apache.axis.encoding.ser.ArraySerializerFactory";
+ deserializerFactory =
"org.apache.axis.encoding.ser.ArrayDeserializerFactory";
} else if (type.getNode() != null &&
SchemaUtils.getEnumerationBaseAndValues(
type.getNode(), emitter.getSymbolTable()) != null) {
- pw.println("
serializer=\"org.apache.axis.encoding.ser.EnumSerializerFactory\"");
- pw.println("
deserializer=\"org.apache.axis.encoding.ser.EnumDeserializerFactory\"");
+ serializerFactory =
"org.apache.axis.encoding.ser.EnumSerializerFactory";
+ deserializerFactory =
"org.apache.axis.encoding.ser.EnumDeserializerFactory";
} else if (type.isSimpleType()) {
- pw.println("
serializer=\"org.apache.axis.encoding.ser.SimpleNonPrimitiveSerializerFactory\"");
- pw.println("
deserializer=\"org.apache.axis.encoding.ser.SimpleDeserializerFactory\"");
+ serializerFactory =
"org.apache.axis.encoding.ser.SimpleNonPrimitiveSerializerFactory";
+ deserializerFactory =
"org.apache.axis.encoding.ser.SimpleDeserializerFactory";
} else if (type.getBaseType() != null) {
- // Serializers are already defined for the simple types
- pw.println("
deserializer=\"org.apache.axis.encoding.ser.SimpleDeserializerFactory\"");
+ serializerFactory =
"org.apache.axis.encoding.ser.SimplePrimitiveSerializerFactory";
+ deserializerFactory =
"org.apache.axis.encoding.ser.SimpleDeserializerFactory";
} else {
- pw.println("
serializer=\"org.apache.axis.encoding.ser.BeanSerializerFactory\"");
- pw.println("
deserializer=\"org.apache.axis.encoding.ser.BeanDeserializerFactory\"");
+ serializerFactory =
"org.apache.axis.encoding.ser.BeanSerializerFactory";
+ deserializerFactory =
"org.apache.axis.encoding.ser.BeanDeserializerFactory";
}
- if (hasLiteral)
- pw.println(" encodingStyle=\"\"");
- else
- pw.println(" encodingStyle=\"" +
Constants.URI_CURRENT_SOAP_ENC + "\"");
-
- pw.println(" />");
+ writeTypeMapping(namespaceURI, localPart, javaType,
serializerFactory,
+ deserializerFactory, encodingStyle);
}
}
} //writeDeployTypes
/**
+ * Raw routine that writes out the typeMapping.
+ */
+ protected void writeTypeMapping(String namespaceURI, String localPart, String
javaType,
+ String serializerFactory, String
deserializerFactory,
+ String encodingStyle) throws IOException {
+ pw.println(" <typeMapping");
+ pw.println(" xmlns:ns=\"" + namespaceURI + "\"");
+ pw.println(" qname=\"ns:" + localPart + '"');
+ pw.println(" type=\"java:" + javaType + '"');
+ pw.println(" serializer=\"" + serializerFactory + "\"");
+ pw.println(" deserializer=\"" + deserializerFactory + "\"");
+ pw.println(" encodingStyle=\"" + encodingStyle + "\"");
+ pw.println(" />");
+ }
+
+ /**
* Write out deployment and undeployment instructions for given WSDL port
*/
protected void writeDeployPort(Port port) throws IOException {
@@ -273,10 +291,13 @@
Parameters params =
symbolTable.getOperationParameters(operation, "", bEntry);
if (params != null) {
-
- pw.print(" <operation name=\"" + javaOperName + "\"");
-
QName elementQName = null;
+ QName returnQName = null;
+ Vector paramQNames = new Vector();
+ Vector paramTypes = new Vector();
+ Vector paramModes = new Vector();
+
+ // Get the operation qname
Input input = operation.getInput();
if (input != null) {
Map parts = input.getMessage().getParts();
@@ -290,53 +311,46 @@
elementQName = new QName("", operationName);
}
QName defaultQName = new QName("", javaOperName);
- if (! defaultQName.equals(elementQName)) {
- pw.print(" qname=\"" +
- Utils.genQNameAttributeString(elementQName,
"operNS") +
- "\"");
+ if (defaultQName.equals(elementQName)) {
+ elementQName = null;
}
}
- QName returnQName = null;
+ // Get the operation's return QName
if (params.returnName != null)
returnQName = Utils.getWSDLQName(params.returnName);
- if (returnQName != null) {
- pw.print(" returnQName=\"" +
- Utils.genQNameAttributeString(returnQName, "retNS")
+
- "\"");
- }
- pw.println(">");
Vector paramList = params.list;
for (int i = 0; i < paramList.size(); i++) {
Parameter param = (Parameter) paramList.elementAt(i);
- QName paramQName = param.getQName();
TypeEntry typeEntry = param.getType();
- QName paramType;
+
+ QName paramQName = null;
+ QName paramType = null;
+ String paramMode = null;
+
+ // Get the parameter type QName
if (typeEntry instanceof DefinedElement) {
paramType = typeEntry.getRefType().getQName();
} else {
paramType = typeEntry.getQName();
}
- pw.print(" <parameter");
+
+ // Get the parameter name QName
+ paramQName = param.getQName();
if (paramQName == null ||
"".equals(paramQName.getNamespaceURI())) {
- pw.print(" name=\"" + param.getName() + "\"" );
- } else {
- pw.print(" qname=\"" +
- Utils.genQNameAttributeString(paramQName,
- "pns") + "\"");
- }
- pw.print(" type=\"" +
- Utils.genQNameAttributeString(paramType,
- "tns") + "\"");
+ paramQName = new QName("", param.getName());
+ }
+
+ // Get the parameter mode
if (param.getMode() != Parameter.IN) {
- String mode = getModeString(param.getMode());
- pw.print(" mode=\"" + mode + "\"");
+ paramMode = getModeString(param.getMode());
}
-
- pw.println("/>");
+ paramQNames.add(paramQName);
+ paramTypes.add(paramType);
+ paramModes.add(paramMode);
}
-
- pw.println(" </operation>");
+ writeOperation(javaOperName, elementQName, returnQName,
+ paramQNames, paramTypes, paramModes);
}
}
}
@@ -359,6 +373,47 @@
pw.println(" <parameter name=\"scope\" value=\"Session\"/>");
}
} //writeDeployBinding
+
+ /**
+ * Raw routine that writes out the operation and parameters.
+ */
+ protected void writeOperation(String javaOperName,
+ QName elementQName,
+ QName returnQName,
+ Vector paramQNames,
+ Vector paramTypes,
+ Vector paramModes) {
+ pw.print(" <operation name=\"" + javaOperName + "\"");
+ if (elementQName != null) {
+ pw.print(" qname=\"" + Utils.genQNameAttributeString(elementQName,
"operNS") + "\"");
+ }
+ if (returnQName != null) {
+ pw.print(" returnQName=\"" + Utils.genQNameAttributeString(returnQName,
"retNS") + "\"");
+ }
+ pw.println(" >");
+ for (int i=0; i < paramQNames.size(); i++) {
+ QName paramQName = (QName) paramQNames.elementAt(i);
+ QName paramType = (QName) paramTypes.elementAt(i);
+ String paramMode = (String) paramModes.elementAt(i);
+ pw.print(" <parameter");
+ if (paramQName == null || paramQName.getNamespaceURI().equals("")) {
+ pw.print(" name=\"" + paramQName.getLocalPart() + "\"" );
+ } else {
+ pw.print(" qname=\"" +
+ Utils.genQNameAttributeString(paramQName,
+ "pns") + "\"");
+ }
+ pw.print(" type=\"" +
+ Utils.genQNameAttributeString(paramType,
+ "tns") + "\"");
+ if (paramMode != null) {
+ pw.print(" mode=\"" + paramMode + "\"");
+ }
+ pw.println("/>");
+
+ }
+ pw.println(" </operation>");
+ }
public String getModeString(byte mode)
{