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.CustomFieldOption;
20 import org.codehaus.jettison.json.JSONArray;
21 import org.codehaus.jettison.json.JSONException;
22 import org.codehaus.jettison.json.JSONObject;
23
24 import java.net.URI;
25 import java.util.Collections;
26
27
28
29
30
31
32 public class CustomFieldOptionJsonParser implements JsonObjectParser<CustomFieldOption> {
33
34 private final JsonArrayParser<Iterable<CustomFieldOption>> childrenParser = GenericJsonArrayParser.create(this);
35
36 @Override
37 public CustomFieldOption parse(JSONObject json) throws JSONException {
38 final URI selfUri = JsonParseUtil.getSelfUri(json);
39 final long id = json.getLong("id");
40 final String value = json.getString("value");
41
42 final JSONArray childrenArray = json.optJSONArray("children");
43 final Iterable<CustomFieldOption> children = (childrenArray != null)
44 ? childrenParser.parse(childrenArray)
45 : Collections.<CustomFieldOption>emptyList();
46
47 final JSONObject childObject = json.optJSONObject("child");
48 final CustomFieldOption child = (childObject != null) ? parse(childObject) : null;
49
50 return new CustomFieldOption(id, selfUri, value, children, child);
51 }
52 }