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

View File

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

View File

@@ -87,7 +87,6 @@ public class ProjectState {
private final SitePaths sitePaths; private final SitePaths sitePaths;
private final AllProjectsName allProjectsName; private final AllProjectsName allProjectsName;
private final ProjectCache projectCache; private final ProjectCache projectCache;
private final ProjectControl.Factory projectControlFactory;
private final PrologEnvironment.Factory envFactory; private final PrologEnvironment.Factory envFactory;
private final GitRepositoryManager gitMgr; private final GitRepositoryManager gitMgr;
private final RulesCache rulesCache; private final RulesCache rulesCache;
@@ -121,7 +120,6 @@ public class ProjectState {
final ProjectCache projectCache, final ProjectCache projectCache,
final AllProjectsName allProjectsName, final AllProjectsName allProjectsName,
final AllUsersName allUsersName, final AllUsersName allUsersName,
final ProjectControl.Factory projectControlFactory,
final PrologEnvironment.Factory envFactory, final PrologEnvironment.Factory envFactory,
final GitRepositoryManager gitMgr, final GitRepositoryManager gitMgr,
final RulesCache rulesCache, final RulesCache rulesCache,
@@ -133,7 +131,6 @@ public class ProjectState {
this.isAllProjects = config.getProject().getNameKey().equals(allProjectsName); this.isAllProjects = config.getProject().getNameKey().equals(allProjectsName);
this.isAllUsers = config.getProject().getNameKey().equals(allUsersName); this.isAllUsers = config.getProject().getNameKey().equals(allUsersName);
this.allProjectsName = allProjectsName; this.allProjectsName = allProjectsName;
this.projectControlFactory = projectControlFactory;
this.envFactory = envFactory; this.envFactory = envFactory;
this.gitMgr = gitMgr; this.gitMgr = gitMgr;
this.rulesCache = rulesCache; this.rulesCache = rulesCache;
@@ -355,10 +352,6 @@ public class ProjectState {
return result; 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. * @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. * 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 SingleVersionListener singleVersionListener;
@Inject private InMemoryDatabase schemaFactory; @Inject private InMemoryDatabase schemaFactory;
@Inject private ThreadLocalRequestContext requestContext; @Inject private ThreadLocalRequestContext requestContext;
@Inject private ProjectControl.Factory projectControlFactory;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
@@ -856,7 +855,6 @@ public class RefControlTest {
projectCache, projectCache,
allProjectsName, allProjectsName,
allUsersName, allUsersName,
projectControlFactory,
envFactory, envFactory,
repoManager, repoManager,
rulesCache, rulesCache,