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.BasicUser;
20 import com.atlassian.jira.rest.client.domain.BasicWatchers;
21 import com.atlassian.jira.rest.client.domain.Watchers;
22 import org.codehaus.jettison.json.JSONException;
23 import org.codehaus.jettison.json.JSONObject;
24
25 import java.net.URI;
26 import java.util.Collection;
27
28 public class WatchersJsonParserBuilder {
29
30 public static JsonObjectParser<Watchers> createWatchersParser() {
31 return new JsonObjectParser<Watchers>() {
32 private final BasicUserJsonParser userJsonParser = new BasicUserJsonParser();
33
34 @Override
35 public Watchers parse(JSONObject json) throws JSONException {
36 final Collection<BasicUser> watchers = JsonParseUtil.parseJsonArray(json.getJSONArray("watchers"), userJsonParser);
37 return new Watchers(parseValueImpl(json), watchers);
38 }
39 };
40 }
41
42 public static JsonObjectParser<BasicWatchers> createBasicWatchersParser() {
43 return new JsonObjectParser<BasicWatchers>() {
44 @Override
45 public BasicWatchers parse(JSONObject json) throws JSONException {
46 return parseValueImpl(json);
47 }
48 };
49 }
50
51
52 private static BasicWatchers parseValueImpl(JSONObject json) throws JSONException {
53 final URI self = JsonParseUtil.getSelfUri(json);
54 final boolean isWatching = json.getBoolean("isWatching");
55 final int numWatchers = json.getInt("watchCount");
56 return new BasicWatchers(self, isWatching, numWatchers);
57 }
58
59 }