Java程序  |  46行  |  1.19 KB

package annotator.find;

import annotations.el.BoundLocation;

import com.sun.source.util.TreePath;
import com.sun.source.tree.Tree;

public class MethodBoundCriterion implements Criterion {

  private final String methodName;
  public final BoundLocation boundLoc;
  private final Criterion sigMethodCriterion;
  private final Criterion boundLocationCriterion;

  public MethodBoundCriterion(String methodName, BoundLocation boundLoc) {
    this.methodName = methodName;
    this.boundLoc = boundLoc;
    this.sigMethodCriterion = Criteria.inMethod(methodName);
    this.boundLocationCriterion = 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) {
    return sigMethodCriterion.isSatisfiedBy(path) &&
      boundLocationCriterion.isSatisfiedBy(path);
  }

  @Override
  public Kind getKind() {
    return Kind.METHOD_BOUND;
  }

  @Override
  public String toString() {
    return "MethodBoundCriterion: method: " + methodName + " bound boundLoc: " + boundLoc;
  }
}