How to clone a method using ASTWriter [message #232739] |
Fri, 14 July 2006 13:03  |
Eclipse User |
|
|
|
I want to clone method a() as method a_copied().
The following code generate two "a_copied()".
Document document = new Document(unit.getBuffer().getContents());
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(unit.getBuffer().getCharacters());
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
final AST ast = cu.getAST();
final ASTRewrite rewriter = ASTRewrite.create(ast);
ASTVisitor visitor;
visitor = new ASTVisitor() {
public boolean visit(MethodDeclaration node) {
if (!node.isConstructor()) {
MethodDeclaration copied =
(MethodDeclaration)rewriter.createCopyTarget(node);
rewriter.getListRewrite(node.getParent(),
TypeDeclaration.BODY_DECLARATIONS_PROPERTY).insertFirst(copi ed, null);
rewriter.replace(node.getName(),
ast.newSimpleName(node.getName().getIdentifier()+ "_copied"), null );
}
return false;
}
};
cu.accept(visitor);
TextEdit edits = rewriter.rewriteAST(document, null);
edits.apply(document);
unit.getBuffer().setContents(document.get());
|
|
|
Re: How to clone a method using ASTWriter [message #232748 is a reply to message #232739] |
Fri, 14 July 2006 13:19  |
Eclipse User |
|
|
|
I made it this way:
MethodDeclaration copied =
(MethodDeclaration)ASTNode.copySubtree(node.getAST(), node);
copied.setName(node.getAST().newSimpleName(node.getName().ge tIdentifier()+ "_copied"));
rewriter.getListRewrite(node.getParent(),
TypeDeclaration.BODY_DECLARATIONS_PROPERTY).insertAfter(copi ed, node, null);
"david" <folklayer@hotmail.com> wrote in message
news:e98ioe$goh$1@utils.eclipse.org...
>I want to clone method a() as method a_copied().
>
> The following code generate two "a_copied()".
>
> Document document = new Document(unit.getBuffer().getContents());
> ASTParser parser = ASTParser.newParser(AST.JLS3);
> parser.setSource(unit.getBuffer().getCharacters());
> CompilationUnit cu = (CompilationUnit) parser.createAST(null);
> final AST ast = cu.getAST();
> final ASTRewrite rewriter = ASTRewrite.create(ast);
> ASTVisitor visitor;
> visitor = new ASTVisitor() {
> public boolean visit(MethodDeclaration node) {
> if (!node.isConstructor()) {
> MethodDeclaration copied =
> (MethodDeclaration)rewriter.createCopyTarget(node);
> rewriter.getListRewrite(node.getParent(),
> TypeDeclaration.BODY_DECLARATIONS_PROPERTY).insertFirst(copi ed, null);
> rewriter.replace(node.getName(),
> ast.newSimpleName(node.getName().getIdentifier()+ "_copied"), null );
> }
> return false;
> }
> };
> cu.accept(visitor);
> TextEdit edits = rewriter.rewriteAST(document, null);
> edits.apply(document);
> unit.getBuffer().setContents(document.get());
>
>
|
|
|
Powered by
FUDForum. Page generated in 0.03675 seconds