package org.robolectric.annotation.processing.validator;
import org.robolectric.annotation.processing.RobolectricModel;
import java.util.List;
import java.util.Set;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
/**
* Validator that checks usages of {@link org.robolectric.annotation.Resetter}.
*/
public class ResetterValidator extends FoundOnImplementsValidator {
public ResetterValidator(RobolectricModel model, ProcessingEnvironment env) {
super(model, env, "org.robolectric.annotation.Resetter");
}
@Override
public Void visitExecutable(ExecutableElement elem, TypeElement parent) {
if (imp != null) {
final Set<Modifier> modifiers = elem.getModifiers();
boolean error = false;
if (!modifiers.contains(Modifier.STATIC)) {
error("@Resetter methods must be static");
error = true;
}
if (!modifiers.contains(Modifier.PUBLIC)) {
error("@Resetter methods must be public");
error = true;
}
List<? extends VariableElement> params = elem.getParameters();
if (params != null && !params.isEmpty()) {
error("@Resetter methods must not have parameters");
error = true;
}
if (!error) {
model.addResetter(parent, elem);
}
}
return null;
}
}