diff --git a/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/JavaWhereUsedQueryPlugin.java b/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/JavaWhereUsedQueryPlugin.java --- a/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/JavaWhereUsedQueryPlugin.java +++ b/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/JavaWhereUsedQueryPlugin.java @@ -47,6 +47,7 @@ import com.sun.source.tree.Tree; import com.sun.source.util.TreePath; import java.io.IOException; +import java.net.URL; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import javax.lang.model.element.Element; @@ -54,8 +55,10 @@ import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.Modifier; import javax.lang.model.element.TypeElement; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.fileinfo.NonRecursiveFolder; import org.netbeans.api.java.classpath.ClassPath; +import org.netbeans.api.java.queries.AnnotationProcessingQuery; import org.netbeans.api.java.source.*; import org.netbeans.api.java.source.ClassIndex.SearchScopeType; import org.netbeans.modules.refactoring.api.*; @@ -69,6 +72,7 @@ import org.netbeans.modules.refactoring.java.spi.JavaWhereUsedFilters.ReadWrite; import org.netbeans.modules.refactoring.spi.RefactoringElementsBag; import org.netbeans.modules.refactoring.spi.ui.FiltersDescription; +import org.netbeans.spi.java.classpath.support.ClassPathSupport; import org.openide.ErrorManager; import org.openide.filesystems.FileObject; import org.openide.loaders.DataObject; @@ -360,7 +364,9 @@ } // filter out files that are not on source path Set set2 = new HashSet<>(set.size()); - ClassPath cp = cpInfo.getClassPath(ClasspathInfo.PathKind.SOURCE); + final ClassPath scp = cpInfo.getClassPath(ClasspathInfo.PathKind.SOURCE); + final ClassPath aps = collectAnnotationProcessingGenSourceRoots(scp); + final ClassPath cp = ClassPathSupport.createProxyClassPath(scp, aps); for (FileObject fo : set) { if (cp.contains(fo)) { set2.add(fo); @@ -371,7 +377,17 @@ } return set2; } - + + @NonNull + private static ClassPath collectAnnotationProcessingGenSourceRoots(@NonNull final ClassPath scp) { + final FileObject[] srcRoots = scp.getRoots(); + final Collection apRoots = new ArrayList<>(srcRoots.length); + for (FileObject srcRoot : srcRoots) { + apRoots.add(AnnotationProcessingQuery.getAnnotationProcessingOptions(srcRoot).sourceOutputDirectory()); + } + return ClassPathSupport.createClassPath(apRoots.toArray(new URL[apRoots.size()])); + } + private static Collection getImplementorsRecursive(ClassIndex idx, ClasspathInfo cpInfo, TypeElement el, AtomicBoolean cancel) { Set implementorsAsHandles = RefactoringUtils.getImplementorsAsHandles(idx, cpInfo, el, cancel);