import com.sun.tools.internal.ws.processor.model.Operation; //导入方法依赖的package包/类
private void createJavaMethodForAsyncOperation(Port port, Operation operation,
JavaInterface intf) {
String candidateName = getJavaNameForOperation(operation);
JavaMethod method = new JavaMethod(candidateName, options, errReceiver);
Request request = operation.getRequest();
Iterator requestBodyBlocks = request.getBodyBlocks();
Block requestBlock =
(requestBodyBlocks.hasNext()
? request.getBodyBlocks().next()
: null);
Response response = operation.getResponse();
Iterator responseBodyBlocks = null;
Block responseBlock;
if (response != null) {
responseBodyBlocks = response.getBodyBlocks();
responseBlock =
responseBodyBlocks.hasNext()
? response.getBodyBlocks().next()
: null;
}
// build a signature of the form "opName%arg1type%arg2type%...%argntype so that we
// detect overloading conflicts in the generated java interface/classes
String signature = candidateName;
for (Iterator iter = request.getParameters(); iter.hasNext();) {
Parameter parameter = (Parameter) iter.next();
if (parameter.getJavaParameter() != null) {
error(operation.getEntity(), ModelerMessages.WSDLMODELER_INVALID_OPERATION(operation.getName().getLocalPart()));
}
JavaType parameterType = parameter.getType().getJavaType();
JavaParameter javaParameter =
new JavaParameter(
JAXBRIContext.mangleNameToVariableName(parameter.getName()),
parameterType,
parameter,
parameter.getLinkedParameter() != null);
if (javaParameter.isHolder()) {
javaParameter.setHolderName(javax.xml.ws.Holder.class.getName());
}
method.addParameter(javaParameter);
parameter.setJavaParameter(javaParameter);
signature += "%" + parameterType.getName();
}
if (response != null) {
String resultParameterName =
(String) operation.getProperty(WSDL_RESULT_PARAMETER);
Parameter resultParameter =
response.getParameterByName(resultParameterName);
JavaType returnType = resultParameter.getType().getJavaType();
method.setReturnType(returnType);
}
operation.setJavaMethod(method);
intf.addMethod(method);
}