105 lines
3.8 KiB
Java
105 lines
3.8 KiB
Java
package com.baeldung.jira;
|
|
|
|
import com.atlassian.jira.rest.client.api.IssueRestClient;
|
|
import com.atlassian.jira.rest.client.api.JiraRestClient;
|
|
import com.atlassian.jira.rest.client.api.domain.BasicVotes;
|
|
import com.atlassian.jira.rest.client.api.domain.Comment;
|
|
import com.atlassian.jira.rest.client.api.domain.Issue;
|
|
import com.atlassian.jira.rest.client.api.domain.input.IssueInput;
|
|
import com.atlassian.jira.rest.client.api.domain.input.IssueInputBuilder;
|
|
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;
|
|
|
|
import java.io.IOException;
|
|
import java.net.URI;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.StreamSupport;
|
|
|
|
public class MyJiraClient {
|
|
|
|
private String username;
|
|
private String password;
|
|
private String jiraUrl;
|
|
private JiraRestClient restClient;
|
|
|
|
private MyJiraClient(String username, String password, String jiraUrl) {
|
|
this.username = username;
|
|
this.password = password;
|
|
this.jiraUrl = jiraUrl;
|
|
this.restClient = getJiraRestClient();
|
|
}
|
|
|
|
public static void main(String[] args) throws IOException {
|
|
|
|
MyJiraClient myJiraClient = new MyJiraClient("user.name", "pass", "http://jira.company.com");
|
|
|
|
// final String issueKey = myJiraClient.createIssue("ABCD", 1L, "Issue created from JRJC");
|
|
final String issueKey = "BAEL-1139";
|
|
// myJiraClient.updateIssueDescription(issueKey, "This is description from my Jira Client");
|
|
Issue issue = myJiraClient.getIssue(issueKey);
|
|
System.out.println(issue.getDescription());
|
|
|
|
/*myJiraClient.voteForAnIssue(issue);
|
|
|
|
System.out.println(myJiraClient.getTotalVotesCount(issueKey));
|
|
|
|
myJiraClient.addComment(issue, "This is comment from my Jira Client");
|
|
|
|
List<Comment> comments = myJiraClient.getAllComments(issueKey);
|
|
comments.forEach(c -> System.out.println(c.getBody()));
|
|
|
|
myJiraClient.deleteIssue(issueKey, true);
|
|
*/
|
|
myJiraClient.restClient.close();
|
|
}
|
|
|
|
public String createIssue(String projectKey, Long issueType, String issueSummary) {
|
|
|
|
IssueRestClient issueClient = restClient.getIssueClient();
|
|
|
|
IssueInput newIssue = new IssueInputBuilder(projectKey, issueType, issueSummary).build();
|
|
|
|
return issueClient.createIssue(newIssue).claim().getKey();
|
|
}
|
|
|
|
private Issue getIssue(String issueKey) {
|
|
return restClient.getIssueClient().getIssue(issueKey).claim();
|
|
}
|
|
|
|
public void voteForAnIssue(Issue issue) {
|
|
restClient.getIssueClient().vote(issue.getVotesUri()).claim();
|
|
}
|
|
|
|
public int getTotalVotesCount(String issueKey) {
|
|
BasicVotes votes = getIssue(issueKey).getVotes();
|
|
return votes == null ? 0 : votes.getVotes();
|
|
}
|
|
|
|
public void addComment(Issue issue, String commentBody) {
|
|
restClient.getIssueClient().addComment(issue.getCommentsUri(), Comment.valueOf(commentBody));
|
|
}
|
|
|
|
public List<Comment> getAllComments(String issueKey) {
|
|
return StreamSupport.stream(getIssue(issueKey).getComments().spliterator(), false)
|
|
.collect(Collectors.toList());
|
|
}
|
|
|
|
public void updateIssueDescription(String issueKey, String newDescription) {
|
|
IssueInput input = new IssueInputBuilder().setDescription(newDescription).build();
|
|
restClient.getIssueClient().updateIssue(issueKey, input).claim();
|
|
}
|
|
|
|
public void deleteIssue(String issueKey, boolean deleteSubtasks) {
|
|
restClient.getIssueClient().deleteIssue(issueKey, deleteSubtasks).claim();
|
|
}
|
|
|
|
private JiraRestClient getJiraRestClient() {
|
|
return new AsynchronousJiraRestClientFactory()
|
|
.createWithBasicHttpAuthentication(getJiraUri(), this.username, this.password);
|
|
}
|
|
|
|
private URI getJiraUri() {
|
|
return URI.create(this.jiraUrl);
|
|
}
|
|
}
|