1 19 20 package org.netbeans.modules.refactoring.java.plugins; 21 22 import com.sun.source.tree.*; 23 import com.sun.source.util.TreePath; 24 import javax.lang.model.element.*; 25 import org.netbeans.api.java.source.WorkingCopy; 26 27 31 public class FindUsagesVisitor extends SearchVisitor { 32 33 public FindUsagesVisitor(WorkingCopy workingCopy) { 34 super(workingCopy); 35 } 36 37 @Override 38 public Tree visitIdentifier(IdentifierTree node, Element p) { 39 addIfMatch(getCurrentPath(), node, p); 40 return super.visitIdentifier(node, p); 41 } 42 43 @Override 44 public Tree visitMemberSelect(MemberSelectTree node, Element p) { 45 addIfMatch(getCurrentPath(), node,p); 46 return super.visitMemberSelect(node, p); 47 } 48 49 @Override 50 public Tree visitNewClass(NewClassTree node, Element p) { 51 addIfMatch(getCurrentPath(), node,p); 52 return super.visitNewClass(node, p); 53 } 54 55 private void addIfMatch(TreePath path, Tree tree, Element elementToFind) { 56 if (workingCopy.getTreeUtilities().isSynthetic(path)) 57 return ; 58 Element el = workingCopy.getTrees().getElement(path); 59 if (el==null) 60 return; 61 62 if (elementToFind.getKind() == ElementKind.METHOD && el.getKind() == ElementKind.METHOD) { 63 if (el.equals(elementToFind) || workingCopy.getElements().overrides(((ExecutableElement) el), (ExecutableElement) elementToFind, (TypeElement) elementToFind.getEnclosingElement())) { 64 addUsage(getCurrentPath()); 65 } 66 } else if (el.equals(elementToFind)) { 67 addUsage(getCurrentPath()); 68 } 69 } 70 } 71 | Popular Tags |