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.Issue;
20 import com.atlassian.jira.rest.client.api.domain.SearchResult;
21 import org.codehaus.jettison.json.JSONArray;
22 import org.codehaus.jettison.json.JSONException;
23 import org.codehaus.jettison.json.JSONObject;
24
25 import java.util.Collections;
26
27 public class SearchResultJsonParser implements JsonObjectParser<SearchResult> {
28
29 @Override
30 public SearchResult parse(JSONObject json) throws JSONException {
31 final int startAt = json.getInt("startAt");
32 final int maxResults = json.getInt("maxResults");
33 final int total = json.getInt("total");
34 final JSONArray issuesJsonArray = json.getJSONArray("issues");
35
36 final Iterable<Issue> issues;
37 if (issuesJsonArray.length() > 0) {
38 final IssueJsonParser issueParser = new IssueJsonParser(json.getJSONObject("names"), json.getJSONObject("schema"));
39 final GenericJsonArrayParser<Issue> issuesParser = GenericJsonArrayParser.create(issueParser);
40 issues = issuesParser.parse(issuesJsonArray);
41 } else {
42 issues = Collections.emptyList();
43 }
44 return new SearchResult(startAt, maxResults, total, issues);
45 }
46 }