@Override @Nonnull public Set<ProjectRoleActor> getAllRoleActorsForUser(@Nullable final ApplicationUser user) { final List<Set<ProjectRoleActor>> actorsFromPluginPoints = SafePluginPointAccess.to(). descriptors(getImplementations(), (ProjectRoleActorModuleDescriptor descriptor, RoleActorFactory factory) -> factory.getAllRoleActorsForUser(user)); return ImmutableSet.copyOf(Iterables.concat(actorsFromPluginPoints)); }
public List<ProjectAndRole> getProjects(final ApplicationUser user) { final Collection<Project> projects = projectManager.getProjectObjects(); final ImmutableList.Builder<ProjectAndRole> resultsBuilder = ImmutableList.builder(); final Set<ProjectRoleActor> allRoleActorsForUser = roleActorFactory.getAllRoleActorsForUser(user); resultsBuilder.addAll(Iterables.transform(allRoleActorsForUser, new Function<ProjectRoleActor, ProjectAndRole>() { @Override public ProjectAndRole apply(final ProjectRoleActor simpleRoleActor) { return new ProjectAndRole(simpleRoleActor.getProjectId(), simpleRoleActor.getProjectRoleId()); } })); for (final Project project : CollectionUtil.filter(projects, new Predicate<Project>() { public boolean evaluate(final Project o) { return permissionManager.hasPermission(BROWSE_PROJECTS, o, user); } })) { resultsBuilder.add(new ProjectAndRole(project.getId())); } return resultsBuilder.build(); }