diff --git a/java/java-impl/src/com/intellij/find/findUsages/JavaFindUsagesHandler.java b/java/java-impl/src/com/intellij/find/findUsages/JavaFindUsagesHandler.java index 136d2b31191c..970a339d24f6 100644 --- a/java/java-impl/src/com/intellij/find/findUsages/JavaFindUsagesHandler.java +++ b/java/java-impl/src/com/intellij/find/findUsages/JavaFindUsagesHandler.java @@ -328,14 +328,14 @@ public class JavaFindUsagesHandler extends FindUsagesHandler{ if (element instanceof PsiMethod){ final PsiMethod psiMethod = (PsiMethod)element; - if (psiMethod.hasModifierProperty(PsiModifier.ABSTRACT)) { - if (options.isImplementingMethods){ - processOverridingMethods(psiMethod, processor, options); + boolean isAbstract = ApplicationManager.getApplication().runReadAction(new Computable() { + public Boolean compute() { + return psiMethod.hasModifierProperty(PsiModifier.ABSTRACT); } + }); + if (isAbstract && options.isImplementingMethods || options.isOverridingMethods) { + processOverridingMethods(psiMethod, processor, options); } - else if (options.isOverridingMethods){ - processOverridingMethods(psiMethod, processor, options); - } } if (!ThrowSearchUtil.isSearchable(element) && options.isSearchForTextOccurences && options.searchScope instanceof GlobalSearchScope) { @@ -343,15 +343,13 @@ public class JavaFindUsagesHandler extends FindUsagesHandler{ } } - private static void processOverridingMethods(final PsiMethod psiMethod, - final Processor processor, final FindUsagesOptions options) { + private static void processOverridingMethods(PsiMethod psiMethod, final Processor processor, final FindUsagesOptions options) { OverridingMethodsSearch.search(psiMethod, options.searchScope, options.isCheckDeepInheritance).forEach(new PsiElementProcessorAdapter( new PsiElementProcessor() { public boolean execute(PsiMethod element) { addResult(processor, element.getNavigationElement(), options, null); return true; } - })); }