}
@Override
protected ASTRewrite getRewrite() throws CoreException {
CompilationUnit astRoot = ASTResolving.findParentCompilationUnit(methodDecl);
ASTRewrite astRewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRewrite.getAST();
String importName = PathVariable.class.getCanonicalName();
if (!ProposalCalculatorUtil.containsImport(getCompilationUnit(), importName)) {
ImportRewrite importRewrite = createImportRewrite(astRoot);
importRewrite.addImport(importName);
}
addLinkedPosition(new ITrackedNodePosition() {
public int getStartPosition() {
return variable.getOffset();
}
public int getLength() {
return variable.getVariableName().length();
}
}, true, "variableName");
SingleVariableDeclaration paramDecl = ast.newSingleVariableDeclaration();
SimpleType variableType = ast.newSimpleType(ast.newSimpleName("String"));
paramDecl.setType(variableType);
addLinkedPosition(astRewrite.track(variableType), false, "variableType");
SimpleName variableName = ast.newSimpleName(variable.getVariableName());
paramDecl.setName(variableName);
addLinkedPosition(astRewrite.track(variableName), false, "variableName");
SingleMemberAnnotation annotation = ast.newSingleMemberAnnotation();
annotation.setTypeName(ast.newSimpleName("PathVariable"));
StringLiteral pathVariableName = ast.newStringLiteral();
pathVariableName.setLiteralValue(variable.getVariableName());
annotation.setValue(pathVariableName);
addLinkedPosition(new StringLiteralTrackedPosition(astRewrite.track(pathVariableName)), false, "variableName");
ListRewrite listRewrite = astRewrite.getListRewrite(paramDecl, SingleVariableDeclaration.MODIFIERS2_PROPERTY);
listRewrite.insertFirst(annotation, null);
listRewrite = astRewrite.getListRewrite(methodDecl, MethodDeclaration.PARAMETERS_PROPERTY);
listRewrite.insertLast(paramDecl, null);
return astRewrite;
}