diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java index 76e9e9816f..a0b1f678b8 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java @@ -41,6 +41,8 @@ import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.account.GroupMembership; import com.google.gerrit.server.config.GitReceivePackGroups; import com.google.gerrit.server.config.GitUploadPackGroups; +import com.google.gerrit.server.git.GitRepositoryManager; +import com.google.gerrit.server.git.VisibleRefFilter; import com.google.gerrit.server.group.SystemGroupBackend; import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.permissions.FailedPermissionBackend; @@ -51,6 +53,7 @@ import com.google.gerrit.server.permissions.PermissionBackend.ForProject; import com.google.gerrit.server.permissions.PermissionBackend.ForRef; import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.gerrit.server.permissions.ProjectPermission; +import com.google.gerrit.server.permissions.RefVisibilityControl; import com.google.gerrit.server.query.change.ChangeData; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; @@ -134,6 +137,9 @@ public class ProjectControl { private final CommitsCollection commits; private final ChangeControl.Factory changeControlFactory; private final PermissionCollection.Factory permissionFilter; + private final RefVisibilityControl refVisibilityControl; + private final VisibleRefFilter.Factory visibleRefFilterFactory; + private final GitRepositoryManager gitRepositoryManager; private List<SectionMatcher> allSections; private Map<String, RefControl> refControls; @@ -147,6 +153,9 @@ public class ProjectControl { CommitsCollection commits, ChangeControl.Factory changeControlFactory, PermissionBackend permissionBackend, + RefVisibilityControl refVisibilityControl, + GitRepositoryManager gitRepositoryManager, + VisibleRefFilter.Factory visibleRefFilterFactory, @Assisted CurrentUser who, @Assisted ProjectState ps) { this.changeControlFactory = changeControlFactory; @@ -155,6 +164,9 @@ public class ProjectControl { this.permissionFilter = permissionFilter; this.commits = commits; this.perm = permissionBackend.user(who); + this.refVisibilityControl = refVisibilityControl; + this.gitRepositoryManager = gitRepositoryManager; + this.visibleRefFilterFactory = visibleRefFilterFactory; user = who; state = ps; } @@ -186,7 +198,14 @@ public class ProjectControl { RefControl ctl = refControls.get(refName); if (ctl == null) { PermissionCollection relevant = permissionFilter.filter(access(), refName, user); - ctl = new RefControl(this, refName, relevant); + ctl = + new RefControl( + visibleRefFilterFactory, + refVisibilityControl, + this, + gitRepositoryManager, + refName, + relevant); refControls.put(refName, ctl); } return ctl; @@ -428,11 +447,11 @@ public class ProjectControl { } } - ForProject asForProject() { + public ForProject asForProject() { return new ForProjectImpl(); } - private class ForProjectImpl extends ForProject { + public class ForProjectImpl extends ForProject { @Override public ForProject user(CurrentUser user) { return forUser(user).asForProject().database(db); |