Merge "Publish change edit: Delete edit ref in BatchUpdate"
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
index 5d281d1..0db718a 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
@@ -605,18 +605,18 @@
@UiHandler("publishEdit")
void onPublishEdit(@SuppressWarnings("unused") ClickEvent e) {
- EditActions.publishEdit(changeId);
+ EditActions.publishEdit(changeId, publishEdit, rebaseEdit, deleteEdit);
}
@UiHandler("rebaseEdit")
void onRebaseEdit(@SuppressWarnings("unused") ClickEvent e) {
- EditActions.rebaseEdit(changeId);
+ EditActions.rebaseEdit(changeId, publishEdit, rebaseEdit, deleteEdit);
}
@UiHandler("deleteEdit")
void onDeleteEdit(@SuppressWarnings("unused") ClickEvent e) {
if (Window.confirm(Resources.C.deleteChangeEdit())) {
- EditActions.deleteEdit(changeId);
+ EditActions.deleteEdit(changeId, publishEdit, rebaseEdit, deleteEdit);
}
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/EditActions.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/EditActions.java
index d11cf7e..97abddb 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/EditActions.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/EditActions.java
@@ -20,23 +20,25 @@
import com.google.gerrit.common.PageLinks;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.user.client.ui.Button;
public class EditActions {
- static void deleteEdit(Change.Id id) {
- ChangeApi.deleteEdit(id.get(), cs(id));
+ static void deleteEdit(Change.Id id, Button... editButtons) {
+ ChangeApi.deleteEdit(id.get(), cs(id, editButtons));
}
- static void publishEdit(Change.Id id) {
- ChangeApi.publishEdit(id.get(), cs(id));
+ static void publishEdit(Change.Id id, Button... editButtons) {
+ ChangeApi.publishEdit(id.get(), cs(id, editButtons));
}
- static void rebaseEdit(Change.Id id) {
- ChangeApi.rebaseEdit(id.get(), cs(id));
+ static void rebaseEdit(Change.Id id, Button... editButtons) {
+ ChangeApi.rebaseEdit(id.get(), cs(id, editButtons));
}
public static GerritCallback<JavaScriptObject> cs(
- final Change.Id id) {
+ final Change.Id id, final Button... editButtons) {
+ setEnabled(false, editButtons);
return new GerritCallback<JavaScriptObject>() {
@Override
public void onSuccess(JavaScriptObject result) {
@@ -45,6 +47,7 @@
@Override
public void onFailure(Throwable err) {
+ setEnabled(true, editButtons);
if (SubmitFailureDialog.isConflict(err)) {
new SubmitFailureDialog(err.getMessage()).center();
Gerrit.display(PageLinks.toChange(id));
@@ -54,4 +57,12 @@
}
};
}
+
+ private static void setEnabled(boolean enabled, Button... editButtons) {
+ if (editButtons != null) {
+ for (Button b : editButtons) {
+ b.setEnabled(enabled);
+ }
+ }
+ }
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java
index 508d380..e805ad0 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java
@@ -47,7 +47,6 @@
import com.google.gerrit.server.patch.PatchSetInfoFactory;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.ssh.NoSshInfo;
-import com.google.gerrit.server.ssh.SshInfo;
import com.google.gwtorm.server.OrmException;
import com.google.inject.assistedinject.Assisted;
import com.google.inject.assistedinject.AssistedInject;
@@ -91,7 +90,6 @@
private final ChangeControl origCtl;
// Fields exposed as setters.
- private SshInfo sshInfo;
private String message;
private CommitValidators.Policy validatePolicy =
CommitValidators.Policy.GERRIT;
@@ -144,11 +142,6 @@
return this;
}
- public PatchSetInserter setSshInfo(SshInfo sshInfo) {
- this.sshInfo = sshInfo;
- return this;
- }
-
public PatchSetInserter setValidatePolicy(CommitValidators.Policy validate) {
this.validatePolicy = checkNotNull(validate);
return this;
@@ -198,7 +191,6 @@
@Override
public void updateRepo(RepoContext ctx)
throws AuthException, ResourceConflictException, IOException, OrmException {
- init();
validate(ctx);
ctx.addRefUpdate(new ReceiveCommand(ObjectId.zeroId(),
commit, getPatchSetId().toRefName(), ReceiveCommand.Type.CREATE));
@@ -282,17 +274,11 @@
}
}
- private void init() {
- if (sshInfo == null) {
- sshInfo = new NoSshInfo();
- }
- }
-
private void validate(RepoContext ctx)
throws AuthException, ResourceConflictException, IOException,
OrmException {
CommitValidators cv = commitValidatorsFactory.create(
- origCtl.getRefControl(), sshInfo, ctx.getRepository());
+ origCtl.getRefControl(), new NoSshInfo(), ctx.getRepository());
if (!origCtl.canAddPatchSet(ctx.getDb())) {
throw new AuthException("cannot add patch set");