1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.atlassian.jira.rest.client.internal.json;
18
19 import com.atlassian.jira.rest.client.api.domain.ChangelogItem;
20 import com.atlassian.jira.rest.client.api.domain.FieldType;
21 import org.codehaus.jettison.json.JSONException;
22 import org.codehaus.jettison.json.JSONObject;
23
24 public class ChangelogItemJsonParser implements JsonObjectParser<ChangelogItem> {
25 @Override
26 public ChangelogItem parse(JSONObject json) throws JSONException {
27 final String fieldTypeStr = JsonParseUtil.getNestedString(json, "fieldtype");
28 final FieldType fieldType;
29 if ("jira".equalsIgnoreCase(fieldTypeStr)) {
30 fieldType = FieldType.JIRA;
31 } else if ("custom".equalsIgnoreCase(fieldTypeStr)) {
32 fieldType = FieldType.CUSTOM;
33 } else {
34 throw new JSONException("[" + fieldTypeStr + "] does not represent a valid field type. Expected [jira] or [custom].");
35 }
36 final String field = JsonParseUtil.getNestedString(json, "field");
37 final String from = JsonParseUtil.getNullableString(json, "from");
38 final String fromString = JsonParseUtil.getNullableString(json, "fromString");
39 final String to = JsonParseUtil.getNullableString(json, "to");
40 final String toString = JsonParseUtil.getNullableString(json, "toString");
41 return new ChangelogItem(fieldType, field, from, fromString, to, toString);
42 }
43 }