/core/src/main/java/com/atlassian/jira/rest/client/internal/async/AsynchronousMetadataRestClient.java

https://bitbucket.org/paulrenenichols/jira-rest-java-client · Java · 108 lines · 72 code · 16 blank · 20 comment · 0 complexity · 5f19c946b4fe0d49a36aa85e1a310c1f MD5 · raw file

  1. /*
  2. * Copyright (C) 2012 Atlassian
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.atlassian.jira.rest.client.internal.async;
  17. import com.atlassian.httpclient.api.HttpClient;
  18. import com.atlassian.jira.rest.client.api.MetadataRestClient;
  19. import com.atlassian.jira.rest.client.api.domain.*;
  20. import com.atlassian.jira.rest.client.internal.json.*;
  21. import com.atlassian.util.concurrent.Promise;
  22. import javax.ws.rs.core.UriBuilder;
  23. import java.net.URI;
  24. /**
  25. * Asynchronous implementation of MetadataRestClient.
  26. *
  27. * @since v2.0
  28. */
  29. public class AsynchronousMetadataRestClient extends AbstractAsynchronousRestClient implements MetadataRestClient {
  30. private static final String SERVER_INFO_RESOURCE = "/serverInfo";
  31. private final ServerInfoJsonParser serverInfoJsonParser = new ServerInfoJsonParser();
  32. private final IssueTypeJsonParser issueTypeJsonParser = new IssueTypeJsonParser();
  33. private final GenericJsonArrayParser<IssueType> issueTypesJsonParser = GenericJsonArrayParser.create(issueTypeJsonParser);
  34. private final StatusJsonParser statusJsonParser = new StatusJsonParser();
  35. private final PriorityJsonParser priorityJsonParser = new PriorityJsonParser();
  36. private final GenericJsonArrayParser<Priority> prioritiesJsonParser = GenericJsonArrayParser.create(priorityJsonParser);
  37. private final ResolutionJsonParser resolutionJsonParser = new ResolutionJsonParser();
  38. private final GenericJsonArrayParser<Resolution> resolutionsJsonParser = GenericJsonArrayParser.create(resolutionJsonParser);
  39. private final IssueLinkTypesJsonParser issueLinkTypesJsonParser = new IssueLinkTypesJsonParser();
  40. private final JsonArrayParser<Iterable<Field>> fieldsJsonParser = FieldJsonParser.createFieldsArrayParser();
  41. private final URI baseUri;
  42. public AsynchronousMetadataRestClient(final URI baseUri, HttpClient httpClient) {
  43. super(httpClient);
  44. this.baseUri = baseUri;
  45. }
  46. @Override
  47. public Promise<IssueType> getIssueType(final URI uri) {
  48. return getAndParse(uri, issueTypeJsonParser);
  49. }
  50. @Override
  51. public Promise<Iterable<IssueType>> getIssueTypes() {
  52. final URI uri = UriBuilder.fromUri(baseUri).path("issuetype").build();
  53. return getAndParse(uri, issueTypesJsonParser);
  54. }
  55. @Override
  56. public Promise<Iterable<IssuelinksType>> getIssueLinkTypes() {
  57. final URI uri = UriBuilder.fromUri(baseUri).path("issueLinkType").build();
  58. return getAndParse(uri, issueLinkTypesJsonParser);
  59. }
  60. @Override
  61. public Promise<Status> getStatus(URI uri) {
  62. return getAndParse(uri, statusJsonParser);
  63. }
  64. @Override
  65. public Promise<Priority> getPriority(URI uri) {
  66. return getAndParse(uri, priorityJsonParser);
  67. }
  68. @Override
  69. public Promise<Iterable<Priority>> getPriorities() {
  70. final URI uri = UriBuilder.fromUri(baseUri).path("priority").build();
  71. return getAndParse(uri, prioritiesJsonParser);
  72. }
  73. @Override
  74. public Promise<Resolution> getResolution(URI uri) {
  75. return getAndParse(uri, resolutionJsonParser);
  76. }
  77. @Override
  78. public Promise<Iterable<Resolution>> getResolutions() {
  79. final URI uri = UriBuilder.fromUri(baseUri).path("resolution").build();
  80. return getAndParse(uri, resolutionsJsonParser);
  81. }
  82. @Override
  83. public Promise<ServerInfo> getServerInfo() {
  84. final URI serverInfoUri = UriBuilder.fromUri(baseUri).path(SERVER_INFO_RESOURCE).build();
  85. return getAndParse(serverInfoUri, serverInfoJsonParser);
  86. }
  87. @Override
  88. public Promise<Iterable<Field>> getFields() {
  89. final URI uri = UriBuilder.fromUri(baseUri).path("field").build();
  90. return getAndParse(uri, fieldsJsonParser);
  91. }
  92. }