changeset 309:33305b2022c2

Take caches and plugin data dirs from PluginConfig
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Wed, 14 Sep 2011 15:00:30 +0400
parents 63a69ed16c88
children 7bb3cf4e18f8
files mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PluginConfig.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/CommandFactory.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/VcsRootBuilder.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/BaseCommandTestCase.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommandTest.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/VersionCommandTest.java
diffstat 12 files changed, 88 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PluginConfig.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PluginConfig.java	Wed Sep 14 15:00:30 2011 +0400
@@ -1,10 +1,19 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.io.File;
+
 /**
  * @author dmitry.neverov
  */
 public interface PluginConfig {
 
+  @Nullable
   String getHgPath();
 
+  @NotNull
+  File getCachesDir();
+
 }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/CommandFactory.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/CommandFactory.java	Wed Sep 14 15:00:30 2011 +0400
@@ -4,7 +4,6 @@
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.MergeBaseCommand;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.Settings;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.VersionCommand;
-import jetbrains.buildServer.serverSide.ServerPaths;
 import jetbrains.buildServer.util.FileUtil;
 import jetbrains.buildServer.vcs.VcsException;
 import org.jetbrains.annotations.NotNull;
@@ -25,9 +24,9 @@
   private final File myLogTemplate;
 
 
-  public CommandFactory(@NotNull final ServerPaths paths) throws IOException {
-    myDefaultWorkingDir = new File(paths.getCachesDir(), "mercurial");
-    myLogTemplate = createLogTemplate(paths.getPluginDataDirectory());
+  public CommandFactory(@NotNull final ServerPluginConfig config) throws IOException {
+    myDefaultWorkingDir = config.getCachesDir();
+    myLogTemplate = createLogTemplate(config.getPluginDataDir());
   }
 
 
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Wed Sep 14 15:00:30 2011 +0400
@@ -64,16 +64,15 @@
   private final CommandFactory myCommandFactory;
 
   public MercurialVcsSupport(@NotNull final VcsManager vcsManager,
-                             @NotNull final ServerPaths paths,
                              @NotNull final SBuildServer server,
                              @NotNull final EventDispatcher<BuildServerListener> dispatcher,
                              @NotNull final ServerPluginConfig config,
                              @NotNull final HgPathProvider hgPathProvider,
                              @NotNull final CommandFactory commandFactory) {
     myVcsManager = vcsManager;
-    myDefaultWorkFolderParent = new File(paths.getCachesDir(), "mercurial");
+    myConfig = config;
+    myDefaultWorkFolderParent = myConfig.getCachesDir();
     myMirrorManager = new MirrorManager(myDefaultWorkFolderParent);
-    myConfig = config;
     myHgPathProvider = hgPathProvider;
     myCommandFactory = commandFactory;
     dispatcher.addListener(new BuildServerAdapter() {
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java	Wed Sep 14 15:00:30 2011 +0400
@@ -1,5 +1,9 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
+import org.jetbrains.annotations.NotNull;
+
+import java.io.File;
+
 /**
  * @author dmitry.neverov
  */
@@ -7,4 +11,7 @@
 
   public boolean isUsePullProtocol();
 
+  @NotNull
+  public File getPluginDataDir();
+
 }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java	Wed Sep 14 15:00:30 2011 +0400
@@ -1,13 +1,25 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
+import jetbrains.buildServer.serverSide.ServerPaths;
 import jetbrains.buildServer.serverSide.TeamCityProperties;
+import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
+import java.io.File;
+
 /**
  * @author dmitry.neverov
  */
 public class ServerPluginConfigImpl implements ServerPluginConfig {
 
+  private final File myCachesDir;
+  private final File myPluginDataDir;
+
+  public ServerPluginConfigImpl(@NotNull final ServerPaths paths) {
+    myCachesDir = new File(paths.getCachesDir(), "mercurial");
+    myPluginDataDir = paths.getPluginDataDirectory();
+  }
+
   public boolean isUsePullProtocol() {
     return TeamCityProperties.getBooleanOrTrue("teamcity.hg.use.pull.protocol");
   }
@@ -16,4 +28,14 @@
   public String getHgPath() {
     return TeamCityProperties.getPropertyOrNull("teamcity.hg.server.path");
   }
+
+  @NotNull
+  public File getCachesDir() {
+    return myCachesDir;
+  }
+
+  @NotNull
+  public File getPluginDataDir() {
+    return myPluginDataDir;
+  }
 }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Wed Sep 14 15:00:30 2011 +0400
@@ -44,7 +44,6 @@
 public class MercurialVcsSupportTest extends BaseMercurialTestCase {
 
   private MercurialVcsSupport myVcs;
-  private ServerPaths myServerPaths;
   private String myRep2Path = new File("mercurial-tests/testData/rep2").getAbsolutePath();
   private ServerPluginConfig myPluginConfig;
 
@@ -60,11 +59,11 @@
 
     EventDispatcher<BuildServerListener> dispatcher = EventDispatcher.create(BuildServerListener.class);
 
-    File systemDir = myTempFiles.createTempDir();
-    myServerPaths = new ServerPaths(systemDir.getAbsolutePath(), systemDir.getAbsolutePath(), systemDir.getAbsolutePath());
-    assertTrue(new File(myServerPaths.getCachesDir()).mkdirs());
-    myPluginConfig = createPluginConfig();
-    myVcs = new MercurialVcsSupport((VcsManager)vcsManagerMock.proxy(), myServerPaths, (SBuildServer)serverMock.proxy(), dispatcher, myPluginConfig, new ServerHgPathProvider(myPluginConfig), new CommandFactory(myServerPaths));
+    myPluginConfig = new ServerPluginConfigBuilder()
+            .cachesDir(myTempFiles.createTempDir())
+            .pluginDataDir(myTempFiles.createTempDir())
+            .build();
+    myVcs = new MercurialVcsSupport((VcsManager)vcsManagerMock.proxy(), (SBuildServer)serverMock.proxy(), dispatcher, myPluginConfig, new ServerHgPathProvider(myPluginConfig), new CommandFactory(myPluginConfig));
   }
 
   protected String getTestDataPath() {
@@ -151,7 +150,7 @@
     ByteArrayOutputStream output = buildPatch(vcsRoot, null, "4:b06a290a363b", new CheckoutRules(""));
     checkPatchResult(output.toByteArray());
 
-    File clonedReposParentDir = new File(myServerPaths.getCachesDir(), "mercurial");
+    File clonedReposParentDir = myPluginConfig.getCachesDir();
     assertTrue(clonedReposParentDir.isDirectory());
     assertTrue(1 == clonedReposParentDir.list(new FilenameFilter() {
       public boolean accept(final File dir, final String name) {
@@ -502,17 +501,5 @@
   public void test_collect_changes_using_checkout_rules() {
     assertTrue(myVcs.getCollectChangesPolicy() instanceof CollectChangesByCheckoutRules);
   }
-
-  private ServerPluginConfig createPluginConfig() {
-    return new ServerPluginConfig() {
-      public boolean isUsePullProtocol() {
-        return true;
-      }
-
-      public String getHgPath() {
-        return null;
-      }
-    };
-  }
 }
  
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java	Wed Sep 14 15:00:30 2011 +0400
@@ -2,6 +2,8 @@
 
 import org.jetbrains.annotations.NotNull;
 
+import java.io.File;
+
 /**
  * @author dmitry.neverov
  */
@@ -9,11 +11,14 @@
 
   private boolean myUsePullProtocol = true;
   private String myHgPath;
+  private File myCachesDir;
+  private File myPluginDataDir;
 
 
   @NotNull
   public ServerPluginConfig build() {
     return new ServerPluginConfig() {
+
       public boolean isUsePullProtocol() {
         return myUsePullProtocol;
       }
@@ -21,6 +26,20 @@
       public String getHgPath() {
         return myHgPath;
       }
+
+      @NotNull
+      public File getCachesDir() {
+        if (myCachesDir == null)
+          throw new IllegalStateException("Caches dir is not set");
+        return myCachesDir;
+      }
+
+      @NotNull
+      public File getPluginDataDir() {
+        if (myPluginDataDir == null)
+          throw new IllegalStateException("Plugin data dir is not set");
+        return myPluginDataDir;
+      }
     };
   }
 
@@ -34,4 +53,14 @@
     myHgPath = hgPath;
     return this;
   }
+
+  public ServerPluginConfigBuilder cachesDir(File cachesDir) {
+    myCachesDir = cachesDir;
+    return this;
+  }
+
+  public ServerPluginConfigBuilder pluginDataDir(File pluginDataDir) {
+    myPluginDataDir = pluginDataDir;
+    return this;
+  }
 }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java	Wed Sep 14 15:00:30 2011 +0400
@@ -123,6 +123,7 @@
   }
 
   private Settings createSettings(@NotNull final VcsRoot root) {
-    return new Settings(new ServerHgPathProvider(new ServerPluginConfigImpl()), root);
+    ServerPluginConfig config = new ServerPluginConfigBuilder().build();
+    return new Settings(new ServerHgPathProvider(config), root);
   }
 }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/VcsRootBuilder.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/VcsRootBuilder.java	Wed Sep 14 15:00:30 2011 +0400
@@ -18,7 +18,7 @@
   private String myHgPath;
 
   public VcsRootImpl build() throws IOException {
-    VcsRootImpl vcsRoot = new VcsRootImpl(1, Constants.VCS_NAME);
+    VcsRootImpl vcsRoot = new VcsRootImpl(myRootId, Constants.VCS_NAME);
     vcsRoot.addProperty(Constants.REPOSITORY_PROP, myRepository);
     vcsRoot.addProperty(Constants.HG_COMMAND_PATH_PROP, myHgPath != null ? myHgPath : Util.getHgPath());
     vcsRoot.addProperty(Constants.USERNAME, myUsername);
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/BaseCommandTestCase.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/BaseCommandTestCase.java	Wed Sep 14 15:00:30 2011 +0400
@@ -73,7 +73,8 @@
 
     MirrorManager mirrorManager = new MirrorManager(parentDir);
     VcsRoot vcsRoot = new VcsRootImpl(1, vcsRootProps);
-    Settings settings = new Settings(new ServerHgPathProvider(new ServerPluginConfigImpl()), vcsRoot);
+    ServerPluginConfig config = new ServerPluginConfigBuilder().build();
+    Settings settings = new Settings(new ServerHgPathProvider(config), vcsRoot);
     final File workingDir = mirrorManager.getMirrorDir(settings.getRepositoryUrl());
     settings.setCustomWorkingDir(workingDir);
     try {
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommandTest.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommandTest.java	Wed Sep 14 15:00:30 2011 +0400
@@ -42,7 +42,8 @@
     root.addProperty(Constants.HG_COMMAND_PATH_PROP, Util.getHgPath());
 
     File workingDir = myTempFiles.createTempDir();
-    Settings settings = new Settings(new ServerHgPathProvider(new ServerPluginConfigImpl()), root);
+    ServerPluginConfig config = new ServerPluginConfigBuilder().cachesDir(myTempFiles.createTempDir()).build();
+    Settings settings = new Settings(new ServerHgPathProvider(config), root);
     settings.setCustomWorkingDir(workingDir);
 
     CloneCommand clone = new CloneCommand(settings, workingDir);
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/VersionCommandTest.java	Wed Sep 14 13:46:50 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/VersionCommandTest.java	Wed Sep 14 15:00:30 2011 +0400
@@ -1,9 +1,6 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
 
-import jetbrains.buildServer.buildTriggers.vcs.mercurial.HgVersion;
-import jetbrains.buildServer.buildTriggers.vcs.mercurial.ServerHgPathProvider;
-import jetbrains.buildServer.buildTriggers.vcs.mercurial.ServerPluginConfigImpl;
-import jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder;
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.*;
 import jetbrains.buildServer.vcs.impl.VcsRootImpl;
 import junit.framework.TestCase;
 import org.testng.annotations.Test;
@@ -18,7 +15,8 @@
 
   public void test() throws Exception {
     VcsRootImpl root = new VcsRootBuilder().repository("some/repository").build();
-    Settings settings = new Settings(new ServerHgPathProvider(new ServerPluginConfigImpl()), root);
+    ServerPluginConfig config = new ServerPluginConfigBuilder().build();
+    Settings settings = new Settings(new ServerHgPathProvider(config), root);
     VersionCommand versionCommand = new VersionCommand(settings, new File(".."));
     HgVersion version = versionCommand.execute();
     assertNotNull(version);