1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.atlassian.jira.rest.client.internal.jersey;
17
18 import com.atlassian.jira.rest.client.ProgressMonitor;
19 import com.atlassian.jira.rest.client.ProjectRolesRestClient;
20 import com.atlassian.jira.rest.client.domain.BasicProjectRole;
21 import com.atlassian.jira.rest.client.domain.ProjectRole;
22 import com.atlassian.jira.rest.client.internal.json.BasicProjectRoleJsonParser;
23 import com.atlassian.jira.rest.client.internal.json.ProjectRoleJsonParser;
24 import com.google.common.base.Function;
25 import com.google.common.collect.Iterables;
26 import com.sun.jersey.client.apache.ApacheHttpClient;
27
28 import javax.ws.rs.core.UriBuilder;
29 import java.net.URI;
30 import java.util.Collection;
31
32
33
34
35
36 public class JerseyProjectRolesRestClient extends AbstractJerseyRestClient implements ProjectRolesRestClient {
37
38 private final ProjectRoleJsonParser projectRoleJsonParser;
39 private final BasicProjectRoleJsonParser basicRoleJsonParser;
40
41 public JerseyProjectRolesRestClient(
42 final URI baseUri, final ApacheHttpClient client, final URI serverUri) {
43 super(baseUri, client);
44 this.projectRoleJsonParser = new ProjectRoleJsonParser(serverUri);
45 this.basicRoleJsonParser = new BasicProjectRoleJsonParser();
46 }
47
48 @Override
49 public ProjectRole getRole(final URI uri, final ProgressMonitor progressMonitor) {
50 return getAndParse(uri, projectRoleJsonParser, progressMonitor);
51 }
52
53 @Override
54 public ProjectRole getRole(final URI projectUri, final Long roleId, final ProgressMonitor progressMonitor) {
55 final URI roleUri = UriBuilder
56 .fromUri(projectUri)
57 .path("role")
58 .path(String.valueOf(roleId))
59 .build();
60 return getAndParse(roleUri, projectRoleJsonParser, progressMonitor);
61 }
62
63 @Override
64 public Iterable<ProjectRole> getRoles(final URI projectUri, final ProgressMonitor progressMonitor) {
65 final URI rolesUris = UriBuilder
66 .fromUri(projectUri)
67 .path("role")
68 .build();
69 final Collection<BasicProjectRole> basicProjectRoles = getAndParse(rolesUris, basicRoleJsonParser, progressMonitor);
70 return Iterables.transform(
71 basicProjectRoles,
72 new Function<BasicProjectRole, ProjectRole>() {
73 @Override
74 public ProjectRole apply(final BasicProjectRole role) {
75 return getRole(role.getSelf(), progressMonitor);
76 }
77 }
78 );
79 }
80 }