PageRenderTime 44ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/atlassian-kinect-wallboard-extensions/src/main/java/com/atlassian/jirawallboard/resttransitionproxy/GroupsResource.java

https://bitbucket.org/shamid/kinect-wallboards/
Java | 64 lines | 46 code | 11 blank | 7 comment | 4 complexity | 71b3f56a75883916278f1f9aadc48e22 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-3.0, BSD-3-Clause
  1. package com.atlassian.jirawallboard.resttransitionproxy;
  2. import com.atlassian.core.user.GroupUtils;
  3. import com.atlassian.core.user.UserUtils;
  4. import com.atlassian.jira.security.JiraAuthenticationContext;
  5. import com.atlassian.jira.user.util.UserUtil;
  6. import com.opensymphony.user.Group;
  7. import com.opensymphony.user.User;
  8. import javax.ws.rs.Consumes;
  9. import javax.ws.rs.GET;
  10. import javax.ws.rs.Path;
  11. import javax.ws.rs.PathParam;
  12. import javax.ws.rs.Produces;
  13. import javax.ws.rs.core.MediaType;
  14. import javax.ws.rs.core.Response;
  15. import java.util.ArrayList;
  16. import java.util.Collections;
  17. import java.util.List;
  18. /**
  19. * TODO: Document this class / interface here
  20. *
  21. * @since v4.4
  22. */
  23. @Path ("groups")
  24. @Consumes ( { MediaType.APPLICATION_JSON })
  25. @Produces ( { MediaType.APPLICATION_JSON })
  26. public class GroupsResource
  27. {
  28. private final JiraAuthenticationContext authContext;
  29. public GroupsResource(UserUtil userUtil, JiraAuthenticationContext authContext)
  30. {
  31. this.authContext = authContext ;
  32. }
  33. @GET
  34. @Path ("/{groupName}")
  35. public Response getGroupMembers(@PathParam ("groupName") final String groupName)
  36. {
  37. if(authContext.getLoggedInUser() == null)
  38. {
  39. throw new RESTException(Response.Status.UNAUTHORIZED, ErrorCollection.of("Client must be authenticated to access this resource."));
  40. }
  41. Group group = GroupUtils.getGroup(groupName);
  42. if (group == null)
  43. {
  44. throw new RESTException(Response.Status.NOT_FOUND, ErrorCollection.of("No group named " + groupName + " exists"));
  45. }
  46. // TODO: we should not be making 1 + n REST calls to get the collection of users
  47. // we can collapse this into a single neat call giving us all the info we need
  48. List<String> usernames = new ArrayList<String>(group.getUsers());
  49. Collections.sort(usernames);
  50. GroupsBeanBuilder builder = new GroupsBeanBuilder().groupName(groupName).users(usernames);
  51. return Response.ok(builder.build()).cacheControl(TransitionAsUserResource.never()).build();
  52. }
  53. }