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
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 }