public String getShareTypeEditor(final JiraAuthenticationContext authenticationContext) { Assertions.notNull("authenticationContext", authenticationContext); final Map<String, Object> params = new HashMap<String, Object>(); final Collection<Project> projects = getProjects(authenticationContext.getUser()); final Set<ProjectRole> roles = new HashSet<ProjectRole>(); final Map<Long, String> rolesMap = new HashMap<Long, String>(); for (final Project project : projects) { final JSONArray array = new JSONArray(); Collection<ProjectRole> projectRoles = projectRoleManager.getProjectRoles(authenticationContext.getUser(), project); roles.addAll(projectRoles); projectRoles = sort(projectRoles, ProjectRoleComparator.COMPARATOR); for (final Object element : projectRoles) { final ProjectRole role = (ProjectRole) element; array.put(role.getId()); } rolesMap.put(project.getId(), array.toString()); } params.put(ProjectShareTypeRenderer.PROJECTS_KEY, sort(projects, ProjectNameComparator.COMPARATOR)); params.put(ProjectShareTypeRenderer.ROLES_KEY, sort(roles, ProjectRoleComparator.COMPARATOR)); params.put(ProjectShareTypeRenderer.ROLES_MAP, rolesMap); return renderVelocity("share-type-project-selector.vm", params, authenticationContext); }