Merge "ProjectState: Remove controlFor(CurrentUser)"

This commit is contained in:
Edwin Kempin
2018-01-19 09:51:21 +00:00
committed by Gerrit Code Review
4 changed files with 17 additions and 15 deletions

View File

@@ -45,10 +45,13 @@ public class DefaultPermissionBackend extends PermissionBackend {
private static final CurrentUser.PropertyKey<Boolean> IS_ADMIN = CurrentUser.PropertyKey.create();
private final ProjectCache projectCache;
private final ProjectControl.Factory projectControlFactory;
@Inject
DefaultPermissionBackend(ProjectCache projectCache) {
DefaultPermissionBackend(
ProjectCache projectCache, ProjectControl.Factory projectControlFactory) {
this.projectCache = projectCache;
this.projectControlFactory = projectControlFactory;
}
private CapabilityCollection capabilities() {
@@ -73,7 +76,7 @@ public class DefaultPermissionBackend extends PermissionBackend {
try {
ProjectState state = projectCache.checkedGet(project);
if (state != null) {
return state.controlFor(user).asForProject().database(db);
return projectControlFactory.create(user, state).asForProject().database(db);
}
return FailedPermissionBackend.project("not found", new NoSuchProjectException(project));
} catch (IOException e) {

View File

@@ -79,7 +79,7 @@ class ProjectControl {
private final Set<AccountGroup.UUID> uploadGroups;
private final Set<AccountGroup.UUID> receiveGroups;
private final PermissionBackend.WithUser perm;
private final PermissionBackend permissionBackend;
private final CurrentUser user;
private final ProjectState state;
private final ChangeControl.Factory changeControlFactory;
@@ -102,13 +102,21 @@ class ProjectControl {
this.uploadGroups = uploadGroups;
this.receiveGroups = receiveGroups;
this.permissionFilter = permissionFilter;
this.perm = permissionBackend.user(who);
this.permissionBackend = permissionBackend;
user = who;
state = ps;
}
ProjectControl forUser(CurrentUser who) {
ProjectControl r = state.controlFor(who);
ProjectControl r =
new ProjectControl(
uploadGroups,
receiveGroups,
permissionFilter,
changeControlFactory,
permissionBackend,
who,
state);
// Not per-user, and reusing saves lookup time.
r.allSections = allSections;
return r;
@@ -173,7 +181,7 @@ class ProjectControl {
boolean isAdmin() {
try {
perm.check(GlobalPermission.ADMINISTRATE_SERVER);
permissionBackend.user(user).check(GlobalPermission.ADMINISTRATE_SERVER);
return true;
} catch (AuthException | PermissionBackendException e) {
return false;

View File

@@ -87,7 +87,6 @@ public class ProjectState {
private final SitePaths sitePaths;
private final AllProjectsName allProjectsName;
private final ProjectCache projectCache;
private final ProjectControl.Factory projectControlFactory;
private final PrologEnvironment.Factory envFactory;
private final GitRepositoryManager gitMgr;
private final RulesCache rulesCache;
@@ -121,7 +120,6 @@ public class ProjectState {
final ProjectCache projectCache,
final AllProjectsName allProjectsName,
final AllUsersName allUsersName,
final ProjectControl.Factory projectControlFactory,
final PrologEnvironment.Factory envFactory,
final GitRepositoryManager gitMgr,
final RulesCache rulesCache,
@@ -133,7 +131,6 @@ public class ProjectState {
this.isAllProjects = config.getProject().getNameKey().equals(allProjectsName);
this.isAllUsers = config.getProject().getNameKey().equals(allUsersName);
this.allProjectsName = allProjectsName;
this.projectControlFactory = projectControlFactory;
this.envFactory = envFactory;
this.gitMgr = gitMgr;
this.rulesCache = rulesCache;
@@ -355,10 +352,6 @@ public class ProjectState {
return result;
}
public ProjectControl controlFor(CurrentUser user) {
return projectControlFactory.create(user, this);
}
/**
* @return an iterable that walks through this project and then the parents of this project.
* Starts from this project and progresses up the hierarchy to All-Projects.

View File

@@ -208,7 +208,6 @@ public class RefControlTest {
@Inject private SingleVersionListener singleVersionListener;
@Inject private InMemoryDatabase schemaFactory;
@Inject private ThreadLocalRequestContext requestContext;
@Inject private ProjectControl.Factory projectControlFactory;
@Before
public void setUp() throws Exception {
@@ -856,7 +855,6 @@ public class RefControlTest {
projectCache,
allProjectsName,
allUsersName,
projectControlFactory,
envFactory,
repoManager,
rulesCache,