IDEA-78862: suppressing XmlUnusedNamespaceDeclaration does not prevent optimize impor...
authorDmitry Avdeev <Dmitry.Avdeev@jetbrains.com>
Mon, 26 Dec 2011 10:10:38 +0000 (14:10 +0400)
committerDmitry Avdeev <Dmitry.Avdeev@jetbrains.com>
Mon, 26 Dec 2011 10:35:26 +0000 (14:35 +0400)
xml/impl/src/com/intellij/refactoring/XmlImportOptimizer.java

index 5ae80cd9b68e2982ffc97dc891ab25b2fe40d0e1..f56f2a32e41a93c9123f6bc0db9d67d11c8f5d06 100644 (file)
@@ -22,14 +22,17 @@ import com.intellij.codeInspection.ProblemsHolder;
 import com.intellij.codeInspection.QuickFix;
 import com.intellij.lang.ImportOptimizer;
 import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Condition;
 import com.intellij.psi.*;
 import com.intellij.psi.xml.XmlAttribute;
 import com.intellij.psi.xml.XmlFile;
 import com.intellij.psi.xml.XmlTag;
 import com.intellij.util.ArrayUtil;
+import com.intellij.util.containers.ContainerUtil;
 import org.jetbrains.annotations.NotNull;
 
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -39,6 +42,13 @@ import java.util.Map;
 public class XmlImportOptimizer implements ImportOptimizer {
 
   private final XmlUnusedNamespaceInspection myInspection = new XmlUnusedNamespaceInspection();
+  private final Condition<ProblemDescriptor> myCondition = new Condition<ProblemDescriptor>() {
+    @Override
+    public boolean value(ProblemDescriptor descriptor) {
+      PsiElement element = descriptor.getPsiElement();
+      return !myInspection.isSuppressedFor(element.getParent());
+    }
+  };
 
   @Override
   public boolean supports(PsiFile file) {
@@ -68,9 +78,10 @@ public class XmlImportOptimizer implements ImportOptimizer {
         }.visitFile(xmlFile);
         ProblemDescriptor[] results = holder.getResultsArray();
         ArrayUtil.reverseArray(results);
+        List<ProblemDescriptor> list = ContainerUtil.filter(results, myCondition);
 
         Map<XmlUnusedNamespaceInspection.RemoveNamespaceDeclarationFix, ProblemDescriptor> fixes = new LinkedHashMap<XmlUnusedNamespaceInspection.RemoveNamespaceDeclarationFix, ProblemDescriptor>();
-        for (ProblemDescriptor result : results) {
+        for (ProblemDescriptor result : list) {
           for (QuickFix fix : result.getFixes()) {
             if (fix instanceof XmlUnusedNamespaceInspection.RemoveNamespaceDeclarationFix) {
               fixes.put((XmlUnusedNamespaceInspection.RemoveNamespaceDeclarationFix)fix, result);