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.BasicProject;
20 import com.atlassian.jira.rest.client.api.domain.CimIssueType;
21 import com.atlassian.jira.rest.client.api.domain.CimProject;
22 import org.codehaus.jettison.json.JSONArray;
23 import org.codehaus.jettison.json.JSONException;
24 import org.codehaus.jettison.json.JSONObject;
25
26 import java.net.URI;
27 import java.util.Collections;
28 import java.util.Map;
29
30
31
32
33
34
35 public class CimProjectJsonParser implements JsonObjectParser<CimProject> {
36
37 private final JsonArrayParser<Iterable<CimIssueType>> issueTypesParser = GenericJsonArrayParser
38 .create(new CimIssueTypeJsonParser());
39
40 private final BasicProjectJsonParser basicProjectJsonParser = new BasicProjectJsonParser();
41
42 @Override
43 public CimProject parse(final JSONObject json) throws JSONException {
44 final BasicProject basicProject = basicProjectJsonParser.parse(json);
45 final JSONArray issueTypesArray = json.optJSONArray("issuetypes");
46 final Iterable<CimIssueType> issueTypes = (issueTypesArray != null) ?
47 issueTypesParser.parse(issueTypesArray) : Collections.<CimIssueType>emptyList();
48
49 final Map<String, URI> avatarUris = JsonParseUtil.getAvatarUris(json.getJSONObject("avatarUrls"));
50 return new CimProject(basicProject.getSelf(), basicProject.getKey(),
51 basicProject.getName(), avatarUris, issueTypes);
52 }
53 }