Mercurial > hg > mercurial
annotate mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgTestConnectionSupport.java @ 1069:26edd3fdaf8a release-92234
TW-70693
(grafted from 2d8aab94494f39f647e2b56ba9f905d0f70a4f54)
author | victory.bedrosova |
---|---|
date | Thu, 18 Mar 2021 18:30:34 +0100 |
parents | 7bf4d943d5bb |
children |
rev | line source |
---|---|
732
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
1 /* |
976 | 2 * Copyright 2000-2018 JetBrains s.r.o. |
732
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
3 * |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
4 * Licensed under the Apache License, Version 2.0 (the "License"); |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
5 * you may not use this file except in compliance with the License. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
6 * You may obtain a copy of the License at |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
7 * |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
8 * http://www.apache.org/licenses/LICENSE-2.0 |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
9 * |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
10 * Unless required by applicable law or agreed to in writing, software |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
11 * distributed under the License is distributed on an "AS IS" BASIS, |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
13 * See the License for the specific language governing permissions and |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
14 * limitations under the License. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
15 */ |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
430
diff
changeset
|
16 |
430
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
17 package jetbrains.buildServer.buildTriggers.vcs.mercurial; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
18 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
19 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
20 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception.MercurialNotFoundException; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
21 import jetbrains.buildServer.vcs.TestConnectionSupport; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
22 import jetbrains.buildServer.vcs.VcsException; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
23 import jetbrains.buildServer.vcs.VcsRoot; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
24 import org.jetbrains.annotations.NotNull; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
25 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
26 import java.io.File; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
27 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
28 /** |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
29 * @author dmitry.neverov |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
30 */ |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
31 public class HgTestConnectionSupport implements TestConnectionSupport { |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
32 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
33 private final HgVcsRootFactory myHgVcsRootFactory; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
34 private final RepoFactory myRepoFactory; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
35 private final MirrorManager myMirrorManager; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
36 private final HgPathProvider myHgPathProvider; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
37 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
38 public HgTestConnectionSupport(@NotNull HgVcsRootFactory hgVcsRootFactory, |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
39 @NotNull RepoFactory repoFactory, |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
40 @NotNull MirrorManager mirrorManager, |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
41 @NotNull HgPathProvider hgPathProvider) { |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
42 myHgVcsRootFactory = hgVcsRootFactory; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
43 myRepoFactory = repoFactory; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
44 myMirrorManager = mirrorManager; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
45 myHgPathProvider = hgPathProvider; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
46 } |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
47 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
48 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
49 public String testConnection(@NotNull VcsRoot vcsRoot) throws VcsException { |
768 | 50 final HgVcsRoot root = myHgVcsRootFactory.createHgRoot(vcsRoot); |
51 final HgRepo repo = createRepo(root); | |
430
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
52 try { |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
53 repo.id().repository(root.getRepository()) |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
54 .withAuthSettings(root.getAuthSettings()) |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
55 .call(); |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
56 return null; |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
57 } catch (MercurialNotFoundException e) { |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
58 throw friendlyException(root, e); |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
59 } |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
60 } |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
61 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
62 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
63 private VcsException friendlyException(HgVcsRoot root, MercurialNotFoundException e) { |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
64 return new VcsException("Cannot find mercurial executable at path '" + myHgPathProvider.getHgPath(root) + "'", e); |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
65 } |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
66 |
768 | 67 @NotNull |
68 private HgRepo createRepo(HgVcsRoot root) throws VcsException { | |
69 return myRepoFactory.createRepo(root, getWorkingDir(root)); | |
430
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
70 } |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
71 |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
72 private File getWorkingDir(HgVcsRoot root) { |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
73 File customDir = root.getCustomWorkingDir(); |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
74 return customDir != null ? customDir : myMirrorManager.getMirrorDir(root.getRepository()); |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
75 } |
3600b68a4c0c
TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
76 } |