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.Version;
20 import org.codehaus.jettison.json.JSONException;
21 import org.codehaus.jettison.json.JSONObject;
22 import org.joda.time.DateTime;
23
24 import java.net.URI;
25
26 public class VersionJsonParser implements JsonParser<Version> {
27 @Override
28 public Version parse(JSONObject json) throws JSONException {
29 final URI self = JsonParseUtil.getSelfUri(json);
30 final Long id = JsonParseUtil.getOptionalLong(json, "id");
31 final String name = json.getString("name");
32 final String description = JsonParseUtil.getOptionalString(json, "description");
33 final boolean isArchived = json.getBoolean("archived");
34 final boolean isReleased = json.getBoolean("released");
35 final String releaseDateStr = JsonParseUtil.getOptionalString(json, "releaseDate");
36 final DateTime releaseDate = parseReleaseDate(releaseDateStr);
37 return new Version(self, id, name, description, isArchived, isReleased, releaseDate);
38 }
39
40 private DateTime parseReleaseDate(String releaseDateStr) {
41 if (releaseDateStr != null) {
42 if (releaseDateStr.length() > "YYYY-MM-RR".length()) {
43 return JsonParseUtil.parseDateTime(releaseDateStr);
44 } else {
45 return JsonParseUtil.parseDate(releaseDateStr);
46 }
47 } else {
48 return null;
49 }
50 }
51 }