package org.robolectric.annotation.processing.validator;
import org.robolectric.annotation.processing.RobolectricModel;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
/**
* Validator that checks usages of {@link org.robolectric.annotation.Implements}.
*/
public abstract class FoundOnImplementsValidator extends Validator {
protected AnnotationMirror imp;
public FoundOnImplementsValidator(RobolectricModel model,
ProcessingEnvironment env,
String annotationType) {
super(model, env, annotationType);
}
@Override
public void init(Element elem, Element p) {
super.init(elem, p);
imp = model.getImplementsMirror(p);
if (imp == null) {
error('@' + annotationType.getSimpleName().toString() + " without @Implements");
}
}
@Override
final public Void visitVariable(VariableElement elem, Element parent) {
return visitVariable(elem, RobolectricModel.typeVisitor.visit(parent));
}
public Void visitVariable(VariableElement elem, TypeElement parent) {
return null;
}
@Override
final public Void visitExecutable(ExecutableElement elem, Element parent) {
return visitExecutable(elem, RobolectricModel.typeVisitor.visit(parent));
}
public Void visitExecutable(ExecutableElement elem, TypeElement parent) {
return null;
}
}