Reduce usage of ProjectControl

Reduce the usage of ProjectControl by replacing it with ProjectState and
CurrentUser where it was just used as a container for these.

Eventually, {Ref,Change,Project}Control should be package-private. This
commit is an incremental step towards that goal.

Change-Id: I204d7cae3816e81a7859672a6ac3b5d5273997fa
This commit is contained in:
Patrick Hiesel
2017-08-29 14:14:04 +02:00
parent 5a87d534ce
commit d5d39cb8bb
37 changed files with 135 additions and 148 deletions

View File

@@ -122,12 +122,11 @@ public class ListTags implements RestReadView<ProjectResource> {
PermissionBackend.ForProject perm = permissionBackend.user(user).project(resource.getNameKey());
try (Repository repo = getRepository(resource.getNameKey());
RevWalk rw = new RevWalk(repo)) {
ProjectControl pctl = resource.getControl();
Map<String, Ref> all =
visibleTags(pctl, repo, repo.getRefDatabase().getRefs(Constants.R_TAGS));
visibleTags(
resource.getProjectState(), repo, repo.getRefDatabase().getRefs(Constants.R_TAGS));
for (Ref ref : all.values()) {
tags.add(
createTagInfo(perm.ref(ref.getName()), ref, rw, pctl.getProject().getNameKey(), links));
tags.add(createTagInfo(perm.ref(ref.getName()), ref, rw, resource.getNameKey(), links));
}
}
@@ -157,16 +156,17 @@ public class ListTags implements RestReadView<ProjectResource> {
tagName = Constants.R_TAGS + tagName;
}
Ref ref = repo.getRefDatabase().exactRef(tagName);
ProjectControl pctl = resource.getControl();
if (ref != null && !visibleTags(pctl, repo, ImmutableMap.of(ref.getName(), ref)).isEmpty()) {
if (ref != null
&& !visibleTags(resource.getProjectState(), repo, ImmutableMap.of(ref.getName(), ref))
.isEmpty()) {
return createTagInfo(
permissionBackend
.user(pctl.getUser())
.user(resource.getUser())
.project(resource.getNameKey())
.ref(ref.getName()),
ref,
rw,
pctl.getProject().getNameKey(),
resource.getNameKey(),
links);
}
}
@@ -213,11 +213,7 @@ public class ListTags implements RestReadView<ProjectResource> {
}
}
private Map<String, Ref> visibleTags(
ProjectControl pctl, Repository repo, Map<String, Ref> tags) {
return refFilterFactory
.create(pctl.getProjectState(), repo)
.setShowMetadata(false)
.filter(tags, true);
private Map<String, Ref> visibleTags(ProjectState state, Repository repo, Map<String, Ref> tags) {
return refFilterFactory.create(state, repo).setShowMetadata(false).filter(tags, true);
}
}