From e71902db060c90302ccee726f5037e532ba80fa0 Mon Sep 17 00:00:00 2001
From: YasinBhojawala <31448190+YasinBhojawala@users.noreply.github.com>
Date: Thu, 5 Oct 2017 20:26:50 +0530
Subject: [PATCH] BAEL-1139 added more examples (#2686)
* BAEL-1139 How to Integration with the JIRA API
* BAEL-1139 How to Integration with the JIRA API
* BAEL-1139 How to Integration with the JIRA API
* BAEL-1139 added more examples
* BAEL-1139 How to Integration with the JIRA API
* How to Integration with the JIRA API
* BAEL-1139 add and delete issue
* BAEL-1139 minor improvements
* BAEL-1139 comment conflicting dependencies
* Update pom.xml
---
libraries/pom.xml | 13 +-
.../java/com/baeldung/jira/JiraClient.java | 57 --------
.../java/com/baeldung/jira/MyJiraClient.java | 130 ++++++++++++++++++
3 files changed, 142 insertions(+), 58 deletions(-)
delete mode 100644 libraries/src/main/java/com/baeldung/jira/JiraClient.java
create mode 100644 libraries/src/main/java/com/baeldung/jira/MyJiraClient.java
diff --git a/libraries/pom.xml b/libraries/pom.xml
index 97ddff96ec..c5b386b6b0 100644
--- a/libraries/pom.xml
+++ b/libraries/pom.xml
@@ -583,7 +583,18 @@
com.atlassian.fugue
fugue
- 3.0.0-m007
+ 2.6.1
+
+
+
+
+ org.jgrapht
+ jgrapht-core
+ 1.0.1
diff --git a/libraries/src/main/java/com/baeldung/jira/JiraClient.java b/libraries/src/main/java/com/baeldung/jira/JiraClient.java
deleted file mode 100644
index 26df21c8a9..0000000000
--- a/libraries/src/main/java/com/baeldung/jira/JiraClient.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.baeldung.jira;
-
-import com.atlassian.jira.rest.client.api.JiraRestClient;
-import com.atlassian.jira.rest.client.api.JiraRestClientFactory;
-import com.atlassian.jira.rest.client.api.domain.Issue;
-import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-
-public class JiraClient {
-
- private static final String USERNAME = "jira.user";
- private static final String PASSWORD = "secret";
- private static final String JIRA_URL = "http://jira.company.com";
-
- public static void main(String[] args) {
-
- final Issue issue = new JiraClient().getIssue("MYKEY-1234");
- System.out.println(issue.getDescription());
- }
-
- private Issue getIssue(String issueKey) {
- JiraRestClient restClient = getJiraRestClient();
- Issue issue = restClient.getIssueClient().getIssue(issueKey).claim();
-
- closeRestClient(restClient);
- return issue;
- }
-
- private JiraRestClient getJiraRestClient() {
- JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
-
- URI jiraServerUri = getJiraUri();
- return factory
- .createWithBasicHttpAuthentication(jiraServerUri, USERNAME, PASSWORD);
- }
-
- private URI getJiraUri() {
- URI jiraServerUri = null;
- try {
- jiraServerUri = new URI(JIRA_URL);
- } catch (URISyntaxException e) {
- e.printStackTrace();
- }
- return jiraServerUri;
- }
-
- private void closeRestClient(JiraRestClient restClient) {
- try {
- restClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-}
diff --git a/libraries/src/main/java/com/baeldung/jira/MyJiraClient.java b/libraries/src/main/java/com/baeldung/jira/MyJiraClient.java
new file mode 100644
index 0000000000..6d78f2a56c
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/jira/MyJiraClient.java
@@ -0,0 +1,130 @@
+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.JiraRestClientFactory;
+import com.atlassian.jira.rest.client.api.domain.BasicIssue;
+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.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class MyJiraClient {
+
+ private String username;
+ private String password;
+ private String jiraUrl;
+ private JiraRestClient restClient;
+
+ public 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) {
+
+ 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 comments = myJiraClient.getAllComments(issueKey);
+ comments.forEach(c -> System.out.println(c.getBody()));
+
+ myJiraClient.deleteIssue(issueKey, true);
+*/
+ myJiraClient.close();
+ }
+
+ public String createIssue(String projectKey, Long issueType, String issueSummary) {
+
+ IssueRestClient issueClient = restClient.getIssueClient();
+
+ IssueInput newIssue = new IssueInputBuilder(projectKey, issueType, issueSummary).build();
+ BasicIssue createdIssue = issueClient.createIssue(newIssue).claim();
+
+ return createdIssue.getKey();
+ }
+
+ public Issue getIssue(String issueKey) {
+ Issue issue = restClient.getIssueClient().getIssue(issueKey).claim();
+ return issue;
+ }
+
+ public void voteForAnIssue(Issue issue) {
+ restClient.getIssueClient().vote(issue.getVotesUri()).claim();
+ }
+
+ public int getTotalVotesCount(String issueKey) {
+ Issue updatedIssue = getIssue(issueKey);
+ return updatedIssue.getVotes().getVotes();
+ }
+
+ public void addComment(Issue issue, String commentBody) {
+ restClient.getIssueClient().addComment(issue.getCommentsUri(), Comment.valueOf(commentBody));
+ }
+
+ public List getAllComments(String issueKey) {
+ Issue issue = getIssue(issueKey);
+ List comments = new ArrayList<>();
+ issue.getComments().forEach(c -> comments.add(c));
+ return comments;
+ }
+
+ 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() {
+ JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
+
+ URI jiraServerUri = getJiraUri();
+ return factory
+ .createWithBasicHttpAuthentication(jiraServerUri, this.username, this.password);
+ }
+
+ private URI getJiraUri() {
+ URI jiraServerUri = null;
+ try {
+ jiraServerUri = new URI(this.jiraUrl);
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ }
+ return jiraServerUri;
+ }
+
+ private void closeRestClient(JiraRestClient restClient) {
+ try {
+ restClient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void close() {
+ closeRestClient(restClient);
+ }
+}