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.BulkOperationErrorResult;
20 import com.atlassian.jira.rest.client.api.domain.util.ErrorCollection;
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.Collection;
26 import java.util.Collections;
27 import java.util.Map;
28
29
30
31
32
33
34 public class IssueErrorJsonParser implements JsonObjectParser<BulkOperationErrorResult> {
35
36 @Override
37 public BulkOperationErrorResult parse(final JSONObject json) throws JSONException {
38
39 final Integer status = json.getInt("status");
40 final Integer issueNumber = json.getInt("failedElementNumber");
41
42 final JSONObject elementErrors = json.optJSONObject("elementErrors");
43 final JSONObject jsonErrors = elementErrors.optJSONObject("errors");
44 final JSONArray jsonErrorMessages = elementErrors.optJSONArray("errorMessages");
45
46 final Collection<String> errorMessages;
47 if (jsonErrorMessages != null) {
48 errorMessages = JsonParseUtil.toStringCollection(jsonErrorMessages);
49 } else {
50 errorMessages = Collections.emptyList();
51 }
52
53 final Map<String, String> errors;
54 if (jsonErrors != null) {
55 errors = JsonParseUtil.toStringMap(jsonErrors.names(), jsonErrors);
56 } else {
57 errors = Collections.emptyMap();
58 }
59
60 return new BulkOperationErrorResult(new ErrorCollection(status, errorMessages, errors), issueNumber);
61 }
62
63 }