diff options
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.java | 29 |
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() { |