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.Field;
20 import com.atlassian.jira.rest.client.api.domain.FieldSchema;
21 import com.atlassian.jira.rest.client.api.domain.FieldType;
22 import org.codehaus.jettison.json.JSONException;
23 import org.codehaus.jettison.json.JSONObject;
24
25
26
27
28 public class FieldJsonParser implements JsonObjectParser<Field> {
29
30 private final FieldSchemaJsonParser schemaJsonParser = new FieldSchemaJsonParser();
31
32 @Override
33 public Field parse(final JSONObject jsonObject) throws JSONException {
34 final String id = jsonObject.getString("id");
35 final String name = jsonObject.getString("name");
36 final Boolean orderable = jsonObject.getBoolean("orderable");
37 final Boolean navigable = jsonObject.getBoolean("navigable");
38 final Boolean searchable = jsonObject.getBoolean("searchable");
39 final FieldType custom = jsonObject.getBoolean("custom") ? FieldType.CUSTOM : FieldType.JIRA;
40 final FieldSchema schema = jsonObject.has("schema") ? schemaJsonParser.parse(jsonObject.getJSONObject("schema")) : null;
41 return new Field(id, name, custom, orderable, navigable, searchable, schema);
42 }
43
44 public static JsonArrayParser<Iterable<Field>> createFieldsArrayParser() {
45 return GenericJsonArrayParser.create(new FieldJsonParser());
46 }
47 }