remove allowStartingDumbModeInside implementation
authorpeter <peter@jetbrains.com>
Thu, 17 Nov 2016 09:31:27 +0000 (10:31 +0100)
committerpeter <peter@jetbrains.com>
Thu, 17 Nov 2016 10:21:32 +0000 (11:21 +0100)
platform/core-api/src/com/intellij/openapi/project/DumbModePermission.java
platform/core-api/src/com/intellij/openapi/project/DumbPermissionService.java [deleted file]
platform/core-api/src/com/intellij/openapi/project/DumbService.java
platform/platform-impl/src/com/intellij/openapi/project/DumbPermissionServiceImpl.java [deleted file]
platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java
platform/platform-resources/src/META-INF/PlatformExtensions.xml

index 54aa5a0acdfbc465f5c656efdfd240b8d9810381..c0faa2684159493dbf43259448ffef850e87448c 100644 (file)
  */
 package com.intellij.openapi.project;
 
-/**
- * Permits the dumb mode to start at a specific moment, either modally or in background.
- * @see DumbService#allowStartingDumbModeInside(DumbModePermission, Runnable)
- */
+@Deprecated
 public enum DumbModePermission {
   MAY_START_MODAL,
   MAY_START_BACKGROUND
diff --git a/platform/core-api/src/com/intellij/openapi/project/DumbPermissionService.java b/platform/core-api/src/com/intellij/openapi/project/DumbPermissionService.java
deleted file mode 100644 (file)
index 8903b90..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2000-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.intellij.openapi.project;
-
-import org.jetbrains.annotations.NotNull;
-
-/**
- * A helper class for {@link DumbService}
- */
-interface DumbPermissionService {
-
-  void allowStartingDumbModeInside(@NotNull final DumbModePermission permission, @NotNull Runnable runnable);
-
-}
index 180d48ad24a2730cae661daa24ca44be03a5a7b8..364358922427d002487cf15745de46e55d3dbf45 100644 (file)
@@ -302,9 +302,10 @@ public abstract class DumbService {
    * Obsolete, does nothing, just executes the passed runnable.
    * @see #completeJustSubmittedTasks()
    */
+  @SuppressWarnings({"deprecation", "unused"})
   @Deprecated
   public static void allowStartingDumbModeInside(@NotNull DumbModePermission permission, @NotNull Runnable runnable) {
-    ServiceManager.getService(DumbPermissionService.class).allowStartingDumbModeInside(permission, runnable);
+    runnable.run();
   }
 
   /**
diff --git a/platform/platform-impl/src/com/intellij/openapi/project/DumbPermissionServiceImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/DumbPermissionServiceImpl.java
deleted file mode 100644 (file)
index 1ecb23a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2000-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.intellij.openapi.project;
-
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * @author peter
- */
-public class DumbPermissionServiceImpl implements DumbPermissionService {
-  private final ThreadLocal<DumbModePermission> myPermission = new ThreadLocal<>();
-
-  @Override
-  public void allowStartingDumbModeInside(@NotNull DumbModePermission permission, @NotNull Runnable runnable) {
-    DumbModePermission prev = myPermission.get();
-    if (prev == DumbModePermission.MAY_START_MODAL && permission == DumbModePermission.MAY_START_BACKGROUND) {
-      runnable.run();
-      return;
-    }
-
-    myPermission.set(permission);
-    try {
-      runnable.run();
-    }
-    finally {
-      if (prev == null) {
-        myPermission.remove();
-      } else {
-        myPermission.set(prev);
-      }
-    }
-  }
-
-  @Nullable
-  public DumbModePermission getPermission() {
-    return myPermission.get();
-  }
-}
index 6ed0750bc5ef707faf7cf4e528c73012f5df63cb..980c2dc462c3a9e944f66e0a7db2c5360c7b950a 100644 (file)
@@ -19,7 +19,6 @@ import com.intellij.ide.IdeBundle;
 import com.intellij.openapi.Disposable;
 import com.intellij.openapi.application.*;
 import com.intellij.openapi.application.impl.ApplicationImpl;
-import com.intellij.openapi.components.ServiceManager;
 import com.intellij.openapi.diagnostic.Attachment;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx;
@@ -54,8 +53,6 @@ import java.util.concurrent.atomic.AtomicReference;
 
 public class DumbServiceImpl extends DumbService implements Disposable, ModificationTracker {
   private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.project.DumbServiceImpl");
-  private static final NotNullLazyValue<DumbPermissionServiceImpl> ourPermissionService = NotNullLazyValue.createValue(
-    () -> (DumbPermissionServiceImpl)ServiceManager.getService(DumbPermissionService.class));
   private static Throwable ourForcedTrace;
   private final AtomicReference<State> myState = new AtomicReference<>(State.SMART);
   private volatile Throwable myDumbStart;
@@ -142,7 +139,7 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
     }
     else {
       myState.set(State.WAITING_FOR_FINISH);
-      updateFinished(true);
+      updateFinished();
     }
   }
 
@@ -239,11 +236,6 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
     }
   }
 
-  @Nullable
-  public static DumbModePermission getExplicitPermission() {
-    return ourPermissionService.getValue().getPermission();
-  }
-
   @NotNull
   public static AccessToken forceDumbModeStartTrace(@NotNull Throwable trace) {
     ApplicationManager.getApplication().assertIsDispatchThread();
@@ -258,16 +250,16 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
     };
   }
 
-  private void queueUpdateFinished(boolean modal) {
+  private void queueUpdateFinished() {
     if (myState.compareAndSet(State.RUNNING_DUMB_TASKS, State.WAITING_FOR_FINISH)) {
       StartupManager.getInstance(myProject).runWhenProjectIsInitialized(
         () -> TransactionGuard.getInstance().submitTransaction(myProject, myDumbStartTransaction, () ->
           WriteAction.run(
-            () -> updateFinished(modal))));
+            () -> updateFinished())));
     }
   }
 
-  private void updateFinished(boolean modal) {
+  private void updateFinished() {
     synchronized (myRunWhenSmartQueue) {
       if (!myState.compareAndSet(State.WAITING_FOR_FINISH, State.SMART)) {
         return;
@@ -279,10 +271,7 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
 
     if (ApplicationManager.getApplication().isInternal()) LOG.info("updateFinished");
 
-    // some listeners might start yet another dumb mode
-    // allow that whatever the current modality is, because it won't harm anyone
-    allowStartingDumbModeInside(modal ? DumbModePermission.MAY_START_MODAL : DumbModePermission.MAY_START_BACKGROUND,
-                                this::notifyUpdateFinished);
+    notifyUpdateFinished();
   }
 
   private void notifyUpdateFinished() {
@@ -398,12 +387,12 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
   private void showModalProgress() {
     try {
       ((ApplicationImpl)ApplicationManager.getApplication()).executeSuspendingWriteAction(myProject, IdeBundle.message("progress.indexing"), () ->
-        runBackgroundProcess(ProgressManager.getInstance().getProgressIndicator(), true));
+        runBackgroundProcess(ProgressManager.getInstance().getProgressIndicator()));
     }
     finally {
       if (myState.get() != State.SMART) {
         if (myState.get() != State.WAITING_FOR_FINISH) throw new AssertionError(myState.get());
-        WriteAction.run(() -> updateFinished(true));
+        WriteAction.run(() -> updateFinished());
       }
     }
   }
@@ -413,17 +402,17 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
       ProgressManager.getInstance().run(new Task.Backgroundable(myProject, IdeBundle.message("progress.indexing"), false) {
         @Override
         public void run(@NotNull final ProgressIndicator visibleIndicator) {
-          runBackgroundProcess(visibleIndicator, false);
+          runBackgroundProcess(visibleIndicator);
         }
       });
     }
     catch (Throwable e) {
-      queueUpdateFinished(false);
+      queueUpdateFinished();
       LOG.error("Failed to start background index update task", e);
     }
   }
 
-  private void runBackgroundProcess(@NotNull final ProgressIndicator visibleIndicator, boolean modal) {
+  private void runBackgroundProcess(@NotNull final ProgressIndicator visibleIndicator) {
     if (!myState.compareAndSet(State.SCHEDULED_TASKS, State.RUNNING_DUMB_TASKS)) return;
 
     final ShutDownTracker shutdownTracker = ShutDownTracker.getInstance();
@@ -437,7 +426,7 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
 
       DumbModeTask task = null;
       while (true) {
-        Pair<DumbModeTask, ProgressIndicatorEx> pair = getNextTask(task, modal);
+        Pair<DumbModeTask, ProgressIndicatorEx> pair = getNextTask(task);
         if (pair == null) break;
 
         task = pair.first;
@@ -483,7 +472,7 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
     }, taskIndicator);
   }
 
-  @Nullable private Pair<DumbModeTask, ProgressIndicatorEx> getNextTask(@Nullable final DumbModeTask prevTask, final boolean modal) {
+  @Nullable private Pair<DumbModeTask, ProgressIndicatorEx> getNextTask(@Nullable final DumbModeTask prevTask) {
     final Ref<Pair<DumbModeTask, ProgressIndicatorEx>> result = Ref.create();
     invokeAndWaitIfNeeded(() -> {
       if (myProject.isDisposed()) return;
@@ -493,7 +482,7 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
 
       while (true) {
         if (myUpdatesQueue.isEmpty()) {
-          queueUpdateFinished(modal);
+          queueUpdateFinished();
           return;
         }
 
index ebdea69a5879939e2d4a3fb04b10d6a8c5b8725e..acfae106a9183c7483ee6c8a0c4cea06c3e766ce 100644 (file)
     <projectService serviceImplementation="com.intellij.ui.tabs.FileColorProjectLevelConfigurationManager"/>
 
     <projectService serviceInterface="com.intellij.openapi.project.DumbService" serviceImplementation="com.intellij.openapi.project.DumbServiceImpl"/>
-    <applicationService serviceInterface="com.intellij.openapi.project.DumbPermissionService" serviceImplementation="com.intellij.openapi.project.DumbPermissionServiceImpl"/>
 
     <projectService serviceInterface="com.intellij.psi.util.CachedValuesManager"
                     serviceImplementation="com.intellij.util.CachedValuesManagerImpl"/>