/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.ext.java.client.core.rewrite;
import org.eclipse.che.ide.ext.java.jdt.core.dom.AST;
import org.eclipse.che.ide.ext.java.jdt.core.dom.ASTNode;
import org.eclipse.che.ide.ext.java.jdt.core.dom.CompilationUnit;
import org.eclipse.che.ide.ext.java.jdt.core.dom.FieldDeclaration;
import org.eclipse.che.ide.ext.java.jdt.core.dom.Initializer;
import org.eclipse.che.ide.ext.java.jdt.core.dom.Javadoc;
import org.eclipse.che.ide.ext.java.jdt.core.dom.MemberRef;
import org.eclipse.che.ide.ext.java.jdt.core.dom.MethodDeclaration;
import org.eclipse.che.ide.ext.java.jdt.core.dom.MethodRef;
import org.eclipse.che.ide.ext.java.jdt.core.dom.MethodRefParameter;
import org.eclipse.che.ide.ext.java.jdt.core.dom.PrimitiveType;
import org.eclipse.che.ide.ext.java.jdt.core.dom.SimpleName;
import org.eclipse.che.ide.ext.java.jdt.core.dom.TagElement;
import org.eclipse.che.ide.ext.java.jdt.core.dom.TextElement;
import org.eclipse.che.ide.ext.java.jdt.core.dom.TypeDeclaration;
import org.eclipse.che.ide.ext.java.jdt.core.dom.rewrite.ASTRewrite;
import org.eclipse.che.ide.ext.java.jdt.core.dom.rewrite.ListRewrite;
import org.eclipse.che.ide.ext.java.jdt.internal.compiler.env.ICompilationUnit;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.assertTrue;
public class ASTRewritingJavadocTest extends ASTRewritingTest {
@Test
public void testParamName() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name Hello World.\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
TagElement tagElement = (TagElement)tags.get(0);
List<ASTNode> fragments = tagElement.fragments();
assertTrue("Has fragments", !fragments.isEmpty());
SimpleName name = (SimpleName)fragments.get(0);
rewrite.replace(name, ast.newSimpleName("newName"), null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param newName Hello World.\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testSeeTag1() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @see String A String\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
TagElement tagElement = (TagElement)tags.get(0);
List<ASTNode> fragments = tagElement.fragments();
assertTrue("Has fragments", !fragments.isEmpty());
SimpleName name = (SimpleName)fragments.get(0);
rewrite.replace(name, ast.newSimpleName("Vector"), null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @see Vector A String\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testSeeTag2() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @see #toString A String\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
TagElement tagElement = (TagElement)tags.get(0);
List<ASTNode> fragments = tagElement.fragments();
assertTrue("Has fragments", !fragments.isEmpty());
MemberRef ref = (MemberRef)fragments.get(0);
rewrite.replace(ref.getName(), ast.newSimpleName("hashCode"), null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @see #hashCode A String\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testSeeTag3() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @see #toString A String\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
TagElement tagElement = (TagElement)tags.get(0);
List<ASTNode> fragments = tagElement.fragments();
assertTrue("Has fragments", !fragments.isEmpty());
MemberRef ref = (MemberRef)fragments.get(0);
rewrite.set(ref, MemberRef.QUALIFIER_PROPERTY, ast.newSimpleName("E"), null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @see E#toString A String\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testSeeTagParamInsert1() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @see #toString() A String\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
TagElement tagElement = (TagElement)tags.get(0);
List<ASTNode> fragments = tagElement.fragments();
assertTrue("Has fragments", !fragments.isEmpty());
MethodRef ref = (MethodRef)fragments.get(0);
MethodRefParameter param = ast.newMethodRefParameter();
param.setName(ast.newSimpleName("arg"));
param.setType(ast.newPrimitiveType(PrimitiveType.INT));
rewrite.getListRewrite(ref, MethodRef.PARAMETERS_PROPERTY).insertLast(param, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @see #toString(int arg) A String\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testSeeTagParamInsert2() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * {@link #toString(int x) A String}\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
TagElement topElement = (TagElement)tags.get(0);
List<ASTNode> fragments = topElement.fragments();
assertTrue("Has fragments", !fragments.isEmpty());
TagElement tagElement = (TagElement)fragments.get(0);
fragments = tagElement.fragments();
assertTrue("Has fragments", !fragments.isEmpty());
MethodRef ref = (MethodRef)fragments.get(0);
MethodRefParameter param = ast.newMethodRefParameter();
param.setName(ast.newSimpleName("arg"));
param.setType(ast.newPrimitiveType(PrimitiveType.INT));
rewrite.getListRewrite(ref, MethodRef.PARAMETERS_PROPERTY).insertLast(param, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * {@link #toString(int x, int arg) A String}\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testTagInsert1() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
TagElement newTag = ast.newTagElement();
newTag.setTagName("@throws");
newTag.fragments().add(ast.newSimpleName("Exception"));
TextElement text = ast.newTextElement();
text.setText("Thrown for no reason.");
newTag.fragments().add(text);
rewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY).insertLast(newTag, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name\n");
buf.append(" * @throws Exception Thrown for no reason.\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testTagInsert2() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
TagElement newTag = ast.newTagElement();
newTag.setTagName("@see");
MemberRef ref = ast.newMemberRef();
ref.setQualifier(ast.newSimpleName("Vector"));
ref.setName(ast.newSimpleName("size"));
newTag.fragments().add(ref);
rewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY).insertFirst(newTag, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @see Vector#size\n");
buf.append(" * @param name\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testTagInsert3() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 0);
TagElement newTag = ast.newTagElement();
newTag.setTagName(null);
TextElement text = ast.newTextElement();
text.setText("Comment");
newTag.fragments().add(text);
TagElement nested = ast.newTagElement();
nested.setTagName("@link");
newTag.fragments().add(nested);
MethodRef ref = ast.newMethodRef();
ref.setQualifier(ast.newSimpleName("Vector"));
ref.setName(ast.newSimpleName("size"));
nested.fragments().add(ref);
TextElement textNested = ast.newTextElement();
textNested.setText("Link");
nested.fragments().add(textNested);
rewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY).insertFirst(newTag, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * Comment {@link Vector#size() Link}\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testTagInsert4() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
AST ast = astRoot.getAST();
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
TagElement newTag = ast.newTagElement();
newTag.setTagName("@throws");
List<ASTNode> fragments = newTag.fragments();
fragments.add(ast.newSimpleName("Exception"));
TextElement element1 = ast.newTextElement();
element1.setText("Description line 1\n * Description line 2");
fragments.add(element1);
rewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY).insertLast(newTag, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name\n");
buf.append(" * @throws Exception Description line 1\n");
buf.append(" * Description line 2\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testTagRemove1() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 1);
rewrite.remove((ASTNode)tags.get(0), null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testTagRemove2() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name1 The first name.\n");
buf.append(" * @param name2 The second name.\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 2);
rewrite.remove((ASTNode)tags.get(0), null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name2 The second name.\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testTagRemove3() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name1 The first name.\n");
buf.append(" * @param name2 The second name.\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 2);
rewrite.remove((ASTNode)tags.get(1), null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name1 The first name.\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testTagRemove4() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("/**\n");
buf.append(" * @author xy\n");
buf.append(" */\n");
buf.append("package test1;\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST3(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
rewrite.remove(astRoot.getPackage().getJavadoc(), null);
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testTagRemoveInsert() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name1 The first name.\n");
buf.append(" * @param name2 The second name.\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = methodDecl.getJavadoc();
List<TagElement> tags = javadoc.tags();
assertTrue("Has one tag", tags.size() == 2);
ListRewrite listRewrite = rewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY);
listRewrite.remove((ASTNode)tags.get(1), null);
AST ast = astRoot.getAST();
TagElement element = ast.newTagElement();
element.setTagName("@since");
TextElement textElement = ast.newTextElement();
textElement.setText("1.1");
element.fragments().add(textElement);
listRewrite.insertLast(element, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @param name1 The first name.\n");
buf.append(" * @since 1.1\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testAddJavadoc() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
AST ast = astRoot.getAST();
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
MethodDeclaration methodDecl = findMethodDeclaration(type, "gee");
Javadoc javadoc = ast.newJavadoc();
TagElement element = ast.newTagElement();
element.setTagName("@since");
TextElement textElement = ast.newTextElement();
textElement.setText("1.1");
element.fragments().add(textElement);
javadoc.tags().add(element);
rewrite.set(methodDecl, MethodDeclaration.JAVADOC_PROPERTY, javadoc, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @since 1.1\n");
buf.append(" */\n");
buf.append(" public void gee(String name) {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testAddJavadoc2() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" public int count;\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
AST ast = astRoot.getAST();
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
FieldDeclaration fieldDecl = type.getFields()[0];
Javadoc javadoc = ast.newJavadoc();
TagElement element = ast.newTagElement();
element.setTagName("@since");
TextElement textElement = ast.newTextElement();
textElement.setText("1.1");
element.fragments().add(textElement);
javadoc.tags().add(element);
rewrite.set(fieldDecl, FieldDeclaration.JAVADOC_PROPERTY, javadoc, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @since 1.1\n");
buf.append(" */\n");
buf.append(" public int count;\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testRemoveJavadoc() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @since 1.1\n");
buf.append(" */\n");
buf.append(" static {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
Initializer initializer = (Initializer)type.bodyDeclarations().get(0);
rewrite.remove(initializer.getJavadoc(), null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" static {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testRemoveJavadoc2() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("/**\n");
buf.append(" * @since 1.1\n");
buf.append(" */\n");
buf.append("public class E {\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{ // insert method at first position
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
rewrite.remove(type.getJavadoc(), null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testMoveTags() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @author Mr X\n");
buf.append(" * and friends\n");
buf.append(" * @since 1.1\n");
buf.append(" * maybe less\n");
buf.append(" */\n");
buf.append(" static {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
Initializer initializer = (Initializer)type.bodyDeclarations().get(0);
Javadoc javadoc = initializer.getJavadoc();
List<TagElement> tags = javadoc.tags();
ASTNode node1 = (ASTNode)tags.get(0);
ASTNode placeholder1 = rewrite.createMoveTarget(node1);
ASTNode node2 = (ASTNode)tags.get(1);
ASTNode placeholder2 = rewrite.createMoveTarget(node2);
rewrite.replace(node1, placeholder2, null);
rewrite.replace(node2, placeholder1, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @since 1.1\n");
buf.append(" * maybe less\n");
buf.append(" * @author Mr X\n");
buf.append(" * and friends\n");
buf.append(" */\n");
buf.append(" static {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
@Test
public void testChangeTagElement() throws Exception {
StringBuffer buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * Mr X\n");
buf.append(" * @author Mr X\n");
buf.append(" * @author Mr X\n");
buf.append(" */\n");
buf.append(" static {\n");
buf.append(" }\n");
buf.append("}\n");
ICompilationUnit cu =
new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(buf.toString().toCharArray(), "E.java", "");
CompilationUnit astRoot = createAST(cu);
ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());
{
TypeDeclaration type = findTypeDeclaration(astRoot, "E");
Initializer initializer = (Initializer)type.bodyDeclarations().get(0);
Javadoc javadoc = initializer.getJavadoc();
List<TagElement> tags = javadoc.tags();
TagElement elem1 = (TagElement)tags.get(0);
rewrite.set(elem1, TagElement.TAG_NAME_PROPERTY, "@param", null);
TagElement elem2 = (TagElement)tags.get(1);
rewrite.set(elem2, TagElement.TAG_NAME_PROPERTY, "@param", null);
TagElement elem3 = (TagElement)tags.get(2);
rewrite.set(elem3, TagElement.TAG_NAME_PROPERTY, null, null);
}
String preview = evaluateRewrite(cu, rewrite);
buf = new StringBuffer();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append("\n");
buf.append(" /**\n");
buf.append(" * @paramMr X\n");
buf.append(" * @param Mr X\n");
buf.append(" * Mr X\n");
buf.append(" */\n");
buf.append(" static {\n");
buf.append(" }\n");
buf.append("}\n");
assertEqualString(preview, buf.toString());
}
}