for (Iterator<BodyDeclaration> I = bodyDeclarations.iterator(); I.hasNext();) {
BodyDeclaration bodyDeclaration = I.next();
if (bodyDeclaration instanceof MethodDeclaration) {
MethodDeclaration methodDeclaration = (MethodDeclaration) bodyDeclaration;
// make return type void
Type returnType;
{
returnType = methodDeclaration.getReturnType2();
methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID));
}
// process JavaDoc
{
Javadoc javadoc = methodDeclaration.getJavadoc();
if (javadoc != null) {
List<TagElement> tags = DomGenerics.tags(javadoc);
for (Iterator<TagElement> tagIter = tags.iterator(); tagIter.hasNext();) {
TagElement tag = tagIter.next();
if ("@gwt.typeArgs".equals(tag.getTagName())) {
tagIter.remove();
} else if ("@return".equals(tag.getTagName())) {
if (!tag.fragments().isEmpty()) {
tag.setTagName("@param callback the callback to return");
} else {
tagIter.remove();
}
} else if ("@wbp.gwt.Request".equals(tag.getTagName())) {
tagIter.remove();
addImport(serviceRoot, "com.google.gwt.http.client.Request");
methodDeclaration.setReturnType2(ast.newSimpleType(ast.newName("Request")));
}
}
// remove empty JavaDoc
if (tags.isEmpty()) {
methodDeclaration.setJavadoc(null);
}
}
}
// add AsyncCallback parameter
{
addImport(serviceRoot, "com.google.gwt.user.client.rpc.AsyncCallback");
// prepare "callback" type
Type callbackType;
{
callbackType = ast.newSimpleType(ast.newName("AsyncCallback"));
Type objectReturnType = getObjectType(returnType);
ParameterizedType parameterizedType = ast.newParameterizedType(callbackType);
DomGenerics.typeArguments(parameterizedType).add(objectReturnType);
callbackType = parameterizedType;
}
// prepare "callback" parameter