@Override public void updateProjectRoleActors(ProjectRoleActors projectRoleActors) { if (projectRoleActors == null) { throw new IllegalArgumentException("ProjectRoleActors can not be null"); } if (projectRoleActors.getProjectId() == null) { throw new IllegalArgumentException("ProjectRoleActors project can not be null"); } if (projectRoleActors.getProjectRoleId() == null) { throw new IllegalArgumentException("ProjectRoleActors projectRole can not be null"); } if (projectRoleActors.getRoleActors() == null) { throw new IllegalArgumentException("ProjectRoleActors roleActors set can not be null"); } projectRoleAndActorStore.updateProjectRoleActors(projectRoleActors); }
/** * Get all the users that satisfy this particular role. * <p/> * Protected access so it can be directly called from unittests * * @param project the project you to find want users for * @param roleId the specific role you want to find users for * * @return A collection of {@link User} objects */ @VisibleForTesting protected Set<ApplicationUser> getUsersFromRole(Project project, String roleId) { try { ProjectRoleActors projectRoleActors = getProjectRoleActors(roleId, project); return projectRoleActors.getUsers(); } catch (IllegalArgumentException e) { log.error("Could not resolve project role actors for the provided roleId and project", e); // Logging the error, but will continue to pass up an empty set. return Collections.emptySet(); } }
@Override public boolean hasPermission(Project project, String argument, ApplicationUser user, boolean issueCreation) { if (project == null) throw new IllegalArgumentException("Project passed must not be null"); ProjectRoleActors projectRoleActors = getProjectRoleActors(argument, project); return projectRoleActors.contains(user); }
static ProjectRoleActorsKey toKey(ProjectRoleActors projectRoleActors) { return toKey(projectRoleActors.getProjectRoleId(), projectRoleActors.getProjectId()); }
public int getMemberCountForProject(Project project) { ProjectRoleActors projectRoleActors = projectRoleService.getProjectRoleActors(getRole(), project, this); if (projectRoleActors.getRoleActors() != null) { return projectRoleActors.getRoleActors().size(); } return 0; }
final Project projectRoleProject = projectManager.getProjectObj(originalRoleActors.getProjectId()); final boolean hasPermission = hasProjectRolePermission(currentUser, projectRoleProject); if (!internalError && hasPermission && actors.size() > 0) if (add) newRoleActors = (ProjectRoleActors) originalRoleActors.addRoleActors(actors); newRoleActors = (ProjectRoleActors) originalRoleActors.removeRoleActors(actors);
public Long getProjectId() { return (delegate instanceof ProjectRoleActors) ? ((ProjectRoleActors) delegate).getProjectId() : null; }
/** * Returns the RoleActors in a {@link ProjectRole} that have the given type * e.g. {@link com.atlassian.jira.security.roles.actor.UserRoleActorFactory.UserRoleActor#} * or {@link com.atlassian.jira.security.roles.actor.GroupRoleActorFactory.GroupRoleActor#}. * @param projectRole * @param type designation to specify which kind of RoleActor to get. * @param length * @return the Collection of {@link com.atlassian.jira.security.roles.RoleActor}s. */ public Collection getRoleActorTypes(ProjectRole projectRole, String type, int length) { ProjectRoleActors projectRoleActors = projectRoleService.getProjectRoleActors(projectRole, getProject(), this); // This should only ever be null if the user does not have permission to get to this point, the UI should have // stopped the user from getting here if (projectRoleActors == null) { return Collections.EMPTY_LIST; } Set<RoleActor> roleActorsByType = projectRoleActors.getRoleActorsByType(type); if (length == -1 || roleActorsByType.size() <= length) { return projectRoleActors.getRoleActorsByType(type); } else { // Sublist the return set via an ArrayList (Sorry!) return new ArrayList<RoleActor>(projectRoleActors.getRoleActorsByType(type)).subList(0,length); } }
@Override public ProjectRoleBean projectRole(@Nonnull final Project project, @Nonnull final ProjectRole projectRole, @Nonnull final ProjectRoleActors projectRoleActors, @Nullable final ApplicationUser loggedInUser) { // Sort the actors by name, as opposed to parameter final SortedSet<RoleActor> sortedActors = new TreeSet<RoleActor>(RoleActorComparator.COMPARATOR); sortedActors.addAll(projectRoleActors.getRoleActors()); final Collection<RoleActorBean> actors = Transformed.collection(sortedActors, new Function<RoleActor, RoleActorBean>() { public RoleActorBean get(RoleActor actor) { final RoleActorBean bean = RoleActorBean.convert(actor); bean.setAvatarUrl(avatarService.getAvatarURL(loggedInUser, bean.getName(), Avatar.Size.SMALL)); return bean; } }); final ProjectRoleBean projectRoleBean = projectRole(project, projectRole); projectRoleBean.actors = actors; return projectRoleBean; }
public void updateProjectRoleActors(final ProjectRoleActors projectRoleActors) { updateRoleActors(projectRoleActors, projectRoleActors.getProjectId()); }
public Collection getCurrentGroups() { final Collection<Group> groups = new ArrayList<Group>(); Collection<RoleActor> roleActorsByType = null; if (getProject() != null) { ProjectRoleActors projectRoleActors = projectRoleService.getProjectRoleActors(getProjectRole(), getProject(), this); if (projectRoleActors != null) { roleActorsByType = projectRoleActors.getRoleActorsByType(ProjectRoleActor.GROUP_ROLE_ACTOR_TYPE); } } else { DefaultRoleActors defaultRoleActors = projectRoleService.getDefaultRoleActors(getProjectRole(), this); if (defaultRoleActors != null) { roleActorsByType = defaultRoleActors.getRoleActorsByType(ProjectRoleActor.GROUP_ROLE_ACTOR_TYPE); } } if (roleActorsByType != null) { for (final RoleActor aRoleActorsByType : roleActorsByType) { GroupRoleActorFactory.GroupRoleActor groupRoleActor = (GroupRoleActorFactory.GroupRoleActor) aRoleActorsByType; groups.add(groupRoleActor.getGroup()); } } return groups; }
public Collection getRoleActors(ProjectRole projectRole) { // This should only ever be null if the user does not have permission to get to this point, the UI should have // stopped the user from getting here ProjectRoleActors projectRoleActors = projectRoleService.getProjectRoleActors(projectRole, getProject(), this); if (projectRoleActors == null) { return Collections.EMPTY_LIST; } Set<RoleActor> roleActors = projectRoleActors.getRoleActors(); SortedSet<RoleActor> sortedRoleActors = new TreeSet<RoleActor>(RoleActorComparator.COMPARATOR); if (roleActors != null) { sortedRoleActors.addAll(roleActors); } return sortedRoleActors; }
private Collection<ApplicationUser> getUsersByRoles(final Set<Long> roleIds, final Set<Long> projectIds, final Collection<ApplicationUser> existingUsers) { if (CollectionUtils.isEmpty(projectIds) || CollectionUtils.isEmpty(roleIds)) { return existingUsers; } // only search by roles if projectIds is not empty // Note that projectIds list should have been at least populated with the list of browsable projects by the current user // create the set to inform following codes that it's not search all Collection<ApplicationUser> allUsers = existingUsers == null ? Sets.<ApplicationUser>newHashSet() : existingUsers; for (Project project : getProjects(projectIds)) { for (long roleId : roleIds) { // ok to repeat calls to projectRoleManager, as it has cache ProjectRole projectRole = projectRoleManager.getProjectRole(roleId); if (projectRole != null) { allUsers.addAll(projectRoleManager.getProjectRoleActors(projectRole, project).getUsers()); } } } return allUsers; }
public void updateProjectRoleActors(final ProjectRoleActors projectRoleActors) { if (projectRoleActors.getProjectId() == null) { // Really the default role actors... updateDefaultRoleActors(projectRoleActors); return; } delegate.updateProjectRoleActors(projectRoleActors); this.projectRoleActors.remove(toKey(projectRoleActors)); }
@Override public Collection<ProjectRole> getProjectRoles(final ApplicationUser user, final Project project) { Collection<ProjectRole> associatedProjectRoles = new TreeSet<ProjectRole>(ProjectRoleComparator.COMPARATOR); Collection<ProjectRole> allProjectRoles = getProjectRoles(); for (final ProjectRole projectRole : allProjectRoles) { final ProjectRoleActors projectRoleActors = getProjectRoleActors(projectRole, project); if (projectRoleActors.contains(user)) { associatedProjectRoles.add(projectRole); } } return associatedProjectRoles; }
public Collection getRoleActors(ProjectRole projectRole) { // This should only ever be null if the user does not have permission to get to this point, the UI should have // stopped the user from getting here ProjectRoleActors projectRoleActors = projectRoleService.getProjectRoleActors(projectRole, getProject(), this); if (projectRoleActors == null) { return Collections.emptyList(); } Set<RoleActor> roleActors = projectRoleActors.getRoleActors(); SortedSet<RoleActor> sortedRoleActors = new TreeSet<RoleActor>(RoleActorComparator.COMPARATOR); if (roleActors != null) { sortedRoleActors.addAll(roleActors); } return sortedRoleActors; }
sharedUsersBuilder.addAll(activeUsers(projectRoleManager.getProjectRoleActors(projectRole, project).getUsers()));
@Override public boolean isUserInProjectRole(ApplicationUser user, ProjectRole projectRole, Project project) { try { UtilTimerStack.push("DefaultProjectRoleManager.isUserInProjectRole"); if (project == null || project.getId() == null) { throw new IllegalArgumentException("The project id can not be null"); } if (projectRole == null) { throw new IllegalArgumentException("ProjectRole can not be null"); } return getProjectRoleActors(projectRole, project).contains(user); } finally { UtilTimerStack.pop("DefaultProjectRoleManager.isUserInProjectRole"); } }
@Nonnull private ListMultimap<String, String> getCategorisedActors(final ProjectRoleActors originalRoleActors) { final ListMultimap<String, String> result = LinkedListMultimap.create(2); for(RoleActor actor : originalRoleActors.getRoleActors()) { result.put(actor.getType(), actor.getParameter()); } return result; }
recipientUsers.addAll(roleActors.getUsers());