summaryrefslogtreecommitdiffstats
path: root/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/SubmitAction.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/SubmitAction.java')
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/SubmitAction.java60
1 files changed, 16 insertions, 44 deletions
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/SubmitAction.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/SubmitAction.java
index 721656c033..80100ada27 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/SubmitAction.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/SubmitAction.java
@@ -14,23 +14,16 @@
package com.google.gerrit.httpd.rpc.changedetail;
-import com.google.gerrit.common.data.ApprovalTypes;
import com.google.gerrit.common.data.ChangeDetail;
+import com.google.gerrit.common.data.ReviewResult;
import com.google.gerrit.common.errors.NoSuchEntityException;
import com.google.gerrit.httpd.rpc.Handler;
-import com.google.gerrit.reviewdb.Change;
-import com.google.gerrit.reviewdb.PatchSet;
-import com.google.gerrit.reviewdb.ReviewDb;
-import com.google.gerrit.server.ChangeUtil;
-import com.google.gerrit.server.IdentifiedUser;
-import com.google.gerrit.server.git.MergeOp;
-import com.google.gerrit.server.git.MergeQueue;
+import com.google.gerrit.reviewdb.client.PatchSet;
+import com.google.gerrit.server.changedetail.Submit;
import com.google.gerrit.server.patch.PatchSetInfoNotAvailableException;
-import com.google.gerrit.server.project.CanSubmitResult;
-import com.google.gerrit.server.project.ChangeControl;
+import com.google.gerrit.server.project.InvalidChangeOperationException;
import com.google.gerrit.server.project.NoSuchChangeException;
-import com.google.gerrit.server.workflow.FunctionState;
-import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
@@ -39,52 +32,31 @@ class SubmitAction extends Handler<ChangeDetail> {
SubmitAction create(PatchSet.Id patchSetId);
}
- private final ReviewDb db;
- private final MergeQueue merger;
- private final ApprovalTypes approvalTypes;
- private final FunctionState.Factory functionState;
- private final IdentifiedUser user;
+ private final Submit.Factory submitFactory;
private final ChangeDetailFactory.Factory changeDetailFactory;
- private final ChangeControl.Factory changeControlFactory;
- private final MergeOp.Factory opFactory;
private final PatchSet.Id patchSetId;
@Inject
- SubmitAction(final ReviewDb db, final MergeQueue mq, final ApprovalTypes at,
- final FunctionState.Factory fs, final IdentifiedUser user,
+ SubmitAction(final Submit.Factory submitFactory,
final ChangeDetailFactory.Factory changeDetailFactory,
- final ChangeControl.Factory changeControlFactory,
- final MergeOp.Factory opFactory,
@Assisted final PatchSet.Id patchSetId) {
- this.db = db;
- this.merger = mq;
- this.approvalTypes = at;
- this.functionState = fs;
- this.user = user;
- this.changeControlFactory = changeControlFactory;
+ this.submitFactory = submitFactory;
this.changeDetailFactory = changeDetailFactory;
- this.opFactory = opFactory;
this.patchSetId = patchSetId;
}
@Override
public ChangeDetail call() throws OrmException, NoSuchEntityException,
- IllegalStateException, PatchSetInfoNotAvailableException,
- NoSuchChangeException {
-
- final Change.Id changeId = patchSetId.getParentKey();
- final ChangeControl changeControl =
- changeControlFactory.validateFor(changeId);
-
- CanSubmitResult err =
- changeControl.canSubmit(patchSetId, db, approvalTypes, functionState);
- if (err == CanSubmitResult.OK) {
- ChangeUtil.submit(patchSetId, user, db, opFactory, merger);
- return changeDetailFactory.create(changeId).call();
- } else {
- throw new IllegalStateException(err.getMessage());
+ IllegalStateException, InvalidChangeOperationException,
+ PatchSetInfoNotAvailableException, NoSuchChangeException {
+ final ReviewResult result =
+ submitFactory.create(patchSetId).call();
+ if (result.getErrors().size() > 0) {
+ throw new IllegalStateException(
+ "Cannot submit " + result.getErrors().get(0).getMessageOrType());
}
+ return changeDetailFactory.create(result.getChangeId()).call();
}
}