View Javadoc

1   /*
2    * Copyright (C) 2011 Atlassian
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.atlassian.jira.rest.client.internal.json.gen;
18  
19  import com.atlassian.jira.rest.client.api.domain.ServerInfo;
20  import com.atlassian.jira.rest.client.api.domain.input.LinkIssuesInput;
21  import com.atlassian.jira.rest.client.internal.ServerVersionConstants;
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  }