in axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/JavaStubWriter.java [507:688]
protected void writeOperationMap(PrintWriter pw) {
List operations = binding.getBindingOperations();
pw.println(" static {");
pw.println(
" _operations = new org.apache.axis.description.OperationDesc["
+ operations.size() + "];");
for (int j = 0, k = 0; j < operations.size(); ++j) {
if ((j % OPERDESC_PER_BLOCK) == 0) {
k++;
pw.println(" _initOperationDesc" + k + "();");
}
}
for (int i = 0, k = 0; i < operations.size(); ++i) {
if ((i % OPERDESC_PER_BLOCK) == 0) {
k++;
pw.println(" }\n");
pw.println(" private static void _initOperationDesc" + k
+ "(){");
pw.println(
" org.apache.axis.description.OperationDesc oper;");
pw.println(
" org.apache.axis.description.ParameterDesc param;");
}
BindingOperation operation = (BindingOperation) operations.get(i);
Parameters parameters =
bEntry.getParameters(operation.getOperation());
// Get the soapAction from the <soap:operation>
String opStyle = null;
Iterator operationExtensibilityIterator =
operation.getExtensibilityElements().iterator();
for (; operationExtensibilityIterator.hasNext();) {
Object obj = operationExtensibilityIterator.next();
if (obj instanceof SOAPOperation) {
opStyle = ((SOAPOperation) obj).getStyle();
break;
} else if (obj instanceof SOAP12Operation) {
opStyle = ((SOAP12Operation) obj).getStyle();
break;
}
}
Operation ptOperation = operation.getOperation();
OperationType type = ptOperation.getStyle();
// These operation types are not supported. The signature
// will be a string stating that fact.
if ((OperationType.NOTIFICATION.equals(type))
|| (OperationType.SOLICIT_RESPONSE.equals(type))) {
pw.println(parameters.signature);
pw.println();
}
String operName = operation.getName();
String indent = " ";
pw.println(
indent
+ "oper = new org.apache.axis.description.OperationDesc();");
pw.println(indent + "oper.setName(\"" + operName + "\");");
// loop over paramters and set up in/out params
for (int j = 0; j < parameters.list.size(); ++j) {
Parameter p = (Parameter) parameters.list.get(j);
// Get the QName representing the parameter type
QName paramType = Utils.getXSIType(p);
// Set the javaType to the name of the type
String javaType = Utils.getParameterTypeName(p);
if (javaType != null) {
javaType += ".class, ";
} else {
javaType = "null, ";
}
// Get the text representing newing a QName for the name and type
String paramNameText = Utils.getNewQNameWithLastLocalPart(p.getQName());
String paramTypeText = Utils.getNewQName(paramType);
// Generate the addParameter call with the
// name qname, typeQName, optional javaType, and mode
boolean isInHeader = p.isInHeader();
boolean isOutHeader = p.isOutHeader();
pw.println(" param = new org.apache.axis.description.ParameterDesc(" +
paramNameText + ", " +
modeStrings[p.getMode()] + ", " +
paramTypeText + ", " +
javaType +
isInHeader + ", " + isOutHeader + ");");
QName itemQName = Utils.getItemQName(p.getType());
if (itemQName != null) {
pw.println(" param.setItemQName(" +
Utils.getNewQName(itemQName) + ");");
}
if (p.isOmittable())
pw.println(" param.setOmittable(true);");
if (p.isNillable())
pw.println(" param.setNillable(true);");
pw.println(" oper.addParameter(param);");
}
// set output type
Parameter returnParam = parameters.returnParam;
if (returnParam != null) {
// Get the QName for the return Type
QName returnType = Utils.getXSIType(returnParam);
// Get the javaType
String javaType = Utils.getParameterTypeName(returnParam);
if (javaType == null) {
javaType = "";
} else {
javaType += ".class";
}
pw.println(" oper.setReturnType("
+ Utils.getNewQName(returnType) + ");");
pw.println(" oper.setReturnClass(" + javaType + ");");
QName returnQName = returnParam.getQName();
if (returnQName != null) {
pw.println(" oper.setReturnQName("
+ Utils.getNewQNameWithLastLocalPart(returnQName) + ");");
}
if (returnParam.isOutHeader()) {
pw.println(" oper.setReturnHeader(true);");
}
QName itemQName = Utils.getItemQName(returnParam.getType());
if (itemQName != null) {
pw.println(" param = oper.getReturnParamDesc();");
pw.println(" param.setItemQName(" +
Utils.getNewQName(itemQName) + ");");
}
} else {
pw.println(
" oper.setReturnType(org.apache.axis.encoding.XMLType.AXIS_VOID);");
}
boolean hasMIME = Utils.hasMIME(bEntry, operation);
Style style = Style.getStyle(opStyle, bEntry.getBindingStyle());
Use use = bEntry.getInputBodyType(operation.getOperation());
if ((style == Style.DOCUMENT) && symbolTable.isWrapped()) {
style = Style.WRAPPED;
}
if (!hasMIME) {
pw.println(" oper.setStyle(" + styles.get(style) + ");");
pw.println(" oper.setUse(" + uses.get(use) + ");");
}
// Register fault/exception information for this operation
writeFaultInfo(pw, operation);
pw.println(indent + "_operations[" + i + "] = oper;");
pw.println("");
}
pw.println(" }");
}