Mercurial > hg > mercurial
view mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgTestConnectionSupport.java @ 704:5ee94ee69b29
helper method
author | eugene.petrenko@jetbrains.com |
---|---|
date | Wed, 08 Jan 2014 17:42:41 +0100 |
parents | 3600b68a4c0c |
children | 31a1aca3305c |
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception.MercurialNotFoundException; import jetbrains.buildServer.vcs.TestConnectionSupport; import jetbrains.buildServer.vcs.VcsException; import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import java.io.File; /** * @author dmitry.neverov */ public class HgTestConnectionSupport implements TestConnectionSupport { private final HgVcsRootFactory myHgVcsRootFactory; private final RepoFactory myRepoFactory; private final MirrorManager myMirrorManager; private final HgPathProvider myHgPathProvider; public HgTestConnectionSupport(@NotNull HgVcsRootFactory hgVcsRootFactory, @NotNull RepoFactory repoFactory, @NotNull MirrorManager mirrorManager, @NotNull HgPathProvider hgPathProvider) { myHgVcsRootFactory = hgVcsRootFactory; myRepoFactory = repoFactory; myMirrorManager = mirrorManager; myHgPathProvider = hgPathProvider; } public String testConnection(@NotNull VcsRoot vcsRoot) throws VcsException { HgVcsRoot root = myHgVcsRootFactory.createHgRoot(vcsRoot); HgRepo repo = createRepo(root); try { repo.id().repository(root.getRepository()) .withAuthSettings(root.getAuthSettings()) .call(); return null; } catch (MercurialNotFoundException e) { throw friendlyException(root, e); } } private VcsException friendlyException(HgVcsRoot root, MercurialNotFoundException e) { return new VcsException("Cannot find mercurial executable at path '" + myHgPathProvider.getHgPath(root) + "'", e); } private ServerHgRepo createRepo(HgVcsRoot root) throws VcsException { return myRepoFactory.create(getWorkingDir(root), myHgPathProvider.getHgPath(root), root.getAuthSettings()); } private File getWorkingDir(HgVcsRoot root) { File customDir = root.getCustomWorkingDir(); return customDir != null ? customDir : myMirrorManager.getMirrorDir(root.getRepository()); } }