changeset 692:dd11376b5f4a

hg => new API
author eugene.petrenko@gmail.com
date Thu, 19 Dec 2013 19:16:28 +0100
parents d4ef6a366768
children 2c9f7f6d8a12
files mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilder.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilderTest.java
diffstat 2 files changed, 44 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilder.java	Thu Dec 19 19:10:00 2013 +0100
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilder.java	Thu Dec 19 19:16:28 2013 +0100
@@ -1,12 +1,14 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.ChangeSet;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot;
 import jetbrains.buildServer.vcs.*;
 import org.jetbrains.annotations.NotNull;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
 
-public class MercurialModificationInfoBuilder implements ModificationInfoBuilder, MercurialServerExtension {
+public class MercurialModificationInfoBuilder implements ChangesInfoBuilder, MercurialServerExtension {
 
   private final MercurialVcsSupport myVcs;
   private final HgVcsRootFactory myHgVcsRootFactory;
@@ -24,27 +26,23 @@
     myVcs.addExtension(this);
   }
 
-  @NotNull
-  public List<ModificationData> fetchModificationInfo(@NotNull VcsRoot root,
-                                                      @NotNull RepositoryStateData state,
-                                                      @NotNull CheckoutRules checkoutRules) throws VcsException {
-    HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root);
+  public void fetchChangesInfo(@NotNull final VcsRoot root,
+                               @NotNull final CheckoutRules checkoutRules,
+                               @NotNull final Collection<String> revisions,
+                               @NotNull final ChangesConsumer consumer) throws VcsException {
+    final HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root);
     myVcs.syncRepository(hgRoot);
 
-    final List<ModificationData> changes = new ArrayList<ModificationData>();
-    for (Map.Entry<String, String> e : state.getBranchRevisions().entrySet()) {
-      final String commitId = e.getValue();
-      final RepositoryStateData oneStateData = RepositoryStateData.createVersionState(e.getKey(), commitId);
-
-      final List<String> parents = myVcs.createRepo(hgRoot).parents().ofRevision(commitId).call();
-      if (parents.isEmpty()) continue;
+    final OperationContext ctx = new OperationContext(myVcs,
+            myRepoFactory,
+            myHgPathProvider,
+            Collections.<String>emptyList(),
+            RepositoryStateData.createVersionState("", Collections.<String, String>emptyMap()));
 
-      final OperationContext ctx = new OperationContext(myVcs, myRepoFactory, myHgPathProvider, parents, oneStateData);
-      changes.addAll(myVcs.getCollectChangesPolicy().collectChanges(ctx, root, parents, commitId, checkoutRules));
+    for (String commitId : revisions) {
+      for (ChangeSet set : myVcs.createRepo(hgRoot).log().withRevsets(commitId).call()) {
+        consumer.consumeChange(ModificationDataFactory.createModificationData(ctx, set, root, checkoutRules));
+      }
     }
-
-    return changes;
   }
-
-
 }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilderTest.java	Thu Dec 19 19:10:00 2013 +0100
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilderTest.java	Thu Dec 19 19:16:28 2013 +0100
@@ -1,21 +1,22 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
+import jetbrains.buildServer.vcs.ChangesConsumer;
 import jetbrains.buildServer.vcs.CheckoutRules;
-import jetbrains.buildServer.vcs.ModificationData;
-import jetbrains.buildServer.vcs.RepositoryStateData;
 import jetbrains.buildServer.vcs.VcsRoot;
+import jetbrains.vcs.api.ChangeData;
+import org.jetbrains.annotations.NotNull;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.ServerPluginConfigBuilder.serverPluginConfig;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot;
-import static jetbrains.buildServer.util.Util.map;
 import static org.testng.AssertJUnit.assertEquals;
 
 @RequiredHgVersion(min = "1.7.0")
@@ -43,11 +44,14 @@
 
   public void should_return_commits_for_every_revision_in_state(HgVersion _) throws Exception {
     VcsRoot root = vcsRoot().withUrl(myRemoteRepository.getAbsolutePath()).build();
-    RepositoryStateData state = RepositoryStateData.createVersionState("default",
-            map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298"));
-    List<ModificationData> changes = myModInfoBuilder.fetchModificationInfo(root, state, CheckoutRules.DEFAULT);
+    final List<ChangeData> changes = new ArrayList<ChangeData>();
+    myModInfoBuilder.fetchChangesInfo(root, CheckoutRules.DEFAULT, Arrays.asList("505c5b9d01e6", "9ec402c74298"), new ChangesConsumer() {
+      public void consumeChange(@NotNull ChangeData change) {
+        changes.add(change);
+      }
+    });
 
-    for (ModificationData change : changes) {
+    for (ChangeData change : changes) {
       if (change.getVersion().equals("505c5b9d01e6")) {
         Assert.assertEquals(change.getParentRevisions(), Arrays.asList("78e67807f916"));
       } else if (change.getVersion().equals("9ec402c74298")) {
@@ -63,11 +67,14 @@
 
   public void should_return_commits_for_every_revision_in_state_parent_child(HgVersion _) throws Exception {
     VcsRoot root = vcsRoot().withUrl(myRemoteRepository.getAbsolutePath()).build();
-    RepositoryStateData state = RepositoryStateData.createVersionState("default",
-            map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298", "x", "96b78d73081d"));
-    List<ModificationData> changes = myModInfoBuilder.fetchModificationInfo(root, state, CheckoutRules.DEFAULT);
+    final List<ChangeData> changes = new ArrayList<ChangeData>();
+    myModInfoBuilder.fetchChangesInfo(root, CheckoutRules.DEFAULT, Arrays.asList("505c5b9d01e6", "9ec402c74298", "96b78d73081d"), new ChangesConsumer() {
+      public void consumeChange(@NotNull ChangeData change) {
+        changes.add(change);
+      }
+    });
 
-    for (ModificationData change : changes) {
+    for (ChangeData change : changes) {
       if (change.getVersion().equals("505c5b9d01e6")) {
         Assert.assertEquals(change.getParentRevisions(), Arrays.asList("78e67807f916"));
       } else if (change.getVersion().equals("9ec402c74298")) {
@@ -84,11 +91,15 @@
 
   public void should_return_commits_for_every_revision_in_state_parent_gap_child(HgVersion _) throws Exception {
     VcsRoot root = vcsRoot().withUrl(myRemoteRepository.getAbsolutePath()).build();
-    RepositoryStateData state = RepositoryStateData.createVersionState("default",
-            map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298", "x", "dec47d2d49bf"));
-    List<ModificationData> changes = myModInfoBuilder.fetchModificationInfo(root, state, CheckoutRules.DEFAULT);
+    final List<ChangeData> changes = new ArrayList<ChangeData>();
+    myModInfoBuilder.fetchChangesInfo(root, CheckoutRules.DEFAULT, Arrays.asList("505c5b9d01e6", "9ec402c74298", "dec47d2d49bf"), new ChangesConsumer() {
+      public void consumeChange(@NotNull ChangeData change) {
+        changes.add(change);
+      }
+    });
 
-    for (ModificationData change : changes) {
+
+    for (ChangeData change : changes) {
       if (change.getVersion().equals("505c5b9d01e6")) {
         Assert.assertEquals(change.getParentRevisions(), Arrays.asList("78e67807f916"));
       } else if (change.getVersion().equals("9ec402c74298")) {