From bc180879bbcf1e2f23a04195e45980aa03819db1 Mon Sep 17 00:00:00 2001 From: Patrick Hiesel Date: Thu, 24 Aug 2017 18:28:05 +0200 Subject: [PATCH] Move #isProjectStatePermitting{Read,Write} into ProjectState Change-Id: Ia8fec2a9b051acb7443daaa550b74bef0bc9c5b4 --- .../extensions/client/ProjectState.java | 22 ++++++++++++++++--- .../server/git/receive/ReceiveCommits.java | 5 ++--- .../server/project/CreateRefControl.java | 4 +--- .../gerrit/server/project/RefControl.java | 6 ++--- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/client/ProjectState.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/client/ProjectState.java index 3114cb959e..e5bc194538 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/client/ProjectState.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/client/ProjectState.java @@ -15,7 +15,23 @@ package com.google.gerrit.extensions.client; public enum ProjectState { - ACTIVE, - READ_ONLY, - HIDDEN + ACTIVE(true, true), + READ_ONLY(true, false), + HIDDEN(false, false); + + private final boolean permitsRead; + private final boolean permitsWrite; + + ProjectState(boolean permitsRead, boolean permitsWrite) { + this.permitsRead = permitsRead; + this.permitsWrite = permitsWrite; + } + + public boolean permitsRead() { + return permitsRead; + } + + public boolean permitsWrite() { + return permitsWrite; + } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/receive/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/receive/ReceiveCommits.java index 330f86d74c..fcd6e0dbeb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/receive/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/receive/ReceiveCommits.java @@ -1453,9 +1453,8 @@ class ReceiveCommits { magicBranch.dest = new Branch.NameKey(project.getNameKey(), ref); magicBranch.ctl = projectControl.controlForRef(ref); magicBranch.perm = permissions.ref(ref); - if (projectControl.getProject().getState() - != com.google.gerrit.extensions.client.ProjectState.ACTIVE) { - reject(cmd, "project is read only"); + if (!projectControl.getProject().getState().permitsWrite()) { + reject(cmd, "project state does not permit write"); return; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateRefControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateRefControl.java index 7607373d39..aa48a73b40 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateRefControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateRefControl.java @@ -67,9 +67,7 @@ public class CreateRefControl { if (ps == null) { throw new NoSuchProjectException(branch.getParentKey()); } - if (!ps.getProject() - .getState() - .equals(com.google.gerrit.extensions.client.ProjectState.ACTIVE)) { + if (!ps.getProject().getState().permitsWrite()) { return "project state does not permit write"; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java index 3786fc988e..a7497592f3 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java @@ -19,7 +19,6 @@ import static com.google.common.base.Preconditions.checkArgument; import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.PermissionRange; import com.google.gerrit.common.data.PermissionRule; -import com.google.gerrit.extensions.client.ProjectState; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Project; @@ -197,12 +196,11 @@ public class RefControl { } private boolean isProjectStatePermittingWrite() { - return getProjectControl().getProject().getState().equals(ProjectState.ACTIVE); + return getProjectControl().getProject().getState().permitsWrite(); } private boolean isProjectStatePermittingRead() { - return getProjectControl().getProject().getState().equals(ProjectState.READ_ONLY) - || isProjectStatePermittingWrite(); + return getProjectControl().getProject().getState().permitsRead(); } private boolean canPushWithForce() {