blinking eye: do not modify array returned from Extensions.getExtensions()
authorAlexey Kudravtsev <cdr@jetbrains.com>
Wed, 16 Jul 2008 09:03:10 +0000 (13:03 +0400)
committerAlexey Kudravtsev <cdr@jetbrains.com>
Wed, 16 Jul 2008 09:03:10 +0000 (13:03 +0400)
lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java
lang-impl/src/com/intellij/codeInsight/daemon/impl/HectorComponent.java
lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesManager.java
lang-impl/src/com/intellij/ide/favoritesTreeView/actions/AddToFavoritesAction.java
lang-impl/src/com/intellij/ide/impl/ProjectViewSelectInTarget.java
platform-impl/src/com/intellij/openapi/vcs/readOnlyHandler/FileInfo.java
vcs-impl/src/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java

index 088a607f937ec540d83146e13d829c9e77322d61..dbc19ef6a92d1d8113173488442e0bad4c6553ba 100644 (file)
@@ -67,6 +67,11 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP
 
   protected volatile boolean myHasErrorElement;
   private volatile boolean myErrorFound;
+  private static final Comparator<HighlightVisitor> VISITOR_ORDER_COMPARATOR = new Comparator<HighlightVisitor>() {
+    public int compare(final HighlightVisitor o1, final HighlightVisitor o2) {
+      return o1.order() - o2.order();
+    }
+  };
 
   public GeneralHighlightingPass(@NotNull Project project,
                                  @NotNull PsiFile file,
@@ -90,11 +95,6 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP
   private HighlightVisitor[] createHighlightVisitors() {
     int oldCount = incVisitorUsageCount(1);
     HighlightVisitor[] highlightVisitors = Extensions.getExtensions(HighlightVisitor.EP_HIGHLIGHT_VISITOR, myProject);
-    Arrays.sort(highlightVisitors, new Comparator<HighlightVisitor>() {
-      public int compare(final HighlightVisitor o1, final HighlightVisitor o2) {
-        return o1.order() - o2.order();
-      }
-    });
     if (oldCount != 0) {
       highlightVisitors = highlightVisitors.clone();
       for (int i = 0; i < highlightVisitors.length; i++) {
@@ -388,7 +388,9 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP
     for (HighlightVisitor visitor : highlightVisitors) {
       if (visitor.suitableForFile(myFile)) visitors.add(visitor);
     }
+
     HighlightVisitor[] visitorArray = visitors.toArray(new HighlightVisitor[visitors.size()]);
+    Arrays.sort(visitorArray, VISITOR_ORDER_COMPARATOR);
 
     final boolean forceHighlightParents = forceHighlightParents();
 
index 33ed586d8e3516afdbb729b1e15e3ea668420d32..9b13165ed712c15c06fa82d6f12b9300cd5fcdec 100644 (file)
@@ -109,9 +109,8 @@ public class HectorComponent extends JPanel {
 
     gc.gridy = GridBagConstraints.RELATIVE;
     gc.weighty = 0;
-    final HectorComponentPanelsProvider[] componentPanelsProviders = Extensions.getExtensions(HectorComponentPanelsProvider.EP_NAME, project);
     myAdditionalPanels = new ArrayList<HectorComponentPanel>();
-    for (HectorComponentPanelsProvider provider : componentPanelsProviders) {
+    for (HectorComponentPanelsProvider provider : Extensions.getExtensions(HectorComponentPanelsProvider.EP_NAME, project)) {
       final HectorComponentPanel componentPanel = provider.createConfigurable(file);
       if (componentPanel != null) {
         myAdditionalPanels.add(componentPanel);
index 4483cbcda1a25cd19663c4a87047b3588870df54..b9495eee977f374949821610a3e5122f41a14a86 100644 (file)
@@ -277,8 +277,6 @@ public class FavoritesManager implements ProjectComponent, JDOMExternalizable {
       }
     };
 
-    FavoriteNodeProvider[] providers = Extensions.getExtensions(FavoriteNodeProvider.EP_NAME, myProject);
-
     List<Pair<AbstractUrl, String>> urls = getFavoritesListRootUrls(name);
     for (Pair<AbstractUrl, String> pair : urls) {
       AbstractUrl abstractUrl = pair.getFirst();
@@ -340,7 +338,7 @@ public class FavoritesManager implements ProjectComponent, JDOMExternalizable {
       }
 
 
-      for(FavoriteNodeProvider provider: providers) {
+      for(FavoriteNodeProvider provider: Extensions.getExtensions(FavoriteNodeProvider.EP_NAME, myProject)) {
         if (provider.elementContainsFile(element, vFile)) {
           return true;
         }
index c90290602086996dbb816d363df02ca78ec7c3e9..75c10bdbbae412e54418f10a1206ff5a55c10277 100644 (file)
@@ -60,8 +60,7 @@ public class AddToFavoritesAction extends AnAction {
     Module moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataContext);
 
     Collection<AbstractTreeNode> nodesToAdd = null;
-    FavoriteNodeProvider[] providers = Extensions.getExtensions(FavoriteNodeProvider.EP_NAME, project);
-    for(FavoriteNodeProvider provider: providers) {
+    for(FavoriteNodeProvider provider: Extensions.getExtensions(FavoriteNodeProvider.EP_NAME, project)) {
       nodesToAdd = provider.getFavoriteNodes(dataContext, ViewSettings.DEFAULT);
       if (nodesToAdd != null) {
         break;
index 9db6f3073b68e85bfd9247ee8ba09552ced95777..a5702e55e0b76715e1b5748d6f73e5b6dc89ff77 100644 (file)
@@ -56,8 +56,7 @@ public abstract class ProjectViewSelectInTarget extends SelectInTargetPsiWrapper
 
   public void select(PsiElement element, final boolean requestFocus) {
     PsiElement toSelect = null;
-    final TreeStructureProvider[] providers = Extensions.getExtensions(TreeStructureProvider.EP_NAME, myProject);
-    for (TreeStructureProvider provider : providers) {
+    for (TreeStructureProvider provider : Extensions.getExtensions(TreeStructureProvider.EP_NAME, myProject)) {
       if (provider instanceof SelectableTreeStructureProvider) {
         toSelect = ((SelectableTreeStructureProvider) provider).getTopLevelElement(element);
       }
index 24981cce9e5019a8444d20680a99261ad2322c0f..e11850d6b125132db24b7a1f2b180db6ce73522d 100644 (file)
@@ -44,8 +44,7 @@ class FileInfo {
     myFile = file;
     myHandleType.add(HandleType.USE_FILE_SYSTEM);
     myHandleType.selectFirst();
-    final HandleTypeFactory[] typeFactories = Extensions.getExtensions(HandleTypeFactory.EP_NAME, project);
-    for(HandleTypeFactory factory: typeFactories) {
+    for(HandleTypeFactory factory: Extensions.getExtensions(HandleTypeFactory.EP_NAME, project)) {
       final HandleType handleType = factory.createHandleType(file);
       if (handleType != null) {
         myHandleType.add(handleType);
index 5077a6b31bcefccdfaf42f3de6d039df2c7ab6f2..75ec6995cc5cdce22164130dff7a6370a641f271 100644 (file)
@@ -187,8 +187,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme
       }
     }
     if (myProject.isDisposed()) return null;
-    final VcsEP[] vcsEPs = Extensions.getExtensions(VcsEP.EP_NAME, myProject);
-    for(VcsEP ep: vcsEPs) {
+    for(VcsEP ep: Extensions.getExtensions(VcsEP.EP_NAME, myProject)) {
       if (ep.name.equals(name)) {
         AbstractVcs vcs = ep.getVcs(myProject);
         if (!myVcss.contains(vcs)) {
@@ -202,8 +201,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme
   }
 
   public AbstractVcs[] getAllVcss() {
-    final VcsEP[] vcsEPs = Extensions.getExtensions(VcsEP.EP_NAME, myProject);
-    for(VcsEP ep: vcsEPs) {
+    for(VcsEP ep: Extensions.getExtensions(VcsEP.EP_NAME, myProject)) {
       AbstractVcs vcs = ep.getVcs(myProject);
       if (!myVcss.contains(vcs)) {
         registerVcs(vcs);