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.BasicUser;
20 import com.atlassian.jira.rest.client.api.domain.BasicWatchers;
21 import com.atlassian.jira.rest.client.api.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
37 .getJSONArray("watchers"), userJsonParser);
38 return new Watchers(parseValueImpl(json), watchers);
39 }
40 };
41 }
42
43 public static JsonObjectParser<BasicWatchers> createBasicWatchersParser() {
44 return new JsonObjectParser<BasicWatchers>() {
45 @Override
46 public BasicWatchers parse(JSONObject json) throws JSONException {
47 return parseValueImpl(json);
48 }
49 };
50 }
51
52
53 private static BasicWatchers parseValueImpl(JSONObject json) throws JSONException {
54 final URI self = JsonParseUtil.getSelfUri(json);
55 final boolean isWatching = json.getBoolean("isWatching");
56 final int numWatchers = json.getInt("watchCount");
57 return new BasicWatchers(self, isWatching, numWatchers);
58 }
59
60 }