View Javadoc

1   package com.atlassian.jira.rest.client.internal.json.gen;
2   
3   import com.atlassian.jira.rest.client.api.domain.AuditAssociatedItem;
4   import com.atlassian.jira.rest.client.api.domain.AuditChangedValue;
5   import com.atlassian.jira.rest.client.api.domain.AuditRecordInput;
6   import org.codehaus.jettison.json.JSONArray;
7   import org.codehaus.jettison.json.JSONException;
8   import org.codehaus.jettison.json.JSONObject;
9   
10  import javax.annotation.Nullable;
11  
12  /**
13   * @since v2.0
14   */
15  public class AuditRecordInputJsonGenerator implements JsonGenerator<AuditRecordInput> {
16      final AuditAssociatedItemJsonGenerator associatedItemJsonGenerator = new AuditAssociatedItemJsonGenerator();
17  
18      @Override
19      public JSONObject generate(AuditRecordInput bean) throws JSONException {
20          return new JSONObject()
21                  .put("category", bean.getCategory())
22                  .put("summary", bean.getSummary())
23                  .put("objectItem", bean.getObjectItem() != null ? associatedItemJsonGenerator.generate(bean.getObjectItem()) : null)
24                  .put("associatedItems", generateAssociatedItems(bean.getAssociatedItems()))
25                  .put("changedValues", generateChangedValues(bean.getChangedValues()));
26      }
27  
28      private JSONArray generateChangedValues(@Nullable Iterable<AuditChangedValue> changedValues) throws JSONException {
29          final AuditChangedValueJsonGenerator generator = new AuditChangedValueJsonGenerator();
30          final JSONArray array = new JSONArray();
31          if (changedValues != null) {
32              for (AuditChangedValue value : changedValues) {
33                  array.put(generator.generate(value));
34              }
35          }
36          return array;
37      }
38  
39      protected JSONArray generateAssociatedItems(@Nullable Iterable<AuditAssociatedItem> associatedItems) throws JSONException {
40          final JSONArray array = new JSONArray();
41          if (associatedItems != null) {
42              for (AuditAssociatedItem item : associatedItems) {
43                  array.put(associatedItemJsonGenerator.generate(item));
44              }
45          }
46          return array;
47      }
48  }