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;
   }