# HG changeset patch # User Dmitry Neverov # Date 1337256982 -14400 # Node ID 4b6cca841ea594d191e93ec6e1ebf7eb9dc25d19 # Parent a40ae1cfb67ce6c6e204469b8ce8bf156df8c40f New list files API diff -r a40ae1cfb67c -r 4b6cca841ea5 mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java --- 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 listFiles(@NotNull String dir) throws VcsException { - myVcs.syncRepository(myRoot); + public List 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 listFilesIn(@NotNull String dir) throws VcsException { + private List listFilesIn(@NotNull HgVcsRoot root, @NotNull String dir) throws VcsException { + HgRepo repo = myVcs.createRepo(root); List result = new ArrayList(); 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; diff -r a40ae1cfb67c -r 4b6cca841ea5 mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java --- 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); } } diff -r a40ae1cfb67c -r 4b6cca841ea5 mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupportTest.java --- 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 files = policy.listFiles(""); + Collection 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 files = policy.listFiles("dir1"); + Collection 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; }