Merge "Rebase: Use BooleanCondition for #setVisible"
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Rebase.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Rebase.java
index 7131e20..e25cd01 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Rebase.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Rebase.java
@@ -14,6 +14,8 @@
package com.google.gerrit.server.change;
+import static com.google.gerrit.extensions.conditions.BooleanCondition.and;
+
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.google.gerrit.common.TimeUtil;
@@ -21,6 +23,7 @@
import com.google.gerrit.extensions.api.changes.RebaseInput;
import com.google.gerrit.extensions.client.ListChangesOption;
import com.google.gerrit.extensions.common.ChangeInfo;
+import com.google.gerrit.extensions.conditions.BooleanCondition;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestApiException;
@@ -189,27 +192,29 @@
PatchSet patchSet = resource.getPatchSet();
Change change = resource.getChange();
Branch.NameKey dest = change.getDest();
- boolean visible =
- change.getStatus().isOpen()
- && resource.isCurrent()
- && resource.permissions().database(dbProvider).testOrFalse(ChangePermission.REBASE);
- boolean enabled = true;
+ boolean visible = change.getStatus().isOpen() && resource.isCurrent();
+ boolean enabled = false;
if (visible) {
try (Repository repo = repoManager.openRepository(dest.getParentKey());
RevWalk rw = new RevWalk(repo)) {
visible = hasOneParent(rw, resource.getPatchSet());
- enabled = rebaseUtil.canRebase(patchSet, dest, repo, rw);
+ if (visible) {
+ enabled = rebaseUtil.canRebase(patchSet, dest, repo, rw);
+ }
} catch (IOException e) {
log.error("Failed to check if patch set can be rebased: " + resource.getPatchSet(), e);
visible = false;
}
}
+
+ BooleanCondition permissionCond =
+ resource.permissions().database(dbProvider).testCond(ChangePermission.REBASE);
return new UiAction.Description()
.setLabel("Rebase")
.setTitle("Rebase onto tip of branch or parent change")
- .setVisible(visible)
- .setEnabled(enabled);
+ .setVisible(and(visible, permissionCond))
+ .setEnabled(and(enabled, permissionCond));
}
public static class CurrentRevision