summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java
index f585e141e9..a8a297e9ce 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java
@@ -25,6 +25,8 @@ import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.reviewdb.server.ReviewDbUtil;
+import com.google.gerrit.server.ChangeUtil;
+import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.git.BranchOrderSection;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.MergeUtil;
@@ -65,6 +67,7 @@ public class Mergeable implements RestReadView<RevisionResource> {
private final Provider<ReviewDb> db;
private final ChangeIndexer indexer;
private final MergeabilityCache cache;
+ private final SubmitRuleEvaluator.Factory submitRuleEvaluatorFactory;
@Inject
Mergeable(
@@ -74,7 +77,8 @@ public class Mergeable implements RestReadView<RevisionResource> {
ChangeData.Factory changeDataFactory,
Provider<ReviewDb> db,
ChangeIndexer indexer,
- MergeabilityCache cache) {
+ MergeabilityCache cache,
+ SubmitRuleEvaluator.Factory submitRuleEvaluatorFactory) {
this.gitManager = gitManager;
this.projectCache = projectCache;
this.mergeUtilFactory = mergeUtilFactory;
@@ -82,6 +86,7 @@ public class Mergeable implements RestReadView<RevisionResource> {
this.db = db;
this.indexer = indexer;
this.cache = cache;
+ this.submitRuleEvaluatorFactory = submitRuleEvaluatorFactory;
}
public void setOtherBranches(boolean otherBranches) {
@@ -97,14 +102,14 @@ public class Mergeable implements RestReadView<RevisionResource> {
MergeableInfo result = new MergeableInfo();
if (!change.getStatus().isOpen()) {
- throw new ResourceConflictException("change is " + Submit.status(change));
+ throw new ResourceConflictException("change is " + ChangeUtil.status(change));
} else if (!ps.getId().equals(change.currentPatchSetId())) {
// Only the current revision is mergeable. Others always fail.
return result;
}
- ChangeData cd = changeDataFactory.create(db.get(), resource.getControl());
- result.submitType = getSubmitType(cd, ps);
+ ChangeData cd = changeDataFactory.create(db.get(), resource.getNotes());
+ result.submitType = getSubmitType(resource.getUser(), cd, ps);
try (Repository git = gitManager.openRepository(change.getProject())) {
ObjectId commit = toId(ps);
@@ -136,8 +141,10 @@ public class Mergeable implements RestReadView<RevisionResource> {
return result;
}
- private SubmitType getSubmitType(ChangeData cd, PatchSet patchSet) throws OrmException {
- SubmitTypeRecord rec = new SubmitRuleEvaluator(cd).setPatchSet(patchSet).getSubmitType();
+ private SubmitType getSubmitType(CurrentUser user, ChangeData cd, PatchSet patchSet)
+ throws OrmException {
+ SubmitTypeRecord rec =
+ submitRuleEvaluatorFactory.create(user, cd).setPatchSet(patchSet).getSubmitType();
if (rec.status != SubmitTypeRecord.Status.OK) {
throw new OrmException("Submit type rule failed: " + rec);
}