1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.atlassian.jira.rest.client.internal.jersey;
18
19 import com.atlassian.jira.rest.client.ProgressMonitor;
20 import com.atlassian.jira.rest.client.ProjectRestClient;
21 import com.atlassian.jira.rest.client.domain.BasicProject;
22 import com.atlassian.jira.rest.client.domain.Project;
23 import com.atlassian.jira.rest.client.internal.json.BasicProjectsJsonParser;
24 import com.atlassian.jira.rest.client.internal.json.ProjectJsonParser;
25 import com.sun.jersey.api.client.WebResource;
26 import com.sun.jersey.client.apache.ApacheHttpClient;
27 import org.codehaus.jettison.json.JSONObject;
28
29 import javax.ws.rs.core.UriBuilder;
30 import java.net.URI;
31 import java.util.concurrent.Callable;
32
33
34
35
36
37
38 public class JerseyProjectRestClient extends AbstractJerseyRestClient implements ProjectRestClient {
39 private static final String PROJECT_URI_PREFIX = "project";
40 private final ProjectJsonParser projectJsonParser = new ProjectJsonParser();
41 private final BasicProjectsJsonParser basicProjectsJsonParser = new BasicProjectsJsonParser();
42
43 public JerseyProjectRestClient(URI baseUri, ApacheHttpClient client) {
44 super(baseUri, client);
45 }
46
47 @Override
48 public Project getProject(final URI projectUri, ProgressMonitor progressMonitor) {
49 return invoke(new Callable<Project>() {
50 @Override
51 public Project call() throws Exception {
52 final WebResource projectResource = client.resource(projectUri);
53 final JSONObject jsonObject = projectResource.get(JSONObject.class);
54 return projectJsonParser.parse(jsonObject);
55 }
56 });
57
58 }
59
60 @Override
61 public Project getProject(final String key, ProgressMonitor progressMonitor) {
62 final URI uri = UriBuilder.fromUri(baseUri).path(PROJECT_URI_PREFIX).path(key).build();
63 return getProject(uri, progressMonitor);
64 }
65
66 @Override
67 public Iterable<BasicProject> getAllProjects(ProgressMonitor progressMonitor) {
68 final URI uri = UriBuilder.fromUri(baseUri).path(PROJECT_URI_PREFIX).build();
69 return getAndParse(uri, basicProjectsJsonParser, progressMonitor);
70 }
71 }