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.Transition;
20 import com.google.common.collect.Lists;
21 import org.codehaus.jettison.json.JSONException;
22 import org.codehaus.jettison.json.JSONObject;
23
24 import java.util.Collection;
25 import java.util.Iterator;
26
27 public class TransitionJsonParserV5 implements JsonObjectParser<Transition> {
28 private final TransitionFieldJsonParser transitionFieldJsonParser = new TransitionFieldJsonParser();
29
30 public Transition parse(JSONObject json) throws JSONException {
31 final int id = json.getInt("id");
32 final String name = json.getString("name");
33 final JSONObject fieldsObj = json.getJSONObject("fields");
34 final Iterator keys = fieldsObj.keys();
35 final Collection<Transition.Field> fields = Lists.newArrayList();
36 while(keys.hasNext()) {
37 final String fieldId = keys.next().toString();
38 fields.add(transitionFieldJsonParser.parse(fieldsObj.getJSONObject(fieldId), fieldId));
39 }
40 return new Transition(name, id, fields);
41 }
42
43 public static class TransitionFieldJsonParser {
44 public Transition.Field parse(JSONObject json, final String id) throws JSONException {
45 final boolean isRequired = json.getBoolean("required");
46 final String type = json.getJSONObject("schema").getString("type");
47 return new Transition.Field(id, isRequired, type);
48 }
49 }
50 }