1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.atlassian.jira.rest.client.internal.async;
17
18 import com.atlassian.jira.rest.client.api.ProjectRestClient;
19 import com.atlassian.jira.rest.client.api.domain.BasicProject;
20 import com.atlassian.httpclient.api.HttpClient;
21 import com.atlassian.jira.rest.client.api.domain.Project;
22 import com.atlassian.jira.rest.client.internal.json.BasicProjectsJsonParser;
23 import com.atlassian.jira.rest.client.internal.json.ProjectJsonParser;
24 import com.atlassian.util.concurrent.Promise;
25
26 import javax.ws.rs.core.UriBuilder;
27 import java.net.URI;
28
29
30
31
32
33
34 public class AsynchronousProjectRestClient extends AbstractAsynchronousRestClient implements ProjectRestClient {
35
36 private static final String PROJECT_URI_PREFIX = "project";
37 private final ProjectJsonParser projectJsonParser = new ProjectJsonParser();
38 private final BasicProjectsJsonParser basicProjectsJsonParser = new BasicProjectsJsonParser();
39
40 private final URI baseUri;
41
42 public AsynchronousProjectRestClient(final URI baseUri, final HttpClient client) {
43 super(client);
44 this.baseUri = baseUri;
45 }
46
47 @Override
48 public Promise<Project> getProject(final String key) {
49 final URI uri = UriBuilder.fromUri(baseUri).path(PROJECT_URI_PREFIX).path(key).build();
50 return getAndParse(uri, projectJsonParser);
51 }
52
53 @Override
54 public Promise<Project> getProject(final URI projectUri) {
55 return getAndParse(projectUri, projectJsonParser);
56 }
57
58 @Override
59 public Promise<Iterable<BasicProject>> getAllProjects() {
60 final URI uri = UriBuilder.fromUri(baseUri).path(PROJECT_URI_PREFIX).build();
61 return getAndParse(uri, basicProjectsJsonParser);
62 }
63 }