package xapi.javac.dev.api;
import com.github.javaparser.ast.expr.Expression;
import com.sun.source.tree.CompilationUnitTree;
import com.sun.source.tree.Tree;
import xapi.source.read.JavaModel.IsType;
/**
* @author James X. Nelson (james@wetheinter.net)
* Created on 4/3/16.
*/
public interface InjectionResolver {
void doNothing();
void surroundWith(String prefix, String suffix);
void replace(Tree source, String newSource);
void replaceWithMethodCall(Class methodClass, String methodName, String... params);
void replaceWithFieldReference(Class methodClass, String fieldName);
void replaceWithExpression(Expression expr);
String importTypeName(String cls);
default String importClass(Class cls) {
return importTypeName(cls.getCanonicalName());
}
default String importType(IsType cls) {
return importTypeName(cls.getQualifiedName());
}
boolean isResolved();
boolean hasChanges();
void init(JavacService service, CompilationUnitTree cup, SourceTransformationService sourceTransformationService);
void commit();
}