FieldCriterion.java revision 0c0bd9d1e50a213629b2031d1c906cdf688af580
110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Alipackage annotator.find;
210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali
310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Aliimport com.sun.source.tree.Tree;
410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Aliimport com.sun.source.util.TreePath;
510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali
610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Alipublic class FieldCriterion implements Criterion {
710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali
80c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl  public final String varName;
90c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl  public final Criterion varCriterion;
100c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl  public final Criterion notInMethodCriterion;
1110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali
1210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali  public FieldCriterion(String varName) {
1310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    this.varName = varName;
1410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    this.varCriterion = Criteria.is(Tree.Kind.VARIABLE, varName);
1510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    this.notInMethodCriterion = Criteria.notInMethod();
1610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali  }
1710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali
184735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst  /** {@inheritDoc} */
194735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst  @Override
204735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst  public boolean isSatisfiedBy(TreePath path, Tree leaf) {
214735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst    assert path == null || path.getLeaf() == leaf;
224735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst    return isSatisfiedBy(path);
234735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst  }
244735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst
254735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst  /** {@inheritDoc} */
264735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst  @Override
2710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali  public boolean isSatisfiedBy(TreePath path) {
2810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    if (path == null) {
2910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali      return false;
3010353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    }
3110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali
3210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    if (varCriterion.isSatisfiedBy(path) &&
3310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali        notInMethodCriterion.isSatisfiedBy(path)) {
3410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali      return true;
3510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    } else {
3610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali      return this.isSatisfiedBy(path.getParentPath());
3710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    }
3810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali  }
3910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali
400c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl  @Override
4110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali  public Kind getKind() {
4210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    return Kind.FIELD;
4310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali  }
4410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali
450c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl  @Override
4610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali  public String toString() {
4710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali    return "FieldCriterion: " + varName;
4810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali  }
4910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali}
50