summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java
diff options
context:
space:
mode:
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.java25
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);