Mercurial > hg > mercurial
changeset 435:4b6cca841ea5
New list files API
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Thu, 17 May 2012 16:16:22 +0400 |
parents | a40ae1cfb67c |
children | a85e08df0259 |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupportTest.java |
diffstat | 3 files changed, 19 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java Thu May 17 12:53:36 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java Thu May 17 16:16:22 2012 +0400 @@ -4,6 +4,7 @@ import jetbrains.buildServer.vcs.ListDirectChildrenPolicy; import jetbrains.buildServer.vcs.VcsException; import jetbrains.buildServer.vcs.VcsFileData; +import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -21,30 +22,29 @@ public class ListFilesSupport implements ListDirectChildrenPolicy { private final MercurialVcsSupport myVcs; - private final HgVcsRoot myRoot; - private final HgRepo myRepo; + private final HgVcsRootFactory myHgVcsRootFactory; public ListFilesSupport(@NotNull MercurialVcsSupport vcs, - @NotNull HgVcsRoot root, - @NotNull HgRepo repo) { + @NotNull HgVcsRootFactory hgVcsRootFactory) { myVcs = vcs; - myRoot = root; - myRepo = repo; + myHgVcsRootFactory = hgVcsRootFactory; } @NotNull - public List<VcsFileData> listFiles(@NotNull String dir) throws VcsException { - myVcs.syncRepository(myRoot); + public List<VcsFileData> listFiles(@NotNull VcsRoot root, @NotNull String dir) throws VcsException { + HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); + myVcs.syncRepository(hgRoot); String dirPath = isEmpty(dir) || dir.endsWith("/") ? dir : dir + "/"; - return listFilesIn(dirPath); + return listFilesIn(hgRoot, dirPath); } @NotNull - private List<VcsFileData> listFilesIn(@NotNull String dir) throws VcsException { + private List<VcsFileData> listFilesIn(@NotNull HgVcsRoot root, @NotNull String dir) throws VcsException { + HgRepo repo = myVcs.createRepo(root); List<VcsFileData> result = new ArrayList<VcsFileData>(); Pattern p = compile(quote(File.separator)); - for (String file : myRepo.listFiles()) { + for (String file : repo.listFiles()) { String canonicalFile = p.matcher(file).replaceAll("/"); if (!canonicalFile.startsWith(dir)) continue;
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Thu May 17 12:53:36 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Thu May 17 16:16:22 2012 +0400 @@ -723,7 +723,7 @@ } } - private ServerHgRepo createRepo(@NotNull HgVcsRoot root) throws VcsException { + ServerHgRepo createRepo(@NotNull HgVcsRoot root) throws VcsException { return myRepoFactory.create(getWorkingDir(root), myHgPathProvider.getHgPath(root), root.getAuthSettings()); } @@ -752,13 +752,7 @@ @Override - public ListFilesPolicy getListFilesPolicy(@NotNull VcsRoot root) { - try { - HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); - HgRepo repo = createRepo(hgRoot); - return new ListFilesSupport(this, hgRoot, repo); - } catch (VcsException e) { - return null; - } + public ListFilesPolicy getListFilesPolicy() { + return new ListFilesSupport(this, myHgVcsRootFactory); } }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupportTest.java Thu May 17 12:53:36 2012 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupportTest.java Thu May 17 16:16:22 2012 +0400 @@ -48,13 +48,13 @@ public void should_support_list_files() throws Exception { - assertNotNull(myVcs.getListFilesPolicy(myRoot)); + assertNotNull(myVcs.getListFilesPolicy()); } public void list_root_dir() throws Exception { ListDirectChildrenPolicy policy = getListFilesPolicy(); - Collection<VcsFileData> files = policy.listFiles(""); + Collection<VcsFileData> files = policy.listFiles(myRoot, ""); assertTrue(files.contains(dir("dir1"))); assertTrue(files.contains(dir("dir with space"))); assertTrue(files.contains(file("file.txt"))); @@ -63,18 +63,18 @@ public void list_subdir() throws Exception { ListDirectChildrenPolicy policy = getListFilesPolicy(); - Collection<VcsFileData> files = policy.listFiles("dir1"); + Collection<VcsFileData> files = policy.listFiles(myRoot, "dir1"); assertTrue(files.contains(file("file1.txt"))); assertTrue(files.contains(file("file3.txt"))); assertTrue(files.contains(dir("subdir"))); - files = policy.listFiles("dir1/subdir/"); + files = policy.listFiles(myRoot, "dir1/subdir/"); assertTrue(files.contains(file("file2.txt"))); } @NotNull private ListDirectChildrenPolicy getListFilesPolicy() { - ListDirectChildrenPolicy listFilesPolicy = (ListDirectChildrenPolicy) myVcs.getListFilesPolicy(myRoot); + ListDirectChildrenPolicy listFilesPolicy = (ListDirectChildrenPolicy) myVcs.getListFilesPolicy(); assert listFilesPolicy != null; return listFilesPolicy; }