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.httpclient.api.HttpClient;
19 import com.atlassian.jira.rest.client.api.MetadataRestClient;
20 import com.atlassian.jira.rest.client.api.domain.*;
21 import com.atlassian.jira.rest.client.internal.json.*;
22 import com.atlassian.util.concurrent.Promise;
23
24 import javax.ws.rs.core.UriBuilder;
25 import java.net.URI;
26
27
28
29
30
31
32 public class AsynchronousMetadataRestClient extends AbstractAsynchronousRestClient implements MetadataRestClient {
33
34 private static final String SERVER_INFO_RESOURCE = "/serverInfo";
35 private final ServerInfoJsonParser serverInfoJsonParser = new ServerInfoJsonParser();
36 private final IssueTypeJsonParser issueTypeJsonParser = new IssueTypeJsonParser();
37 private final GenericJsonArrayParser<IssueType> issueTypesJsonParser = GenericJsonArrayParser.create(issueTypeJsonParser);
38 private final StatusJsonParser statusJsonParser = new StatusJsonParser();
39 private final PriorityJsonParser priorityJsonParser = new PriorityJsonParser();
40 private final GenericJsonArrayParser<Priority> prioritiesJsonParser = GenericJsonArrayParser.create(priorityJsonParser);
41 private final ResolutionJsonParser resolutionJsonParser = new ResolutionJsonParser();
42 private final GenericJsonArrayParser<Resolution> resolutionsJsonParser = GenericJsonArrayParser.create(resolutionJsonParser);
43 private final IssueLinkTypesJsonParser issueLinkTypesJsonParser = new IssueLinkTypesJsonParser();
44 private final JsonArrayParser<Iterable<Field>> fieldsJsonParser = FieldJsonParser.createFieldsArrayParser();
45 private final URI baseUri;
46
47 public AsynchronousMetadataRestClient(final URI baseUri, HttpClient httpClient) {
48 super(httpClient);
49 this.baseUri = baseUri;
50
51 }
52
53 @Override
54 public Promise<IssueType> getIssueType(final URI uri) {
55 return getAndParse(uri, issueTypeJsonParser);
56 }
57
58 @Override
59 public Promise<Iterable<IssueType>> getIssueTypes() {
60 final URI uri = UriBuilder.fromUri(baseUri).path("issuetype").build();
61 return getAndParse(uri, issueTypesJsonParser);
62 }
63
64 @Override
65 public Promise<Iterable<IssuelinksType>> getIssueLinkTypes() {
66 final URI uri = UriBuilder.fromUri(baseUri).path("issueLinkType").build();
67 return getAndParse(uri, issueLinkTypesJsonParser);
68 }
69
70 @Override
71 public Promise<Status> getStatus(URI uri) {
72 return getAndParse(uri, statusJsonParser);
73 }
74
75 @Override
76 public Promise<Priority> getPriority(URI uri) {
77 return getAndParse(uri, priorityJsonParser);
78 }
79
80 @Override
81 public Promise<Iterable<Priority>> getPriorities() {
82 final URI uri = UriBuilder.fromUri(baseUri).path("priority").build();
83 return getAndParse(uri, prioritiesJsonParser);
84 }
85
86 @Override
87 public Promise<Resolution> getResolution(URI uri) {
88 return getAndParse(uri, resolutionJsonParser);
89 }
90
91 @Override
92 public Promise<Iterable<Resolution>> getResolutions() {
93 final URI uri = UriBuilder.fromUri(baseUri).path("resolution").build();
94 return getAndParse(uri, resolutionsJsonParser);
95 }
96
97 @Override
98 public Promise<ServerInfo> getServerInfo() {
99 final URI serverInfoUri = UriBuilder.fromUri(baseUri).path(SERVER_INFO_RESOURCE).build();
100 return getAndParse(serverInfoUri, serverInfoJsonParser);
101 }
102
103 @Override
104 public Promise<Iterable<Field>> getFields() {
105 final URI uri = UriBuilder.fromUri(baseUri).path("field").build();
106 return getAndParse(uri, fieldsJsonParser);
107 }
108 }