From 62f81b2b0e91ef7ec11db2385b6868603992b55e Mon Sep 17 00:00:00 2001 From: Irina Chernushina Date: Tue, 7 Jul 2009 17:00:29 +0400 Subject: [PATCH] VCS: fix tests. all vcses = service; GitRootTracker should be started from "activate" --- platform-resources/src/componentSets/VCS.xml | 4 ++++ .../DuringChangeListManagerUpdateTestScheme.java | 3 +-- .../openapi/vcs/impl/ProjectLevelVcsManagerImpl.java | 18 +++++++----------- .../openapi/vcs/impl/projectlevelman/AllVcses.java | 12 +++++++++--- .../openapi/vcs/impl/projectlevelman/AllVcsesI.java | 8 +------- .../openapi/vcs/impl/projectlevelman/NewMappings.java | 16 ++++++++-------- 6 files changed, 30 insertions(+), 31 deletions(-) diff --git a/platform-resources/src/componentSets/VCS.xml b/platform-resources/src/componentSets/VCS.xml index 6a6f8d8adc..b19258dab1 100644 --- a/platform-resources/src/componentSets/VCS.xml +++ b/platform-resources/src/componentSets/VCS.xml @@ -89,5 +89,9 @@ com.intellij.lifecycle.PeriodicalTasksCloser + + com.intellij.openapi.vcs.impl.projectlevelman.AllVcsesI + com.intellij.openapi.vcs.impl.projectlevelman.AllVcses + diff --git a/vcs-impl/src/com/intellij/openapi/vcs/changes/pending/DuringChangeListManagerUpdateTestScheme.java b/vcs-impl/src/com/intellij/openapi/vcs/changes/pending/DuringChangeListManagerUpdateTestScheme.java index 593d942062..e1a94a531b 100644 --- a/vcs-impl/src/com/intellij/openapi/vcs/changes/pending/DuringChangeListManagerUpdateTestScheme.java +++ b/vcs-impl/src/com/intellij/openapi/vcs/changes/pending/DuringChangeListManagerUpdateTestScheme.java @@ -35,10 +35,9 @@ public class DuringChangeListManagerUpdateTestScheme { final ProjectLevelVcsManagerImpl projectLevelVcsManager = (ProjectLevelVcsManagerImpl) ProjectLevelVcsManager.getInstance(project); projectLevelVcsManager.registerVcs(vcs); projectLevelVcsManager.setDirectoryMapping(mockVcsRoot.getAbsolutePath(), vcs.getName()); - projectLevelVcsManager.updateActiveVcss(); AbstractVcs vcsFound = projectLevelVcsManager.findVcsByName(vcs.getName()); - assert projectLevelVcsManager.getRootsUnderVcs(vcsFound).length == 1; + assert projectLevelVcsManager.getRootsUnderVcs(vcsFound).length == 1: "size: " + projectLevelVcsManager.getRootsUnderVcs(vcsFound).length; myDirtyScopeManager = VcsDirtyScopeManager.getInstance(project); myClManager = ChangeListManager.getInstance(project); diff --git a/vcs-impl/src/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java b/vcs-impl/src/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java index 1421725ca8..5773b80d00 100644 --- a/vcs-impl/src/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java +++ b/vcs-impl/src/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java @@ -84,7 +84,6 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme private final ProjectLevelVcsManagerSerialization mySerialization; private final OptionsAndConfirmations myOptionsAndConfirmations; - private AllVcsesI myAllVcsesI; private NewMappings myMappings; private final Project myProject; private MappingsToRoots myMappingsToRoots; @@ -122,8 +121,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme myDefaultVcsRootPolicy = DefaultVcsRootPolicy.getInstance(project); - myAllVcsesI = new AllVcsesCorrectlyInitProxy(myProject); - myMappings = new NewMappings(myProject, myAllVcsesI, myEventDispatcher); + myMappings = new NewMappings(myProject, myEventDispatcher); myMappingsToRoots = new MappingsToRoots(myMappings, myProject); myBackgroundableActionHandlerMap = new HashMap(); } @@ -137,22 +135,22 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme } public void registerVcs(AbstractVcs vcs) { - myAllVcsesI.registerManually(vcs); + AllVcses.getInstance(myProject).registerManually(vcs); } @Nullable public AbstractVcs findVcsByName(String name) { if (name == null) return null; if (myProject.isDisposed()) return null; - return myAllVcsesI.getByName(name); + return AllVcses.getInstance(myProject).getByName(name); } public AbstractVcs[] getAllVcss() { - return myAllVcsesI.getAll(); + return AllVcses.getInstance(myProject).getAll(); } public boolean haveVcses() { - return ! myAllVcsesI.isEmpty(); + return ! AllVcses.getInstance(myProject).isEmpty(); } public void disposeComponent() { @@ -204,7 +202,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme if (vcsName == null || vcsName.length() == 0) { return null; } - return myAllVcsesI.getByName(vcsName); + return AllVcses.getInstance(myProject).getByName(vcsName); } @Nullable @@ -256,8 +254,6 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme if (myIsDisposed) return; myMappings.disposeMe(); - myAllVcsesI.disposeMe(); - try { myContentManager = null; @@ -278,7 +274,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme LOG.warn("Active vcs '" + vcs.getName() + "' is being unregistered. Remove from mappings first."); } myMappings.beingUnregistered(vcs.getName()); - myAllVcsesI.unregisterManually(vcs); + AllVcses.getInstance(myProject).unregisterManually(vcs); } public ContentManager getContentManager() { diff --git a/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/AllVcses.java b/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/AllVcses.java index 9b1f8c371f..0b1fefc8c0 100644 --- a/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/AllVcses.java +++ b/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/AllVcses.java @@ -1,5 +1,7 @@ package com.intellij.openapi.vcs.impl.projectlevelman; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; @@ -13,7 +15,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.Map; -public class AllVcses implements AllVcsesI { +public class AllVcses implements AllVcsesI, Disposable { private final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.impl.projectlevelman.AllVcses"); private final Map myVcses; @@ -21,7 +23,7 @@ public class AllVcses implements AllVcsesI { private final Project myProject; private final Map myExtensions; - public AllVcses(final Project project) { + private AllVcses(final Project project) { myProject = project; myVcses = new HashMap(); myLock = new Object(); @@ -37,6 +39,10 @@ public class AllVcses implements AllVcsesI { } } + public static AllVcsesI getInstance(final Project project) { + return ServiceManager.getService(project, AllVcsesI.class); + } + private void addVcs(final AbstractVcs vcs) { registerVcs(vcs); myVcses.put(vcs.getName(), vcs); @@ -94,7 +100,7 @@ public class AllVcses implements AllVcsesI { return myList; }*/ - public void disposeMe() { + public void dispose() { synchronized (myLock) { for (AbstractVcs vcs : myVcses.values()) { unregisterVcs(vcs); diff --git a/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/AllVcsesI.java b/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/AllVcsesI.java index ba23f58c89..21462791ec 100644 --- a/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/AllVcsesI.java +++ b/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/AllVcsesI.java @@ -1,7 +1,7 @@ package com.intellij.openapi.vcs.impl.projectlevelman; -import org.jetbrains.annotations.NotNull; import com.intellij.openapi.vcs.AbstractVcs; +import org.jetbrains.annotations.NotNull; /** * Created by IntelliJ IDEA. @@ -12,14 +12,8 @@ import com.intellij.openapi.vcs.AbstractVcs; */ public interface AllVcsesI { void registerManually(@NotNull AbstractVcs vcs); - void unregisterManually(@NotNull AbstractVcs vcs); - AbstractVcs getByName(String name); - - void disposeMe(); - AbstractVcs[] getAll(); - boolean isEmpty(); } diff --git a/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/NewMappings.java b/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/NewMappings.java index 5417714db9..de9de8872f 100644 --- a/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/NewMappings.java +++ b/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/NewMappings.java @@ -25,11 +25,11 @@ public class NewMappings { private final Map myDirectoryMappingWatches; private final DefaultVcsRootPolicy myDefaultVcsRootPolicy; - private final AllVcsesI myAllVcsesI; private final EventDispatcher myEventDispatcher; + private final Project myProject; - public NewMappings(final Project project, final AllVcsesI allVcsesI, final EventDispatcher eventDispatcher) { - myAllVcsesI = allVcsesI; + public NewMappings(final Project project, final EventDispatcher eventDispatcher) { + myProject = project; myLock = new Object(); myVcsToPaths = new HashMap>(); myDirectoryMappingWatches = new HashMap(); @@ -83,16 +83,13 @@ public class NewMappings { } private void keepActiveVcs(final Runnable runnable) { - // ensure initialized - outside the lock - myAllVcsesI.isEmpty(); - final MyVcsActivator activator; synchronized (myLock) { activator = new MyVcsActivator(new HashSet(myVcsToPaths.keySet())); runnable.run(); restoreActiveVcses(); } - activator.activate(myVcsToPaths.keySet(), myAllVcsesI); + activator.activate(myVcsToPaths.keySet(), AllVcses.getInstance(myProject)); } private void restoreActiveVcses() { @@ -101,7 +98,7 @@ public class NewMappings { final List list = new ArrayList(set.size()); for (String s : set) { if (s.trim().length() == 0) continue; - final AbstractVcs vcs = myAllVcsesI.getByName(s); + final AbstractVcs vcs = AllVcses.getInstance(myProject).getByName(s); if (vcs != null) { list.add(vcs); } @@ -229,6 +226,9 @@ public class NewMappings { } private void clearImpl() { + // if vcses were not mapped, there's nothing to clear + if ((myActiveVcses == null) || (myActiveVcses.length == 0)) return; + final Collection toRemove = new ArrayList(); keepActiveVcs(new Runnable() { public void run() { -- 2.11.4.GIT