Merge branch 'master' of git.labs.intellij.net:idea/community
authorirengrig <Irina.Chernushina@jetbrains.com>
Tue, 3 Nov 2009 11:09:19 +0000 (14:09 +0300)
committerirengrig <Irina.Chernushina@jetbrains.com>
Tue, 3 Nov 2009 11:09:19 +0000 (14:09 +0300)
12 files changed:
platform/platform-api/src/com/intellij/openapi/progress/AbstractTaskQueue.java
platform/platform-api/src/com/intellij/openapi/progress/BackgroundTaskQueue.java
platform/platform-api/src/com/intellij/openapi/progress/ProgressManagerQueue.java
platform/platform-api/src/com/intellij/openapi/progress/SomeQueue.java [new file with mode: 0644]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/DirtBuilder.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/DirtBuilderReader.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FilePathUnderVcs.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/LazyRefreshingSelfQueue.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/Scopes.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/UpdateRequestsQueue.java
plugins/svn4idea/src/org/jetbrains/idea/svn/RequestsMerger.java
plugins/svn4idea/src/org/jetbrains/idea/svn/history/ZipperUpdater.java

index 0233087d3c9657bead091ec1c801a9c41a833b50..ec5cc5507a987463ff2db0db5d38668f255983ae 100644 (file)
@@ -21,6 +21,7 @@ import com.intellij.openapi.diagnostic.Logger;
 import java.util.LinkedList;
 import java.util.Queue;
 
+@SomeQueue
 public abstract class AbstractTaskQueue<T> {
   private final static Logger LOG = Logger.getInstance("#com.intellij.openapi.progress.AbstractTaskQueue");
 
index 19b96d9fba1edadc0dcfd07eeec14ef0b1c51b33..611e93cf740b222c9bb1b6098879f8d235b990fb 100644 (file)
@@ -27,6 +27,7 @@ import java.util.Queue;
 /**
  * @author yole
  */
+@SomeQueue
 public class BackgroundTaskQueue {
   private final Project myProject;
   private final Queue<Task> myQueue = new LinkedList<Task>();
index ca84323f4d66d91aa0d6943bc677ffd7838d3eed..144b6cd364de1bb4ac96442bcf24213a31bb52cd 100644 (file)
@@ -20,6 +20,7 @@ import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.project.Project;
 import org.jetbrains.annotations.NotNull;
 
+@SomeQueue
 public class ProgressManagerQueue extends AbstractTaskQueue<Runnable> {
   private final ProgressManager myProgressManager;
   private final Task.Backgroundable myTask;
diff --git a/platform/platform-api/src/com/intellij/openapi/progress/SomeQueue.java b/platform/platform-api/src/com/intellij/openapi/progress/SomeQueue.java
new file mode 100644 (file)
index 0000000..3f1c67a
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2000-2009 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.progress;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.SOURCE)
+@Target({ElementType.TYPE})
+public @interface SomeQueue {
+}
index 7d1f3ffb86dfda64646e66249ba359c537b254a1..4b2e59f4a30b1cd264e3c99c364ac94001976a62 100644 (file)
@@ -18,27 +18,28 @@ package com.intellij.openapi.vcs.changes;
 import com.intellij.openapi.vcs.FilePathImpl;
 import com.intellij.openapi.vcs.VcsRoot;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 public class DirtBuilder implements DirtBuilderReader {
   private final VcsGuess myGuess;
 
-  private final List<FilePathUnderVcs> myFiles;
-  private final List<FilePathUnderVcs> myDirs;
+  private final Set<FilePathUnderVcs> myFiles;
+  private final Set<FilePathUnderVcs> myDirs;
   private boolean myEverythingDirty;
 
   public DirtBuilder(final VcsGuess guess) {
     myGuess = guess;
-    myDirs = new ArrayList<FilePathUnderVcs>();
-    myFiles = new ArrayList<FilePathUnderVcs>();
+    myDirs = new HashSet<FilePathUnderVcs>();
+    myFiles = new HashSet<FilePathUnderVcs>();
     myEverythingDirty = false;
   }
 
   public DirtBuilder(final DirtBuilder builder) {
     myGuess = builder.myGuess;
-    myDirs = new ArrayList<FilePathUnderVcs>(builder.myDirs);
-    myFiles = new ArrayList<FilePathUnderVcs>(builder.myFiles);
+    myDirs = new HashSet<FilePathUnderVcs>(builder.myDirs);
+    myFiles = new HashSet<FilePathUnderVcs>(builder.myFiles);
     myEverythingDirty = builder.myEverythingDirty;
   }
 
@@ -72,11 +73,11 @@ public class DirtBuilder implements DirtBuilderReader {
     return myEverythingDirty;
   }
 
-  public List<FilePathUnderVcs> getFilesForVcs() {
+  public Collection<FilePathUnderVcs> getFilesForVcs() {
     return myFiles;
   }
 
-  public List<FilePathUnderVcs> getDirsForVcs() {
+  public Collection<FilePathUnderVcs> getDirsForVcs() {
     return myDirs;
   }
 
index 81778849aa2bc7a1b71013a7693d7b360605b63a..456194378674e95e2b87fd4b844fce3cbb875eba 100644 (file)
  */
 package com.intellij.openapi.vcs.changes;
 
-import java.util.List;
+import java.util.Collection;
 
 public interface DirtBuilderReader {
   boolean isEverythingDirty();
-  List<FilePathUnderVcs> getFilesForVcs();
-  List<FilePathUnderVcs> getDirsForVcs();
+  Collection<FilePathUnderVcs> getFilesForVcs();
+  Collection<FilePathUnderVcs> getDirsForVcs();
   boolean isEmpty();
 }
index 1835b75fc3dbf17a695a197cdcc270e84af14275..83d31d93a23f4c3b12f1e08d5db72b2be23c73cb 100644 (file)
  */
 package com.intellij.openapi.vcs.changes;
 
-import com.intellij.openapi.vcs.FilePath;
+import com.intellij.openapi.util.Comparing;
 import com.intellij.openapi.vcs.AbstractVcs;
-import com.intellij.openapi.vcs.VcsRoot;
+import com.intellij.openapi.vcs.FilePath;
 import com.intellij.openapi.vcs.FilePathImpl;
+import com.intellij.openapi.vcs.VcsRoot;
 
 public class FilePathUnderVcs {
   private final FilePath myPath;
@@ -41,4 +42,24 @@ public class FilePathUnderVcs {
   public AbstractVcs getVcs() {
     return myVcs;
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+
+    FilePathUnderVcs that = (FilePathUnderVcs)o;
+
+    if (myPath != null ? !myPath.equals(that.myPath) : that.myPath != null) return false;
+    if (myVcs != null ? ! Comparing.equal(myVcs.getName(), that.myVcs.getName()) : that.myVcs != null) return false;
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    int result = myPath != null ? myPath.hashCode() : 0;
+    result = 31 * result + (myVcs != null ? myVcs.getName().hashCode() : 0);
+    return result;
+  }
 }
index 2d4cf89fa00de19aa335006c1944def0c7910e86..1108842a80b32957aec6b229d2dbe6a0870d1eb0 100644 (file)
@@ -18,6 +18,7 @@ package com.intellij.openapi.vcs.changes;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.progress.ProgressIndicator;
 import com.intellij.openapi.progress.ProgressManager;
+import com.intellij.openapi.progress.SomeQueue;
 import com.intellij.openapi.util.Computable;
 import com.intellij.openapi.util.Pair;
 import com.intellij.util.Consumer;
@@ -31,6 +32,7 @@ import java.util.*;
  * 2. if checker returns TRUE -> those whose timestamp is older than required
  *
  */
+@SomeQueue
 public class LazyRefreshingSelfQueue<T> {
   private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.changes.LazyRefreshingSelfQueue");
 
index 71489a9d110fd517f55025d1d01ac55e4f29d624..568d9f8b183084c426600147efa6a7514118b50d 100644 (file)
@@ -21,10 +21,7 @@ import com.intellij.openapi.vcs.FilePath;
 import com.intellij.openapi.vcs.impl.DefaultVcsRootPolicy;
 import org.jetbrains.annotations.NotNull;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 public class Scopes {
   private final Project myProject;
@@ -52,11 +49,11 @@ public class Scopes {
       markEverythingDirty();
       return;
     }
-    final List<FilePathUnderVcs> dirs = dirt.getDirsForVcs();
+    final Collection<FilePathUnderVcs> dirs = dirt.getDirsForVcs();
     for (FilePathUnderVcs dir : dirs) {
       getScope(dir.getVcs()).addDirtyDirRecursively(dir.getPath());
     }
-    final List<FilePathUnderVcs> files = dirt.getFilesForVcs();
+    final Collection<FilePathUnderVcs> files = dirt.getFilesForVcs();
     for (FilePathUnderVcs file : files) {
       getScope(file.getVcs()).addDirtyFile(file.getPath());
     }
index 2f8b9ae50f2e39728dc6c6ba80424c80407012ab..29cbfd9429106085a8da7c389ab0177f7a987595 100644 (file)
@@ -21,6 +21,7 @@ import com.intellij.lifecycle.ScheduledSlowlyClosingAlarm;
 import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.application.ModalityState;
 import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.progress.SomeQueue;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.startup.StartupManager;
 import com.intellij.openapi.vcs.ProjectLevelVcsManager;
@@ -36,6 +37,7 @@ import java.util.concurrent.ScheduledExecutorService;
  * Tries to zip several update requests into one (if starts and see several requests in the queue)
  * own inner synchronization
  */
+@SomeQueue
 public class UpdateRequestsQueue {
   private final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.changes.UpdateRequestsQueue");
   private final Project myProject;
index a50480d7fb3c0fb06ceed1fef463ebcc5ea4f83e..6498bef75e143d6e2fe32a104a781982505ebb6d 100644 (file)
@@ -16,6 +16,7 @@
 package org.jetbrains.idea.svn;
 
 import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.progress.SomeQueue;
 import com.intellij.openapi.util.Pair;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.util.Consumer;
@@ -36,6 +37,7 @@ import java.util.Map;
  * - if request had been submitted while refresh action was in progress, new refresh action is initiated right after first refresh action finishes
  *
  */
+@SomeQueue
 public class RequestsMerger {
   private static final Logger LOG = Logger.getInstance("#org.jetbrains.idea.svn.RequestsMerger");
   private static final int ourDelay = 300;
index 20f254cd791d6ebf0da8f165f6765d17222a1f63..82db8ca8d3719f13cf81af8bfcb2d19e603689fa 100644 (file)
  */
 package org.jetbrains.idea.svn.history;
 
+import com.intellij.openapi.progress.SomeQueue;
 import com.intellij.util.Alarm;
 
+@SomeQueue
 public class ZipperUpdater {
   private final Alarm myAlarm;
   private boolean myRaised;