diff options
| author | Jeff Johnston | 2018-11-24 03:28:31 +0000 |
|---|---|---|
| committer | Sarika Sinha | 2018-12-03 05:45:29 +0000 |
| commit | fc43b2a2b9a4c3999d0e1e1fc692609c439676a0 (patch) | |
| tree | 8eea08f4824a1072b0a599f578a0fac9cf2ac4d7 | |
| parent | 04983d9cfd4995e38ef96821aa98e4ec6e6c6307 (diff) | |
| download | eclipse.jdt.ui-fc43b2a2b9a4c3999d0e1e1fc692609c439676a0.tar.gz eclipse.jdt.ui-fc43b2a2b9a4c3999d0e1e1fc692609c439676a0.tar.xz eclipse.jdt.ui-fc43b2a2b9a4c3999d0e1e1fc692609c439676a0.zip | |
Bug 541479 - [code mining] Binary references are not counted
- modify JavaReferenceCodeMining to use a workspace search scope
that matches that used by the FindReferencesAction class
- in the match verifier allow an element to have an ancestor
that is IJavaElement.CLASS_FILE
Change-Id: I02425dea8a9c3946eefd2061bd1656969dc5710e
Signed-off-by: Jeff Johnston <jjohnstn@redhat.com>
| -rw-r--r-- | org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaReferenceCodeMining.java | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaReferenceCodeMining.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaReferenceCodeMining.java index d2c7168b81..9cae0157d6 100644 --- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaReferenceCodeMining.java +++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaReferenceCodeMining.java @@ -20,16 +20,12 @@ import org.eclipse.swt.events.MouseEvent; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.resources.ResourcesPlugin; - import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.codemining.ICodeMiningProvider; import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.search.IJavaSearchConstants; import org.eclipse.jdt.core.search.IJavaSearchScope; @@ -42,6 +38,7 @@ import org.eclipse.jdt.core.search.SearchRequestor; import org.eclipse.jdt.ui.actions.FindReferencesAction; import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor; +import org.eclipse.jdt.internal.ui.search.JavaSearchScopeFactory; /** * Java reference code mining. @@ -110,14 +107,17 @@ public class JavaReferenceCodeMining extends AbstractJavaElementLineHeaderCodeMi SearchPattern pattern= SearchPattern.createPattern(element, IJavaSearchConstants.REFERENCES); SearchEngine engine= new SearchEngine(); engine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, - createSearchScope(), new SearchRequestor() { + createSearchScope(element), new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { Object o= match.getElement(); - if (o instanceof IJavaElement - && ((IJavaElement) o).getAncestor(IJavaElement.COMPILATION_UNIT) != null) { - count.incrementAndGet(); + if (o instanceof IJavaElement) { + IJavaElement e= (IJavaElement)o; + if (e.getAncestor(IJavaElement.COMPILATION_UNIT) != null + || e.getAncestor(IJavaElement.CLASS_FILE) != null) { + count.incrementAndGet(); + } } } }, monitor); @@ -128,11 +128,15 @@ public class JavaReferenceCodeMining extends AbstractJavaElementLineHeaderCodeMi /** * Create Java workspace scope. * + * @param element IJavaElement to search references for + * * @return the Java workspace scope. * @throws JavaModelException when java error. */ - private static IJavaSearchScope createSearchScope() throws JavaModelException { - IJavaProject[] projects= JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()).getJavaProjects(); - return SearchEngine.createJavaSearchScope(projects, IJavaSearchScope.SOURCES); + private static IJavaSearchScope createSearchScope(IJavaElement element) throws JavaModelException { + JavaSearchScopeFactory factory= JavaSearchScopeFactory.getInstance(); + boolean isInsideJRE = factory.isInsideJRE(element); + IJavaSearchScope scope= factory.createWorkspaceScope(isInsideJRE); + return scope; } } |
