From fc4b62066d0806f7060e905c2e57fafe39aca7fc Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 19 Nov 2019 10:15:48 +0100 Subject: [PATCH] non blocking read action IDEA-CR-55249 GitOrigin-RevId: fb657c6a80386dc76968e84d6fa8c48554240e4b --- .../packaging/EmptyDirectoryInspection.java | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java index 63d3f0fd950a..95b1085ea2a6 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java @@ -76,34 +76,33 @@ public class EmptyDirectoryInspection extends BaseGlobalInspection { } final GlobalSearchScope globalSearchScope = (GlobalSearchScope)searchScope; final PsiManager psiManager = PsiManager.getInstance(project); - ReadAction.nonBlocking(() -> index.iterateContent(fileOrDir -> { - if (project.isDisposed()) { - return false; - } - if (!globalSearchScope.contains(fileOrDir)) { + ReadAction.nonBlocking(() -> { + Map results = new HashMap<>(); + index.iterateContent(fileOrDir -> { + if (onlyReportDirectoriesUnderSourceRoots && !index.isInSourceContent(fileOrDir)) { + return true; + } + final VirtualFile[] children = fileOrDir.getChildren(); + if (children.length != 0) { + return true; + } + final PsiDirectory directory = psiManager.findDirectory(fileOrDir); + final RefElement refDirectory = context.getRefManager().getReference(directory); + if (refDirectory == null || context.shouldCheck(refDirectory, this)) { + return true; + } + final String relativePath = getPathRelativeToModule(fileOrDir, project); + if (relativePath == null) { + return true; + } + results.put(refDirectory, manager.createProblemDescriptor( + InspectionGadgetsBundle.message("empty.directories.problem.descriptor", relativePath), + new EmptyPackageFix(fileOrDir.getUrl(), fileOrDir.getName()))); return true; - } - if (onlyReportDirectoriesUnderSourceRoots && !index.isInSourceContent(fileOrDir)) { - return true; - } - final VirtualFile[] children = fileOrDir.getChildren(); - if (children.length != 0) { - return true; - } - final PsiDirectory directory = psiManager.findDirectory(fileOrDir); - final RefElement refDirectory = context.getRefManager().getReference(directory); - if (refDirectory == null || context.shouldCheck(refDirectory, this)) { - return true; - } - final String relativePath = getPathRelativeToModule(fileOrDir, project); - if (relativePath == null) { - return true; - } - processor.addProblemElement(refDirectory, manager.createProblemDescriptor( - InspectionGadgetsBundle.message("empty.directories.problem.descriptor", relativePath), - new EmptyPackageFix(fileOrDir.getUrl(), fileOrDir.getName()))); - return true; - })).executeSynchronously(); + }, globalSearchScope); + return results; + }).executeSynchronously() + .forEach((element, descriptor) -> processor.addProblemElement(element, descriptor)); } @Nullable