View Javadoc

1   package com.atlassian.jira.rest.client.internal.async;
2   
3   import com.atlassian.httpclient.api.HttpClient;
4   import com.atlassian.jira.rest.client.api.AuditRestClient;
5   import com.atlassian.jira.rest.client.api.domain.AuditRecordInput;
6   import com.atlassian.jira.rest.client.api.domain.AuditRecordsData;
7   import com.atlassian.jira.rest.client.api.domain.input.AuditRecordSearchInput;
8   import com.atlassian.jira.rest.client.internal.json.AuditRecordsJsonParser;
9   import com.atlassian.jira.rest.client.internal.json.JsonParseUtil;
10  import com.atlassian.jira.rest.client.internal.json.gen.AuditRecordInputJsonGenerator;
11  import com.atlassian.util.concurrent.Promise;
12  
13  import javax.annotation.Nonnull;
14  import javax.ws.rs.core.UriBuilder;
15  import java.net.URI;
16  
17  /**
18   * @since v2.0
19   */
20  public class AsynchronousAuditRestClient extends AbstractAsynchronousRestClient implements AuditRestClient {
21  
22      private final URI baseUri;
23      private final AuditRecordsJsonParser auditRecordsParser = new AuditRecordsJsonParser();
24  
25      protected AsynchronousAuditRestClient(final HttpClient client, final URI baseUri) {
26          super(client);
27          this.baseUri = baseUri;
28      }
29  
30      @Override
31      public Promise<AuditRecordsData> getAuditRecords(final AuditRecordSearchInput input) {
32          return getAndParse(createSearchPathFromInput(
33                  input == null ? new AuditRecordSearchInput(null, null, null, null, null) : input), auditRecordsParser);
34      }
35  
36      protected UriBuilder createPathBuilder() {
37          final UriBuilder uriBuilder = UriBuilder.fromUri(baseUri);
38          uriBuilder.path("auditing/record");
39          return uriBuilder;
40      }
41  
42      @Override
43      public void addAuditRecord(@Nonnull final AuditRecordInput record) {
44          post(createPathBuilder().build(), record, new AuditRecordInputJsonGenerator()).claim();
45      }
46  
47      private URI createSearchPathFromInput(final AuditRecordSearchInput input) {
48          final UriBuilder uriBuilder = createPathBuilder();
49  
50          if (input.getOffset() != null) {
51              uriBuilder.queryParam("offset", input.getOffset());
52          }
53  
54          if (input.getLimit() != null) {
55              uriBuilder.queryParam(("limit"), input.getLimit());
56          }
57  
58          if (input.getTextFilter() != null) {
59              uriBuilder.queryParam(("filter"), input.getTextFilter());
60          }
61  
62          if (input.getFrom() != null) {
63              final String fromIsoString = JsonParseUtil.JIRA_DATE_TIME_FORMATTER.print(input.getFrom());
64              uriBuilder.queryParam(("from"), fromIsoString);
65          }
66  
67          if (input.getTo() != null) {
68              final String toIsoString = JsonParseUtil.JIRA_DATE_TIME_FORMATTER.print(input.getTo());
69              uriBuilder.queryParam(("to"), toIsoString);
70          }
71  
72          try {
73              return uriBuilder.build();
74          } catch (RuntimeException x) {
75              throw x;
76          }
77      }
78  }