view mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupport.java @ 678:fd0c1e91bd46

mercurial url support + some tests
author Pavel Sher <pavel.sher@gmail.com>
date Sun, 24 Nov 2013 17:22:43 +0100
parents
children 31a1aca3305c
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial;

import jetbrains.buildServer.vcs.*;
import jetbrains.buildServer.vcs.impl.VcsRootImpl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.HashMap;
import java.util.Map;

public class MercurialUrlSupport implements UrlSupport {

  private final MercurialVcsSupport myVcsSupport;

  public MercurialUrlSupport(@NotNull MercurialVcsSupport vcsSupport) {
    myVcsSupport = vcsSupport;
  }

  @Nullable
  public Map<String, String> convertToVcsRootProperties(@NotNull VcsUrl url) throws VcsException {
    String fetchUrl = url.getUrl();

    boolean testRequired = true;
    MavenVcsUrl mavenUrl = url.asMavenVcsUrl();
    if (mavenUrl != null && !"hg".equals(mavenUrl.getProviderSchema())) {
      return null;
    }

    if (mavenUrl != null) {
      fetchUrl = mavenUrl.getProviderSpecificPart();
      testRequired = false;
    }

    Map<String, String> res = new HashMap<String, String>(myVcsSupport.getDefaultVcsProperties());
    res.put(Constants.REPOSITORY_PROP, fetchUrl);
    Credentials credentials = url.getCredentials();
    if (credentials != null) {
      res.put(Constants.USERNAME, credentials.getUsername());
      res.put(Constants.PASSWORD, credentials.getPassword());
    }

    if (testRequired) {
      try {
        TestConnectionSupport testConnectionSupport = myVcsSupport.getTestConnectionSupport();
        assert testConnectionSupport != null;
        testConnectionSupport.testConnection(new VcsRootImpl(-1, res));
      } catch (VcsException e) {
        return null;
      }
    }

    return res;
  }
}