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