private List<LinkIssuesInput> calculateNewLinks(Issue issue, com.atlassian.jira.rest.client.api.domain.Issue jiraIssue) { // When jiraIssueLinks is null, this means that issue links have been disabled, so return an empty list Iterable<IssueLink> jiraIssueLinks = jiraIssue.getIssueLinks(); if (jiraIssueLinks == null) return new ArrayList<>(); // Process the existing IssueLinks and retrieve their Issue keys List<IssueLink> tmp = StreamSupport.stream(jiraIssueLinks.spliterator(), false).collect(Collectors.toList()); List<String> inbound = getExistingIssueLinkKeys(tmp, Direction.INBOUND); List<String> outbound = getExistingIssueLinkKeys(tmp, Direction.OUTBOUND); return Stream.concat( createIssueLinks(issue, inbound, e -> new LinkIssuesInput(e, jiraIssue.getKey(), "Dependency")), createIssueLinks(issue, outbound, e -> new LinkIssuesInput(jiraIssue.getKey(), e, "Dependency"))) .collect(Collectors.toList()); }
@Override public JSONObject generate(LinkIssuesInput linkIssuesInput) throws JSONException { JSONObject res = new JSONObject(); final int buildNumber = serverInfo.getBuildNumber(); if (buildNumber >= ServerVersionConstants.BN_JIRA_5) { res.put("type", new JSONObject().put("name", linkIssuesInput.getLinkType())); res.put("inwardIssue", new JSONObject().put("key", linkIssuesInput.getFromIssueKey())); res.put("outwardIssue", new JSONObject().put("key", linkIssuesInput.getToIssueKey())); } else { res.put("linkType", linkIssuesInput.getLinkType()); res.put("fromIssueKey", linkIssuesInput.getFromIssueKey()); res.put("toIssueKey", linkIssuesInput.getToIssueKey()); } if (linkIssuesInput.getComment() != null) { res.put("comment", new CommentJsonGenerator(serverInfo).generate(linkIssuesInput.getComment())); } return res; } }
@Override public JSONObject generate(LinkIssuesInput linkIssuesInput) throws JSONException { JSONObject res = new JSONObject(); final int buildNumber = serverInfo.getBuildNumber(); if (buildNumber >= ServerVersionConstants.BN_JIRA_5) { res.put("type", new JSONObject().put("name", linkIssuesInput.getLinkType())); res.put("inwardIssue", new JSONObject().put("key", linkIssuesInput.getFromIssueKey())); res.put("outwardIssue", new JSONObject().put("key", linkIssuesInput.getToIssueKey())); } else { res.put("linkType", linkIssuesInput.getLinkType()); res.put("fromIssueKey", linkIssuesInput.getFromIssueKey()); res.put("toIssueKey", linkIssuesInput.getToIssueKey()); } if (linkIssuesInput.getComment() != null) { res.put("comment", new CommentJsonGenerator(serverInfo).generate(linkIssuesInput.getComment())); } return res; } }