From 4956896d360baf7cecb51820ecb0a3ae6dc53f4b Mon Sep 17 00:00:00 2001 From: Piotr Tomiak Date: Fri, 10 May 2024 14:10:11 +0200 Subject: [PATCH] WEB-66994 Move XmlImportOptimizer result collecting out of EDT GitOrigin-RevId: f6a6a1fabddaedf1c69aad75cefe42d64603c19c --- .../refactoring/XmlImportOptimizer.java | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/xml/impl/src/com/intellij/refactoring/XmlImportOptimizer.java b/xml/impl/src/com/intellij/refactoring/XmlImportOptimizer.java index e6def066ee5b..ef2d84b3b284 100644 --- a/xml/impl/src/com/intellij/refactoring/XmlImportOptimizer.java +++ b/xml/impl/src/com/intellij/refactoring/XmlImportOptimizer.java @@ -28,7 +28,7 @@ import java.util.Map; * @author Dmitry Avdeev */ public class XmlImportOptimizer implements ImportOptimizer { - + private final XmlUnusedNamespaceInspection myInspection = new XmlUnusedNamespaceInspection(); private final Condition myCondition = descriptor -> { PsiElement element = descriptor.getPsiElement(); @@ -43,40 +43,40 @@ public class XmlImportOptimizer implements ImportOptimizer { @Override public @NotNull CollectingInfoRunnable processFile(final @NotNull PsiFile file) { + XmlFile xmlFile = (XmlFile)file; + Project project = xmlFile.getProject(); + HighlightDisplayKey key = HighlightDisplayKey.find(myInspection.getShortName()); + Map fixes = new LinkedHashMap<>(); + if (InspectionProjectProfileManager.getInstance(project).getCurrentProfile().isToolEnabled(key, xmlFile)) { + ProblemsHolder holder = new ProblemsHolder(InspectionManager.getInstance(project), xmlFile, false); + final XmlElementVisitor visitor = (XmlElementVisitor)myInspection.buildVisitor(holder, false); + new PsiRecursiveElementVisitor() { + @Override + public void visitElement(@NotNull PsiElement element) { + if (element instanceof XmlAttribute) { + visitor.visitXmlAttribute((XmlAttribute)element); + } + else { + super.visitElement(element); + } + } + }.visitFile(xmlFile); + ProblemDescriptor[] results = holder.getResultsArray(); + List list = ContainerUtil.filter(results, myCondition); + + for (ProblemDescriptor result : list) { + for (QuickFix fix : result.getFixes()) { + if (fix instanceof XmlUnusedNamespaceInspection.RemoveNamespaceDeclarationFix) { + fixes.put((XmlUnusedNamespaceInspection.RemoveNamespaceDeclarationFix)fix, result); + } + } + } + } return new CollectingInfoRunnable() { int myRemovedNameSpaces = 0; @Override public void run() { - XmlFile xmlFile = (XmlFile)file; - Project project = xmlFile.getProject(); - HighlightDisplayKey key = HighlightDisplayKey.find(myInspection.getShortName()); - if (!InspectionProjectProfileManager.getInstance(project).getCurrentProfile().isToolEnabled(key, xmlFile)) return; - ProblemsHolder holder = new ProblemsHolder(InspectionManager.getInstance(project), xmlFile, false); - final XmlElementVisitor visitor = (XmlElementVisitor)myInspection.buildVisitor(holder, false); - new PsiRecursiveElementVisitor() { - @Override - public void visitElement(@NotNull PsiElement element) { - if (element instanceof XmlAttribute) { - visitor.visitXmlAttribute((XmlAttribute)element); - } - else { - super.visitElement(element); - } - } - }.visitFile(xmlFile); - ProblemDescriptor[] results = holder.getResultsArray(); - List list = ContainerUtil.filter(results, myCondition); - - Map fixes = new LinkedHashMap<>(); - for (ProblemDescriptor result : list) { - for (QuickFix fix : result.getFixes()) { - if (fix instanceof XmlUnusedNamespaceInspection.RemoveNamespaceDeclarationFix) { - fixes.put((XmlUnusedNamespaceInspection.RemoveNamespaceDeclarationFix)fix, result); - } - } - } - SmartPsiElementPointer pointer = null; for (Map.Entry fix : fixes.entrySet()) { pointer = fix.getKey().doFix(project, fix.getValue(), false);