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.JsonParser;
25 import com.atlassian.jira.rest.client.internal.json.ProjectJsonParser;
26 import com.sun.jersey.api.client.WebResource;
27 import com.sun.jersey.client.apache.ApacheHttpClient;
28 import org.codehaus.jettison.json.JSONException;
29 import org.codehaus.jettison.json.JSONObject;
30
31 import javax.ws.rs.core.UriBuilder;
32 import java.net.URI;
33 import java.util.concurrent.Callable;
34
35
36
37
38
39
40 public class JerseyProjectRestClient extends AbstractJerseyRestClient implements ProjectRestClient {
41 private static final String PROJECT_URI_PREFIX = "project";
42 private final ProjectJsonParser projectJsonParser = new ProjectJsonParser();
43 private final BasicProjectsJsonParser basicProjectsJsonParser = new BasicProjectsJsonParser();
44
45 public JerseyProjectRestClient(URI baseUri, ApacheHttpClient client) {
46 super(baseUri, client);
47 }
48
49 @Override
50 public Project getProject(final URI projectUri, ProgressMonitor progressMonitor) {
51 return invoke(new Callable<Project>() {
52 @Override
53 public Project call() throws Exception {
54 final WebResource projectResource = client.resource(projectUri);
55 final JSONObject jsonObject = projectResource.get(JSONObject.class);
56 return projectJsonParser.parse(jsonObject);
57 }
58 });
59
60 }
61
62 @Override
63 public Project getProject(final String key, ProgressMonitor progressMonitor) {
64 final URI uri = UriBuilder.fromUri(baseUri).path(PROJECT_URI_PREFIX).path(key).build();
65 return getProject(uri, progressMonitor);
66 }
67
68 @Override
69 public Iterable<BasicProject> getAllProjects(ProgressMonitor progressMonitor) {
70 final URI uri = UriBuilder.fromUri(baseUri).path(PROJECT_URI_PREFIX).build();
71 return getAndParse(uri, basicProjectsJsonParser, progressMonitor);
72 }
73 }