110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Alipackage annotator.find; 210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Aliimport annotations.el.BoundLocation; 410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Aliimport com.sun.source.util.TreePath; 64735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernstimport com.sun.source.tree.Tree; 710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Alipublic class ClassBoundCriterion implements Criterion { 910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 100c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl private final String className; 110c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl public final BoundLocation boundLoc; 120c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl private final Criterion notInMethodCriterion; 130c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl private final Criterion boundLocCriterion; 1410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 1510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali public ClassBoundCriterion(String className, BoundLocation boundLoc) { 1610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali this.className = className; 1710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali this.boundLoc = boundLoc; 1810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali this.notInMethodCriterion = Criteria.notInMethod(); 1910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali this.boundLocCriterion = Criteria.atBoundLocation(boundLoc); 2010353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 2110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 224735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst /** {@inheritDoc} */ 234735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst @Override 244735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst public boolean isSatisfiedBy(TreePath path, Tree leaf) { 254735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst assert path == null || path.getLeaf() == leaf; 264735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst return isSatisfiedBy(path); 274735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst } 284735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst 294735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst /** {@inheritDoc} */ 304735bdd95fe3025e721476ae821d0aca6127f80aMichael Ernst @Override 3110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali public boolean isSatisfiedBy(TreePath path) { 3210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali if (path == null) { 3310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali return false; 3410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 3510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 3610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali return boundLocCriterion.isSatisfiedBy(path) && 3710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali notInMethodCriterion.isSatisfiedBy(path); 3810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 3910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 400c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl @Override 4110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali public Kind getKind() { 4210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali return Kind.CLASS_BOUND; 4310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 4410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 450c0bd9d1e50a213629b2031d1c906cdf688af580Werner Dietl @Override 4610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali public String toString() { 4710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali return "ClassBoundCriterion: for " + className + " at " + boundLoc; 4810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 4910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali} 50