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; 952dda95b775d6ad255fb35f2582be363ab1ce4d2Dan Brown public final boolean isDeclaration; 100c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl public final Criterion varCriterion; 110c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl public final Criterion notInMethodCriterion; 1210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 1310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali public FieldCriterion(String varName) { 1452dda95b775d6ad255fb35f2582be363ab1ce4d2Dan Brown this(varName, false); 1552dda95b775d6ad255fb35f2582be363ab1ce4d2Dan Brown } 1652dda95b775d6ad255fb35f2582be363ab1ce4d2Dan Brown 1752dda95b775d6ad255fb35f2582be363ab1ce4d2Dan Brown public FieldCriterion(String varName, boolean isDeclaration) { 1810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali this.varName = varName; 1952dda95b775d6ad255fb35f2582be363ab1ce4d2Dan Brown this.isDeclaration = isDeclaration; 2010353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali this.varCriterion = Criteria.is(Tree.Kind.VARIABLE, varName); 2110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali this.notInMethodCriterion = Criteria.notInMethod(); 2210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 2310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 244735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst /** {@inheritDoc} */ 254735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst @Override 264735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst public boolean isSatisfiedBy(TreePath path, Tree leaf) { 274735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst assert path == null || path.getLeaf() == leaf; 284735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst return isSatisfiedBy(path); 294735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst } 304735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst 314735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst /** {@inheritDoc} */ 324735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst @Override 3310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali public boolean isSatisfiedBy(TreePath path) { 3452dda95b775d6ad255fb35f2582be363ab1ce4d2Dan Brown if (path == null || (isDeclaration 3552dda95b775d6ad255fb35f2582be363ab1ce4d2Dan Brown && path.getLeaf().getKind() != Tree.Kind.VARIABLE)) { 3610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali return false; 3710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 3810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 3910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali if (varCriterion.isSatisfiedBy(path) && 4010353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali notInMethodCriterion.isSatisfiedBy(path)) { 4110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali return true; 4210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } else { 4310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali return this.isSatisfiedBy(path.getParentPath()); 4410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 4510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 4610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 470c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl @Override 4810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali public Kind getKind() { 4910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali return Kind.FIELD; 5010353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 5110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 520c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl @Override 5310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali public String toString() { 5410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali return "FieldCriterion: " + varName; 5510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 5610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali} 57