summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
index 0ee2c9ee0e..c9435d3151 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
@@ -16,6 +16,7 @@ package com.google.gerrit.server.project;
import com.google.gerrit.common.data.ApprovalType;
import com.google.gerrit.common.data.ApprovalTypes;
+import com.google.gerrit.reviewdb.ApprovalCategory;
import com.google.gerrit.reviewdb.Change;
import com.google.gerrit.reviewdb.PatchSet;
import com.google.gerrit.reviewdb.PatchSetApproval;
@@ -24,7 +25,6 @@ import com.google.gerrit.reviewdb.ReviewDb;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
-import com.google.gerrit.server.patch.PatchSetInfoNotAvailableException;
import com.google.gerrit.server.workflow.CategoryFunction;
import com.google.gerrit.server.workflow.FunctionState;
import com.google.gwtorm.client.OrmException;
@@ -37,6 +37,25 @@ import java.util.List;
/** Access control management for a user accessing a single change. */
public class ChangeControl {
+ public static class GenericFactory {
+ private final ProjectControl.GenericFactory projectControl;
+
+ @Inject
+ GenericFactory(ProjectControl.GenericFactory p) {
+ projectControl = p;
+ }
+
+ public ChangeControl controlFor(Change change, CurrentUser user)
+ throws NoSuchChangeException {
+ final Project.NameKey projectKey = change.getProject();
+ try {
+ return projectControl.controlFor(projectKey, user).controlFor(change);
+ } catch (NoSuchProjectException e) {
+ throw new NoSuchChangeException(change.getId(), e);
+ }
+ }
+ }
+
public static class Factory {
private final ProjectControl.Factory projectControl;
private final Provider<ReviewDb> db;
@@ -140,6 +159,10 @@ public class ChangeControl {
;
}
+ public short normalize(ApprovalCategory.Id category, short score) {
+ return getRefControl().normalize(category, score);
+ }
+
/** Can this user add a patch set to this change? */
public boolean canAddPatchSet() {
return getRefControl().canUpload();