vcs: remove unnecessary inheritance
authorAleksey Pivovarov <AMPivovarov@gmail.com>
Tue, 25 Oct 2016 11:22:11 +0000 (14:22 +0300)
committerAleksey Pivovarov <AMPivovarov@gmail.com>
Tue, 25 Oct 2016 11:25:13 +0000 (14:25 +0300)
platform/platform-impl/src/com/intellij/openapi/progress/BackgroundTaskQueue.java
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/BackgroundTaskGroup.java

index f3c86882bafa22ad5c72cc9231005b0d1fca0adb..ad112cb5df3f86086fc309befa98e7f6111caefc 100644 (file)
@@ -40,8 +40,8 @@ import static com.intellij.util.concurrency.QueueProcessor.ThreadToUse;
  */
 @SomeQueue
 public class BackgroundTaskQueue {
-  @NotNull protected final String myTitle;
-  @NotNull protected final QueueProcessor<TaskData> myProcessor;
+  @NotNull private final String myTitle;
+  @NotNull private final QueueProcessor<TaskData> myProcessor;
 
   @NotNull private final Object TEST_TASK_LOCK = new Object();
   private volatile boolean myForceAsyncInTests = false;
@@ -110,10 +110,10 @@ public class BackgroundTaskQueue {
     }
   }
 
-  protected interface TaskData extends Consumer<Runnable> {
+  private interface TaskData extends Consumer<Runnable> {
   }
 
-  protected class BackgroundableTaskData implements TaskData {
+  private class BackgroundableTaskData implements TaskData {
     @NotNull private final Task.Backgroundable myTask;
     @Nullable private final ModalityState myModalityState;
     @Nullable private final ProgressIndicator myIndicator;
index 457ef7675851d83043d5265e14dfb2cc6c31fa3a..2353d2ad4db48fddb7ac54cbb1a1f0c75d73e689 100644 (file)
  */
 package com.intellij.openapi.vcs.actions;
 
-import com.intellij.openapi.application.ModalityState;
 import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.progress.BackgroundTaskQueue;
 import com.intellij.openapi.progress.ProgressIndicator;
 import com.intellij.openapi.progress.Task;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.vcs.AbstractVcsHelper;
 import com.intellij.openapi.vcs.VcsException;
+import com.intellij.util.Consumer;
 import com.intellij.util.ThrowableConsumer;
 import com.intellij.util.ThrowableRunnable;
+import com.intellij.util.concurrency.QueueProcessor;
 import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
 
 import java.util.List;
 
@@ -35,21 +34,24 @@ import static com.intellij.util.containers.ContainerUtil.createLockFreeCopyOnWri
 /**
  * Provides common cancellation and error handling behaviour for group of dependent tasks.
  */
-public class BackgroundTaskGroup extends BackgroundTaskQueue {
+public class BackgroundTaskGroup {
 
   private static final Logger LOG = Logger.getInstance(BackgroundTaskGroup.class);
 
+  @NotNull private final QueueProcessor<TaskData> myProcessor;
   @NotNull private final List<VcsException> myExceptions = createLockFreeCopyOnWriteList();
+
   @NotNull private final Project myProject;
+  @NotNull private final String myTitle;
 
   public BackgroundTaskGroup(@NotNull Project project, @NotNull String title) {
-    super(project, title);
     myProject = project;
+    myTitle = title;
+
+    myProcessor = new QueueProcessor<>(TaskData::consume, true, QueueProcessor.ThreadToUse.AWT, project.getDisposed());
   }
 
-  @Override
-  public void run(@NotNull Task.Backgroundable task, @Nullable ModalityState modalityState, @Nullable ProgressIndicator indicator) {
-    throw new UnsupportedOperationException();
+  private interface TaskData extends Consumer<Runnable> {
   }
 
   public void runInBackground(@NotNull String title, @NotNull ThrowableConsumer<ProgressIndicator, VcsException> task) {