View Javadoc

1   package com.atlassian.jira.rest.client.internal.json;
2   
3   import com.atlassian.jira.rest.client.api.OptionalIterable;
4   import com.atlassian.jira.rest.client.api.domain.AuditAssociatedItem;
5   import com.atlassian.jira.rest.client.api.domain.AuditChangedValue;
6   import com.atlassian.jira.rest.client.api.domain.AuditRecord;
7   import com.atlassian.jira.rest.client.api.domain.AuditRecordsData;
8   import org.codehaus.jettison.json.JSONException;
9   import org.codehaus.jettison.json.JSONObject;
10  import org.joda.time.DateTime;
11  
12  /**
13   * @since v2.0
14   */
15  public class AuditRecordsJsonParser implements JsonObjectParser<AuditRecordsData> {
16  
17      private final AuditAssociatedItemJsonParser associatedItemJsonParser = new AuditAssociatedItemJsonParser();
18      private final AuditChangedValueJsonParser changedValueJsonParser = new AuditChangedValueJsonParser();
19      private final SingleAuditRecordJsonParser singleAuditRecordJsonParser = new SingleAuditRecordJsonParser();
20  
21      @Override
22      public AuditRecordsData parse(final JSONObject json) throws JSONException {
23          final Integer offset = json.getInt("offset");
24          final Integer limit = json.getInt("limit");
25          final Integer total = json.getInt("total");
26          final OptionalIterable<AuditRecord> records = JsonParseUtil.parseOptionalJsonArray(json.optJSONArray("records"), singleAuditRecordJsonParser);
27  
28          return new AuditRecordsData(offset, limit, total, records);
29      }
30  
31      class SingleAuditRecordJsonParser implements JsonObjectParser<AuditRecord> {
32          @Override
33          public AuditRecord parse(final JSONObject json) throws JSONException {
34              final Long id = json.getLong("id");
35              final String summary = json.getString("summary");
36  
37              final String createdString = json.getString("created");
38              final DateTime created = JsonParseUtil.parseDateTime(json, "created");
39              final String category = json.getString("category");
40              final String eventSource = json.getString("eventSource");
41              final String authorKey = JsonParseUtil.getOptionalString(json, "authorKey");
42              final String remoteAddress = JsonParseUtil.getOptionalString(json, "remoteAddress");
43              final AuditAssociatedItem objectItem = JsonParseUtil.getOptionalJsonObject(json, "objectItem", associatedItemJsonParser);
44              final OptionalIterable<AuditAssociatedItem> associatedItem = JsonParseUtil.parseOptionalJsonArray(json.optJSONArray("associatedItems"), associatedItemJsonParser);
45              final OptionalIterable<AuditChangedValue> changedValues = JsonParseUtil.parseOptionalJsonArray(json.optJSONArray("changedValues"), changedValueJsonParser);
46  
47              return new AuditRecord(id, summary, remoteAddress, created, category, eventSource, authorKey, objectItem, associatedItem, changedValues);
48          }
49  
50      }
51  }