package annotator.find;
import annotations.el.BoundLocation;
import com.sun.source.util.TreePath;
import com.sun.source.tree.Tree;
public class ClassBoundCriterion implements Criterion {
private final String className;
public final BoundLocation boundLoc;
private final Criterion notInMethodCriterion;
private final Criterion boundLocCriterion;
public ClassBoundCriterion(String className, BoundLocation boundLoc) {
this.className = className;
this.boundLoc = boundLoc;
this.notInMethodCriterion = Criteria.notInMethod();
this.boundLocCriterion = Criteria.atBoundLocation(boundLoc);
}
/** {@inheritDoc} */
@Override
public boolean isSatisfiedBy(TreePath path, Tree leaf) {
assert path == null || path.getLeaf() == leaf;
return isSatisfiedBy(path);
}
/** {@inheritDoc} */
@Override
public boolean isSatisfiedBy(TreePath path) {
if (path == null) {
return false;
}
return boundLocCriterion.isSatisfiedBy(path) &&
notInMethodCriterion.isSatisfiedBy(path);
}
@Override
public Kind getKind() {
return Kind.CLASS_BOUND;
}
@Override
public String toString() {
return "ClassBoundCriterion: for " + className + " at " + boundLoc;
}
}