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.gen;
18
19 import com.atlassian.jira.rest.client.api.domain.input.LinkIssuesInput;
20 import com.atlassian.jira.rest.client.internal.ServerVersionConstants;
21 import com.atlassian.jira.rest.client.api.domain.ServerInfo;
22 import org.codehaus.jettison.json.JSONException;
23 import org.codehaus.jettison.json.JSONObject;
24
25 public class LinkIssuesInputGenerator implements JsonGenerator<LinkIssuesInput> {
26
27 private final ServerInfo serverInfo;
28
29 public LinkIssuesInputGenerator(ServerInfo serverInfo) {
30 this.serverInfo = serverInfo;
31 }
32
33 @Override
34 public JSONObject generate(LinkIssuesInput linkIssuesInput) throws JSONException {
35 JSONObject res = new JSONObject();
36
37 final int buildNumber = serverInfo.getBuildNumber();
38 if (buildNumber >= ServerVersionConstants.BN_JIRA_5) {
39 res.put("type", new JSONObject().put("name", linkIssuesInput.getLinkType()));
40 res.put("inwardIssue", new JSONObject().put("key", linkIssuesInput.getFromIssueKey()));
41 res.put("outwardIssue", new JSONObject().put("key", linkIssuesInput.getToIssueKey()));
42 } else {
43 res.put("linkType", linkIssuesInput.getLinkType());
44 res.put("fromIssueKey", linkIssuesInput.getFromIssueKey());
45 res.put("toIssueKey", linkIssuesInput.getToIssueKey());
46 }
47 if (linkIssuesInput.getComment() != null) {
48 res.put("comment", new CommentJsonGenerator(serverInfo).generate(linkIssuesInput.getComment()));
49 }
50 return res;
51 }
52 }