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 String name = json.getString("name");
31 final String description = JsonParseUtil.getOptionalString(json, "description");
32 final boolean isArchived = json.getBoolean("archived");
33 final boolean isReleased = json.getBoolean("released");
34 final String releaseDateStr = JsonParseUtil.getOptionalString(json, "releaseDate");
35 final DateTime releaseDate = parseReleaseDate(releaseDateStr);
36 return new Version(self, name, description, isArchived, isReleased, releaseDate);
37 }
38
39 private DateTime parseReleaseDate(String releaseDateStr) {
40 if (releaseDateStr != null) {
41 if (releaseDateStr.length() > "YYYY-MM-RR".length()) {
42 return JsonParseUtil.parseDateTime(releaseDateStr);
43 } else {
44 return JsonParseUtil.parseDate(releaseDateStr);
45 }
46 } else {
47 return null;
48 }
49 }
50 }