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.domain.ChangelogItem;
20 import org.codehaus.jettison.json.JSONException;
21 import org.codehaus.jettison.json.JSONObject;
22
23 public class ChangelogItemJsonParser implements JsonObjectParser<ChangelogItem> {
24 @Override
25 public ChangelogItem parse(JSONObject json) throws JSONException {
26 final String fieldTypeStr = JsonParseUtil.getNestedString(json, "fieldtype");
27 final ChangelogItem.FieldType fieldType;
28 if ("jira".equalsIgnoreCase(fieldTypeStr)) {
29 fieldType = ChangelogItem.FieldType.JIRA;
30 } else if ("custom".equalsIgnoreCase(fieldTypeStr)) {
31 fieldType = ChangelogItem.FieldType.CUSTOM;
32 } else {
33 throw new JSONException("[" + fieldTypeStr + "] does not represent a valid field type. Expected [jira] or [custom].");
34 }
35 final String field = JsonParseUtil.getNestedString(json, "field");
36 final String from = JsonParseUtil.getNullableString(json, "from");
37 final String fromString = JsonParseUtil.getNullableString(json, "fromString");
38 final String to = JsonParseUtil.getNullableString(json, "to");
39 final String toString = JsonParseUtil.getNullableString(json, "toString");
40 return new ChangelogItem(fieldType, field, from, fromString, to, toString);
41 }
42 }