package org.testng.eclipse.ui.conversion;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IImportDeclaration;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
import org.eclipse.jdt.ui.text.java.IInvocationContext;
import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
import org.eclipse.jdt.ui.text.java.IProblemLocation;
import org.eclipse.jdt.ui.text.java.IQuickAssistProcessor;
public class JUnitConverterQuickAssistProcessor
extends BaseQuickAssistProcessor
implements IQuickAssistProcessor
{
/**
* This method needs to return fast since the QuickAssist pop up is waiting on it.
*/
public boolean hasAssists(IInvocationContext context) throws CoreException {
IImportDeclaration[] imports = context.getCompilationUnit().getImports();
// See if we have any JUnit import
for (int i = 0; i < imports.length; i++) {
IImportDeclaration id = imports[i];
String name = id.getElementName();
if (name.indexOf("junit") != -1) {
return true;
}
}
// Nothing in the imports, try to make a guess based on the class name and superclass
IType[] types = context.getCompilationUnit().getTypes();
for (IType type : types) {
if (type.getFullyQualifiedName().contains("Test")) {
return true;
}
}
// ppp("HAS ASSISTS:" + result);
return false;
}
public IJavaCompletionProposal[] getAssists(IInvocationContext context,
IProblemLocation[] locations)
throws CoreException
{
List<IJavaCompletionProposal> vResult = new ArrayList<>();
if (hasAssists(context)) {
//
// Prepare the AST rewriting
//
ICompilationUnit cu = context.getCompilationUnit();
// Creatie of DOM/AST from a ICompilationUnit
CompilationUnit astRoot = createCompilationUnit(cu);
AST ast = context.getASTRoot().getAST();
IRewriteProvider[] providers = new IRewriteProvider[] {
new AnnotationRewriter(),
};
for (int i = 0; i < providers.length; i++) {
ASTRewrite rewriter = providers[i].createRewriter(astRoot, ast);
vResult.add(new JUnitRewriteCorrectionProposal(
providers[i].getName(), cu, rewriter, 1));
}
}
return vResult.toArray(new IJavaCompletionProposal[vResult.size()]);
}
}