1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.atlassian.jira.rest.client.internal.json;
17
18 import com.atlassian.jira.rest.client.api.domain.ProjectRole;
19 import com.atlassian.jira.rest.client.api.domain.RoleActor;
20 import com.google.common.base.Optional;
21 import com.google.common.collect.ImmutableSet;
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.Collection;
28
29 public class ProjectRoleJsonParser implements JsonObjectParser<ProjectRole> {
30
31 private final RoleActorJsonParser roleActorJsonParser;
32
33 public ProjectRoleJsonParser(URI baseJiraUri) {
34 this.roleActorJsonParser = new RoleActorJsonParser(baseJiraUri);
35 }
36
37 @Override
38 public ProjectRole parse(final JSONObject json) throws JSONException {
39 final URI self = JsonParseUtil.getSelfUri(json);
40 final long id = json.getLong("id");
41 final String name = json.getString("name");
42 final String description = json.getString("description");
43 final Optional<JSONArray> roleActorsOpt = JsonParseUtil.getOptionalArray(json, "actors");
44 final Collection<RoleActor> roleActors = roleActorsOpt.isPresent() ?
45 JsonParseUtil.parseJsonArray(roleActorsOpt.get(), roleActorJsonParser) : ImmutableSet.<RoleActor>of();
46 return new ProjectRole(id, self, name, description, roleActors);
47 }
48
49 }