in src/main/java/org/apache/sling/cli/impl/jira/VersionClient.java [232:268]
public void release(Release release) throws Exception {
List<Issue> issues = findIssues(release);
List<Issue> unresolvedIssues = new ArrayList<>();
issues.forEach(issue -> {
if (issue.getResolution() == null) {
unresolvedIssues.add(issue);
}
});
if (unresolvedIssues.isEmpty()) {
closeIssues(issues);
Version version = find(release);
if (!version.isReleased()) {
HttpPut put = newPut("version/" + version.getId());
StringWriter w = new StringWriter();
try (JsonWriter jw = new Gson().newJsonWriter(w)) {
jw.beginObject().name("released").value(true).name("releaseDate").value(dateProvider.getCurrentDateForJiraRelease())
.endObject();
}
put.setEntity(new StringEntity(w.toString()));
try (CloseableHttpClient client = httpClientFactory.newClient()) {
try (CloseableHttpResponse response = client.execute(put, httpClientFactory.newPreemptiveAuthenticationContext())) {
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != 200) {
throw new IOException(String.format("Unable to mark %s as released. Got status code %d.", release.getFullName(),
statusCode));
}
}
}
} else {
LOGGER.info("Version {} was already released on {}.", version.getName(), version.getReleaseDate());
}
} else {
String report =
unresolvedIssues.stream().map(issue -> String.format("%s/browse/%s", jiraURL, issue.getKey())).collect(Collectors.joining(System.lineSeparator()));
throw new IllegalStateException("The following issues are not fixed:\n" + report);
}
}