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.MetadataRestClient;
20 import com.atlassian.jira.rest.client.ProgressMonitor;
21 import com.atlassian.jira.rest.client.domain.IssueType;
22 import com.atlassian.jira.rest.client.domain.Priority;
23 import com.atlassian.jira.rest.client.domain.Resolution;
24 import com.atlassian.jira.rest.client.domain.ServerInfo;
25 import com.atlassian.jira.rest.client.domain.Status;
26 import com.atlassian.jira.rest.client.internal.json.IssueTypeJsonParser;
27 import com.atlassian.jira.rest.client.internal.json.PriorityJsonParser;
28 import com.atlassian.jira.rest.client.internal.json.ResolutionJsonParser;
29 import com.atlassian.jira.rest.client.internal.json.ServerInfoJsonParser;
30 import com.atlassian.jira.rest.client.internal.json.StatusJsonParser;
31 import com.sun.jersey.api.client.WebResource;
32 import com.sun.jersey.client.apache.ApacheHttpClient;
33 import org.codehaus.jettison.json.JSONObject;
34
35 import javax.ws.rs.core.UriBuilder;
36 import java.net.URI;
37 import java.util.concurrent.Callable;
38
39
40
41
42
43
44 public class JerseyMetadataRestClient extends AbstractJerseyRestClient implements MetadataRestClient {
45 private final String SERVER_INFO_RESOURCE = "/serverInfo";
46 private final ServerInfoJsonParser serverInfoJsonParser = new ServerInfoJsonParser();
47 private final IssueTypeJsonParser issueTypeJsonParser = new IssueTypeJsonParser();
48 private final StatusJsonParser statusJsonParser = new StatusJsonParser();
49 private final PriorityJsonParser priorityJsonParser = new PriorityJsonParser();
50 private final ResolutionJsonParser resolutionJsonParser = new ResolutionJsonParser();
51
52 public JerseyMetadataRestClient(URI baseUri, ApacheHttpClient client) {
53 super(baseUri, client);
54 }
55
56 @Override
57 public IssueType getIssueType(final URI uri, ProgressMonitor progressMonitor) {
58 return getAndParse(uri, issueTypeJsonParser, progressMonitor);
59 }
60
61 @Override
62 public Status getStatus(final URI uri, ProgressMonitor progressMonitor) {
63 return getAndParse(uri, statusJsonParser, progressMonitor);
64 }
65
66 @Override
67 public Priority getPriority(final URI uri, ProgressMonitor progressMonitor) {
68 return getAndParse(uri, priorityJsonParser, progressMonitor);
69 }
70
71 @Override
72 public Resolution getResolution(URI uri, ProgressMonitor progressMonitor) {
73 return getAndParse(uri, resolutionJsonParser, progressMonitor);
74 }
75
76 @Override
77 public ServerInfo getServerInfo(ProgressMonitor progressMonitor) {
78 return invoke(new Callable<ServerInfo>() {
79 @Override
80 public ServerInfo call() throws Exception {
81 final WebResource serverInfoResource = client.resource(UriBuilder.fromUri(baseUri)
82 .path(SERVER_INFO_RESOURCE).build());
83 return serverInfoJsonParser.parse(serverInfoResource.get(JSONObject.class));
84 }
85 });
86 }
87 }