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.domain.ServerInfo;
20  import com.atlassian.jira.rest.client.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  }