changeset 514:89e9c06fbc76

Move TeamCity-specific logic to separate module
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Mon, 26 Nov 2012 13:23:43 +0400
parents 575d716a6846
children 4688509f4e3a
files .idea/compiler.xml mercurial-server-tc/src/META-INF/build-server-plugin-mercurial-tc.xml mercurial-server-tc/src/META-INF/do-not-load-in-vcs-mode mercurial-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCleaner.java mercurial-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialExtensionRegistry.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialSupportBuilder.java
diffstat 7 files changed, 58 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/.idea/compiler.xml	Fri Nov 16 16:44:51 2012 +0400
+++ b/.idea/compiler.xml	Mon Nov 26 13:23:43 2012 +0400
@@ -19,6 +19,7 @@
       <entry name="?*.jsp" />
       <entry name="?*.tag" />
       <entry name="?*.template" />
+      <entry name="do-not-load-in-vcs-mode" />
     </wildcardResourcePatterns>
     <annotationProcessing>
       <profile default="true" name="Default" enabled="false">
--- a/mercurial-server-tc/src/META-INF/build-server-plugin-mercurial-tc.xml	Fri Nov 16 16:44:51 2012 +0400
+++ b/mercurial-server-tc/src/META-INF/build-server-plugin-mercurial-tc.xml	Mon Nov 26 13:23:43 2012 +0400
@@ -2,5 +2,7 @@
 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
 
 <beans default-autowire="constructor">
+    <bean class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialExtensionRegistry"/>
     <bean class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialBranchSupport"/>
+    <bean class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialCleaner"/>
 </beans>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCleaner.java	Mon Nov 26 13:23:43 2012 +0400
@@ -0,0 +1,24 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial;
+
+import jetbrains.buildServer.serverSide.BuildServerAdapter;
+import jetbrains.buildServer.serverSide.BuildServerListener;
+import jetbrains.buildServer.serverSide.SBuildServer;
+import jetbrains.buildServer.util.EventDispatcher;
+import jetbrains.buildServer.vcs.VcsManager;
+import org.jetbrains.annotations.NotNull;
+
+public class MercurialCleaner implements MercurialServerExtension {
+
+  public MercurialCleaner(@NotNull final SBuildServer server,
+                          @NotNull final VcsManager vcsManager,
+                          @NotNull final EventDispatcher<BuildServerListener> dispatcher,
+                          @NotNull final ServerPluginConfig config,
+                          @NotNull final MirrorManager mirrorManager) {
+    dispatcher.addListener(new BuildServerAdapter() {
+      @Override
+      public void cleanupFinished() {
+        server.getExecutor().submit(new Cleanup(vcsManager, mirrorManager, config));
+      }
+    });
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialExtensionRegistry.java	Mon Nov 26 13:23:43 2012 +0400
@@ -0,0 +1,13 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collection;
+
+public class MercurialExtensionRegistry {
+
+  public MercurialExtensionRegistry(@NotNull MercurialVcsSupport vcs,
+                                    @NotNull Collection<MercurialServerExtension> extensions) {
+    vcs.setExtensions(extensions);
+  }
+}
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Fri Nov 16 16:44:51 2012 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Mon Nov 26 13:23:43 2012 +0400
@@ -15,8 +15,6 @@
  */
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
-import com.intellij.openapi.util.Trinity;
-import jetbrains.buildServer.BuildAgent;
 import jetbrains.buildServer.Used;
 import jetbrains.buildServer.buildTriggers.vcs.AbstractVcsPropertiesProcessor;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.*;
@@ -54,7 +52,6 @@
  */
 public class MercurialVcsSupport extends ServerVcsSupport implements LabelingSupport, VcsFileContentProvider,
         CollectChangesBetweenRoots, CollectChangesBetweenRepositories, BuildPatchByCheckoutRules {
-  private final VcsManager myVcsManager;
   private final MirrorManager myMirrorManager;
   private final ServerPluginConfig myConfig;
   private final HgPathProvider myHgPathProvider;
@@ -63,52 +60,36 @@
   private final FileFilter myIgnoreDotHgFilter = new IgnoreDotHgFilter();
   private final FileFilter myAcceptAllFilter = new AcceptAllFilter();
   private final HgTestConnectionSupport myTestConnection;
-  private final Collection<MercurialServerExtension> myExtensions;
+  private Collection<MercurialServerExtension> myExtensions;
 
-  public MercurialVcsSupport(@NotNull final VcsManager vcsManager,
-                             @NotNull final SBuildServer server,
-                             @NotNull final EventDispatcher<BuildServerListener> dispatcher,
+  public MercurialVcsSupport(@NotNull final EventDispatcher<ServerListener> dispatcher,
                              @NotNull final ResetCacheRegister resetCacheHandlerManager,
                              @NotNull final ServerPluginConfig config,
                              @NotNull final HgPathProvider hgPathProvider,
                              @NotNull final RepoFactory repoFactory,
                              @NotNull final MirrorManager mirrorManager,
                              @NotNull final HgVcsRootFactory hgVcsRootFactory,
-                             @NotNull final HgTestConnectionSupport testConnection,
-                             @NotNull final Collection<MercurialServerExtension> extensions) {
-    myVcsManager = vcsManager;
+                             @NotNull final HgTestConnectionSupport testConnection) {
     myConfig = config;
     myMirrorManager = mirrorManager;
     myHgPathProvider = hgPathProvider;
     myRepoFactory = repoFactory;
     myHgVcsRootFactory = hgVcsRootFactory;
     myTestConnection = testConnection;
-    myExtensions = extensions;
     resetCacheHandlerManager.registerHandler(new MercurialResetCacheHandler(myMirrorManager));
-    dispatcher.addListener(new BuildServerAdapter() {
-      @Override
-      public void cleanupFinished() {
-        server.getExecutor().submit(new Cleanup(myVcsManager, myMirrorManager, myConfig));
-      }
-
+    dispatcher.addListener(new ServerListenerAdapter() {
       @Override
       public void serverShutdown() {
         myRepoFactory.dispose();
       }
-
-      @Override
-      public void sourcesVersionReleased(@NotNull final BuildAgent agent) {
-        super.sourcesVersionReleased(agent);
-        server.getExecutor().submit(new Runnable() {
-          public void run() {
-            deleteWithLocking(myMirrorManager.getMirrors());
-          }
-        });
-      }
     });
     logUsedHg();
   }
 
+  public void setExtensions(@NotNull Collection<MercurialServerExtension> extensions) {
+    myExtensions = extensions;
+  }
+
   private void logUsedHg() {
     String hgPath = myConfig.getHgPath();
     if (hgPath != null)
@@ -117,17 +98,6 @@
       Loggers.VCS.info("Server-wide hg path is not set, will use path from the VCS root settings");
   }
 
-  private void deleteWithLocking(Collection<File> filesForDelete) {
-    for (File f : filesForDelete) {
-      lockWorkDir(f);
-      try {
-        FileUtil.delete(f);
-      } finally {
-        unlockWorkDir(f);
-      }
-    }
-  }
-
   private List<VcsChange> toVcsChanges(final List<FileStatus> modifiedFiles, String prevVer, String curVer, CheckoutRules rules) {
     List<VcsChange> files = new ArrayList<VcsChange>();
     for (FileStatus mf: modifiedFiles) {
@@ -451,10 +421,8 @@
     Map<String, String> branchRevisions = getBranchesRevisions(hgRoot);
     String defaultBranchName = hgRoot.getBranchName();
     if (branchRevisions.get(defaultBranchName) == null) {
-      VcsException e = new VcsException("Cannot find revision of the default branch '" +
+      throw new VcsException("Cannot find revision of the default branch '" +
               defaultBranchName + "' of vcs root " + LogUtil.describe(root));
-      e.setRoot(root);
-      throw e;
     }
     return RepositoryStateData.createVersionState(defaultBranchName, branchRevisions);
   }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java	Fri Nov 16 16:44:51 2012 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java	Mon Nov 26 13:23:43 2012 +0400
@@ -1,6 +1,7 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
 import com.intellij.openapi.diagnostic.Logger;
+import jetbrains.buildServer.serverSide.CachePaths;
 import jetbrains.buildServer.serverSide.ServerPaths;
 import jetbrains.buildServer.serverSide.TeamCityProperties;
 import org.jetbrains.annotations.NotNull;
@@ -24,8 +25,8 @@
 
   private final File myCachesDir;
 
-  public ServerPluginConfigImpl(@NotNull final ServerPaths paths) {
-    myCachesDir = new File(paths.getCachesDir(), "mercurial");
+  public ServerPluginConfigImpl(@NotNull final CachePaths paths) {
+    myCachesDir = paths.getCacheDirectory("mercurial");
   }
 
   public boolean isUsePullProtocol() {
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialSupportBuilder.java	Fri Nov 16 16:44:51 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialSupportBuilder.java	Mon Nov 26 13:23:43 2012 +0400
@@ -4,6 +4,7 @@
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory;
 import jetbrains.buildServer.serverSide.BuildServerListener;
 import jetbrains.buildServer.serverSide.SBuildServer;
+import jetbrains.buildServer.serverSide.ServerListener;
 import jetbrains.buildServer.util.EventDispatcher;
 import jetbrains.buildServer.util.cache.ResetCacheHandler;
 import jetbrains.buildServer.util.cache.ResetCacheRegister;
@@ -34,13 +35,7 @@
   public MercurialVcsSupport build() throws IOException {
     if (myContext == null)
       myContext = new Mockery();
-    VcsManager vcsManager = myContext.mock(VcsManager.class);
-    final SBuildServer server = myContext.mock(SBuildServer.class);
-    final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
-    myContext.checking(new Expectations() {{
-      allowing(server).getExecutor(); will(returnValue(executor));
-    }});
-    EventDispatcher<BuildServerListener> dispatcher = EventDispatcher.create(BuildServerListener.class);
+    EventDispatcher<ServerListener> dispatcher = EventDispatcher.create(ServerListener.class);
     myHgRootFactory = new HgVcsRootFactory(myConfig);
     MirrorManagerImpl mirrorManager = new MirrorManagerImpl(myConfig);
     ServerHgPathProvider hgPathProvider = new ServerHgPathProvider(myConfig);
@@ -50,8 +45,10 @@
     myContext.checking(new Expectations() {{
       allowing(resetCacheManager).registerHandler(with(any(ResetCacheHandler.class)));
     }});
-    return new MercurialVcsSupport(vcsManager, server, dispatcher, resetCacheManager, myConfig, hgPathProvider,
-            repoFactory, mirrorManager, myHgRootFactory, testConnection, myExtensions);
+    MercurialVcsSupport vcs = new MercurialVcsSupport(dispatcher, resetCacheManager, myConfig, hgPathProvider,
+            repoFactory, mirrorManager, myHgRootFactory, testConnection);
+    vcs.setExtensions(myExtensions);
+    return vcs;
   }