Insert/Add Statements to Java Source Code by using Eclipse JDT ASTRewrite
This belongs to Eclipse JDT Tutorial Series.
This code example is for inserting a statement to existing Java source code by using eclipse JDT. It works inside of a Plug-in.
For simplicity purpose, the following code simple add a method invocation statement called "add" to the first line of a method.
public class Main { public static void main(String[] args) { } public static void add() { int i = 1; System.out.println(i); } } |
The code above becomes the following:
public class Main { public static void main(String[] args) { add(); } public static void add() { int i = 1; System.out.println(i); } } |
Again, this is a completely working code tested under Eclipse Indigo.
private void AddStatements() throws MalformedTreeException, BadLocationException, CoreException { IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("testAddComments"); IJavaProject javaProject = JavaCore.create(project); IPackageFragment package1 = javaProject.getPackageFragments()[0]; // get first compilation unit ICompilationUnit unit = package1.getCompilationUnits()[0]; // parse compilation unit CompilationUnit astRoot = parse(unit); // create a ASTRewrite AST ast = astRoot.getAST(); ASTRewrite rewriter = ASTRewrite.create(ast); // for getting insertion position TypeDeclaration typeDecl = (TypeDeclaration) astRoot.types().get(0); MethodDeclaration methodDecl = typeDecl.getMethods()[0]; Block block = methodDecl.getBody(); // create new statements for insertion MethodInvocation newInvocation = ast.newMethodInvocation(); newInvocation.setName(ast.newSimpleName("add")); Statement newStatement = ast.newExpressionStatement(newInvocation); //create ListRewrite ListRewrite listRewrite = rewriter.getListRewrite(block, Block.STATEMENTS_PROPERTY); listRewrite.insertFirst(newStatement, null); TextEdit edits = rewriter.rewriteAST(); // apply the text edits to the compilation unit Document document = new Document(unit.getSource()); edits.apply(document); // this is the code for adding statements unit.getBuffer().setContents(document.get()); } |
<pre><code> String foo = "bar"; </code></pre>
-
Zeinab
-
Carad