summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java29
1 files changed, 18 insertions, 11 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java
index 4d35f9ee9f..b9b2d1df58 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java
@@ -14,6 +14,8 @@
package com.google.gerrit.server.change;
+import com.google.common.hash.Hasher;
+import com.google.common.hash.Hashing;
import com.google.gerrit.extensions.restapi.RestResource;
import com.google.gerrit.extensions.restapi.RestResource.HasETag;
import com.google.gerrit.extensions.restapi.RestView;
@@ -24,7 +26,7 @@ import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.edit.ChangeEdit;
import com.google.gerrit.server.notedb.ChangeNotes;
-import com.google.gerrit.server.project.ChangeControl;
+import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.inject.TypeLiteral;
import java.util.Optional;
@@ -51,16 +53,16 @@ public class RevisionResource implements RestResource, HasETag {
return cacheable;
}
- public ChangeResource getChangeResource() {
- return change;
+ public PermissionBackend.ForChange permissions() {
+ return change.permissions();
}
- public ChangeControl getControl() {
- return getChangeResource().getControl();
+ public ChangeResource getChangeResource() {
+ return change;
}
public Change getChange() {
- return getControl().getChange();
+ return getChangeResource().getChange();
}
public Project.NameKey getProject() {
@@ -77,10 +79,15 @@ public class RevisionResource implements RestResource, HasETag {
@Override
public String getETag() {
- // Conservative estimate: refresh the revision if its parent change has
- // changed, so we don't have to check whether a given modification affected
- // this revision specifically.
- return change.getETag();
+ Hasher h = Hashing.murmur3_128().newHasher();
+ prepareETag(h, getUser());
+ return h.hash().toString();
+ }
+
+ void prepareETag(Hasher h, CurrentUser user) {
+ // Conservative estimate: refresh the revision if its parent change has changed, so we don't
+ // have to check whether a given modification affected this revision specifically.
+ change.prepareETag(h, user);
}
Account.Id getAccountId() {
@@ -88,7 +95,7 @@ public class RevisionResource implements RestResource, HasETag {
}
CurrentUser getUser() {
- return getControl().getUser();
+ return getChangeResource().getUser();
}
RevisionResource doNotCache() {