Skip to main content



      Home
Home » Language IDEs » Java Development Tools (JDT) » How to clone a method using ASTWriter
How to clone a method using ASTWriter [message #232739] Fri, 14 July 2006 13:03 Go to next message
Eclipse UserFriend
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 Go to previous message
Eclipse UserFriend
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());
>
>
Previous Topic:NewBee question
Next Topic:How to resolve an unresolved type signature?
Goto Forum:
  


Current Time: Fri Jun 06 00:10:12 EDT 2025

Powered by FUDForum. Page generated in 0.03675 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top