广州建网站的公司有哪些,免费网站知乎,网站建设营改增,wordpress签到积分商城参考页面: 可方便扩展的JIRA Rest Web API的封装调用 JIRA是一个缺陷跟踪管理系统#xff0c;被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域,当我们需要把第三方业务系统集成进来时#xff0c;可以调用他的API。 JIRA本身的A… 参考页面: 可方便扩展的JIRA Rest Web API的封装调用 JIRA是一个缺陷跟踪管理系统被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域,当我们需要把第三方业务系统集成进来时可以调用他的API。 JIRA本身的API非常强大但它是一个底层的API体系并不是一个易用的接口如果要开发和拓展所以需要我们二次包装。 jira官方为解决这个问题推出了方便强大的java client library目前只有java客户端库没有.Net类库 jira的Rest API 最新文档官网. JIRA 6.4.12 REST API documentation https://docs.atlassian.com/jira/REST/latest/ JIRA REST API Tutorials https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials JIRA Java Client library https://ecosystem.atlassian.net/wiki/display/JRJC/Home (获取所有项目目的,获取projectKey,issuetype) package jiraTEST; import java.net.URI;import java.net.URISyntaxException;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.concurrent.ExecutionException; import org.apache.commons.codec.binary.Base32;import org.joda.time.DateTime; import com.atlassian.jira.rest.client.IssueRestClient;import com.atlassian.jira.rest.client.JiraRestClient;import com.atlassian.jira.rest.client.SearchRestClient;import com.atlassian.jira.rest.client.domain.BasicIssue;import com.atlassian.jira.rest.client.domain.BasicProject;import com.atlassian.jira.rest.client.domain.BasicUser;import com.atlassian.jira.rest.client.domain.Comment;import com.atlassian.jira.rest.client.domain.Field;import com.atlassian.jira.rest.client.domain.Issue;import com.atlassian.jira.rest.client.domain.Project;import com.atlassian.jira.rest.client.domain.SearchResult;import com.atlassian.jira.rest.client.domain.Transition;import com.atlassian.jira.rest.client.domain.input.ComplexIssueInputFieldValue;import com.atlassian.jira.rest.client.domain.input.FieldInput;import com.atlassian.jira.rest.client.domain.input.IssueInput;import com.atlassian.jira.rest.client.domain.input.IssueInputBuilder;import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;import com.atlassian.util.concurrent.Promise;import com.google.common.collect.Lists; public class CvteJiraDemo { public static String BaseURL http://jira-test:8080/; public static String User admin; public static String Password admin; private static URI jiraServerUri URI .create(http://jira-test/rest/api/2/); private static boolean quiet false; private static final long BUG_TYPE_ID 1L; // JIRA magic value private static final long TASK_TYPE_ID 3L; // JIRA magic value private static final DateTime DUE_DATE new DateTime(); private static final String PRIORITY Trivial; private static final String DESCRIPTION description; public static void main(String[] args) throws InterruptedException, ExecutionException { final AsynchronousJiraRestClientFactory factory new AsynchronousJiraRestClientFactory(); URI jiraServerUri; try { jiraServerUri new URI(BaseURL); final JiraRestClient restClient (JiraRestClient) factory .createWithBasicHttpAuthentication(jiraServerUri, User, Password); getAllProjects(restClient); getProject(restClient, DEMO); getIssue(restClient, FEEDBACK-14); getIssueFields(restClient, FEEDBACK-27); addIssue(restClient, FEEDBACK, AAAAB); addIssueComplex(restClient, FEEDBACK,DUE_DATE.toString()); } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { } } private static void println(Object o) { if (!quiet) { System.out.println(o); } } private static void parseArgs(String[] argsArray) throws URISyntaxException { final ListString args Lists.newArrayList(argsArray); if (args.contains(-q)) { quiet true; args.remove(args.indexOf(-q)); } if (!args.isEmpty()) { jiraServerUri new URI(args.get(0)); } } private static Transition getTransitionByName( IterableTransition transitions, String transitionName) { for (Transition transition : transitions) { if (transition.getName().equals(transitionName)) { return transition; } } return null; } // 得到所有项目信息 private static void getAllProjects(final JiraRestClient restClient) throws InterruptedException, ExecutionException { try { PromiseIterableBasicProject list restClient .getProjectClient().getAllProjects(); IterableBasicProject a list.get(); IteratorBasicProject it a.iterator(); while (it.hasNext()) { System.out.println(it.next()); } } finally { } } // 得到单一项目信息 private static void getProject(final JiraRestClient restClient, String porjectKEY) throws InterruptedException, ExecutionException { try { Project project restClient.getProjectClient() .getProject(porjectKEY).get(); System.out.println(project); } finally { } } // 得到单一问题信息 private static void getIssue(final JiraRestClient restClient, String issueKEY) throws InterruptedException, ExecutionException { try { PromiseIssue list restClient.getIssueClient() .getIssue(issueKEY); Issue issue list.get(); System.out.println(issue); } finally { } } // 创建问题 public static BasicIssue createIssue(final JiraRestClient jiraRestClient, IssueInput newIssue) { BasicIssue basicIssue jiraRestClient.getIssueClient() .createIssue(newIssue).claim(); return basicIssue; } //添加备注到问题 public static void addCommentToIssue(final JiraRestClient jiraRestClient,Issue issue, String comment) { IssueRestClient issueClient jiraRestClient.getIssueClient(); issueClient.addComment(issue.getCommentsUri(), Comment.valueOf(comment)).claim(); } //删除问题目前找不到对应API public static void deleteIssue(final JiraRestClient jiraRestClient, Issue issue) { IssueRestClient issueClient jiraRestClient.getIssueClient(); //issueClient.deleteIssue(issue.getKey(), false).claim(); } //通过标题获取问题 public static Iterable findIssuesByLabel(final JiraRestClient jiraRestClient, String label) { SearchRestClient searchClient jiraRestClient.getSearchClient(); String jql labels%3Dlabel; com.atlassian.jira.rest.client.domain.SearchResult results ((SearchRestClient) jiraRestClient).searchJql(jql).claim(); return results.getIssues(); } //通过KEY获取问题 public static Issue findIssueByIssueKey(final JiraRestClient jiraRestClient, String issueKey) { SearchRestClient searchClient jiraRestClient.getSearchClient(); String jql issuekey \ issueKey \; SearchResult results searchClient.searchJql(jql).claim(); return (Issue) results.getIssues().iterator().next(); } // 创建问题 仅有简单问题名称 private static void addIssue(final JiraRestClient restClient, String porjectKEY, String issueName) throws InterruptedException, ExecutionException { try { IssueInputBuilder builder new IssueInputBuilder(porjectKEY, TASK_TYPE_ID, issueName); builder.setDescription(issue description); final IssueInput input builder.build(); try { // create issue final IssueRestClient client restClient.getIssueClient(); final BasicIssue issue client.createIssue(input).claim(); final Issue actual client.getIssue(issue.getKey()).claim(); System.out.println(actual); } finally { if (restClient ! null) { // restClient.close(); } } } finally { } } // 创建问题 包含自定义字段 private static void addIssueComplex(final JiraRestClient restClient, String porjectKEY, String issueName) throws InterruptedException, ExecutionException { try { IssueInputBuilder builder new IssueInputBuilder(porjectKEY, TASK_TYPE_ID, issueName); builder.setDescription(issue description); // builder.setFieldValue(priority, ComplexIssueInputFieldValue.with(name, PRIORITY)); //单行文本 builder.setFieldValue(customfield_10042, 单行文本测试); //单选字段 builder.setFieldValue(customfield_10043, ComplexIssueInputFieldValue.with(value, 一般)); //数值自定义字段 builder.setFieldValue(customfield_10044, 100.08); //用户选择自定义字段 builder.setFieldValue(customfield_10045, ComplexIssueInputFieldValue.with(name, admin)); //用户选择自定义字段(多选) MapString, Object user1 new HashMapString, Object(); user1.put(name, admin); MapString, Object user2 new HashMapString, Object(); user2.put(name, wangxn); ArrayList peoples new ArrayList(); peoples.add(user1); peoples.add(user2); builder.setFieldValue(customfield_10047, peoples); //设定父问题 MapString, Object parent new HashMapString, Object(); parent.put(key, FEEDBACK-25); FieldInput parentField new FieldInput(parent, new ComplexIssueInputFieldValue(parent)); builder.setFieldInput(parentField); final IssueInput input builder.build(); try { final IssueRestClient client restClient.getIssueClient(); final BasicIssue issue client.createIssue(input).claim(); final Issue actual client.getIssue(issue.getKey()).claim(); System.out.println(actual); } finally { if (restClient ! null) { // restClient.close(); } } } finally { } } //获取问题的所有字段 private static void getIssueFields(final JiraRestClient restClient, String issueKEY) throws InterruptedException, ExecutionException { try { PromiseIssue list restClient.getIssueClient() .getIssue(issueKEY); Issue issue list.get(); IterableField fields issue.getFields(); IteratorField it fields.iterator(); while (it.hasNext()) { System.out.println(it.next()); } } finally { } } } 转载于:https://www.cnblogs.com/antime/p/9437880.html