java 调用jira_java调用jira接口

http://www.cnblogs.com/starcrm/p/4837971.html

首先通过jira的wsdl(http://localhost:8080/rpc/soap/jirasoapservice-v2?wsdl)生成要引入的类

然后写客户端:

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 List 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(

Iterable 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 {

Promise> list = restClient

.getProjectClient().getAllProjects();

Iterable a = list.get();

Iterator 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 {

Promise 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%3D"+label;

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"));

//用户选择自定义字段(多选)

Map user1 = new HashMap();

user1.put("name", "admin");

Map user2 = new HashMap();

user2.put("name", "wangxn");

ArrayList peoples = new ArrayList();

peoples.add(user1);

peoples.add(user2);

builder.setFieldValue("customfield_10047", peoples);

//设定父问题

Map parent = new HashMap();

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 {

Promise list = restClient.getIssueClient()

.getIssue(issueKEY);

Issue issue = list.get();

Iterable fields = issue.getFields();

Iterator it = fields.iterator();

while (it.hasNext()) {

System.out.println(it.next());

}

} finally {

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度seo排名点击器app_百度SEO优化和百度竞价优缺点 - 百度整站排名

原出处:超级排名系统原文链接:百度SEO优化和百度竞价优缺点 - 超级排名系统SEO优化的优势:1、低价:在百度优化排名中,维持一年排名的成本可能只有一到两个月的竞价成本,这比竞价便宜得多,超级排…

html网页放大时文字不换行_WEB前端-html基础

一、介绍1、HTML概念HTML(Hypertext Mark-up Language)即超文本标记语言2.HTML特点HTML不需要编译,直接由浏览器执行HTML文件是一个文本文件HTML文件必须使用html或htm为文件名后缀HTML大小写不敏感,HTML与html一样3.HTML基础语法…

linux目录隐藏技术,Linux环境下的高级隐藏技术

摘要:本文深入分析了Linux环境下文件、进程及模块的高级隐藏技术,其中包括:Linux可卸载模块编程技术、修改内存映象直接对系统调用进行修改技术,通过虚拟文件系统proc隐藏特定进程的技术。隐藏技术在计算机系统安全中应用十分广泛…

python代替shell脚本_python的简洁是shell无法代替的

之前线上服务器分发配置都是用shell和expect脚本分发,脚本写了很长,上周换了ansible,现在自己用python写一个,就30行代码就可以实现需求,之前的shell写了快200行了,蛋疼,代码如下: f…

linux命令cp命令行参数,linux命令之cp命令参数及用法详解

cp (复制档案或目录)[rootlinux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[rootlinux ~]# cp [options] source1 source2 source3 …. directory参数:-a :相当于 -pdr 的意思;-d :若来源文件为连结文件的属性(link…

python电脑编程求圆的面积案例_学Python划重点七 网络编程(UPD Socket编程、上传文件实例、计算圆的面积实例)...

一、UPD Socket 编程 socket 对象中与UDP Socket 服务器编程有关的方法是bind() ,注意不需要listen() 和accept() , 这是因为UDP 通信不需要像TCP 一样监听端口,建立连接。 socket.recvfrom(buffsize) : 接收UDP Socket 数据&…

alert获取输入框内容_获取由 AlertDialog 生成的对话框中EditText的文本内容

在Android开发中,AlertDialog常用于处理用户的登录等。那么如何获取由 AlertDialog 生成的对话框中EditText的文本内容呢?其实Alertdialog弹出的Activity 可以认为是默认的Activity的子Activity。不能直接使用findViewById()来获取。强行使用会提示一个空…

linux中将 home目录备份成,6种优化Linux系统备份的应用与技巧

【51CTO.com快译】当转为使用Linux时,你可能会注意到你所使用的版本会带有一个默认的备份工具。然而,可能该工具并没有被设置好去备份你系统中所有重要的部分。而且,使用该默认工具也可能导致它以比预期更低的效率去产生一些更大的备份数据。…

db2嵌套查询效率_db2性能优化

性能优化概述DB2 的性能优化可以从三个方面分析:内存,CPU 和 I/O 。DB2 性能优化是一件较为复杂的综合性的工作 , 需要对问题的根源作全方位的探索和思考。同时也需要较深厚的数据库管理经验与优化知识。这对于初学者来说可能有些勉为其难。但是在很多情…

python数据分析函数大全_Python常用数据分析函数集合

1.Map函数 - 列表解析 ①.map()函数解析 (1).python源码信息C:\Users\ArSang>python Python3.6.3rc1 (v3.6.3rc1:d8c174a, Sep 19 2017, 16:39:51) [MSC v.1900 64bit (AMD64)] on win32 Type"help", "copyright", "credits" or "licens…

我的世界linux开服权限不足,我的世界路由器开服怎么获得超级管理员权限

我的世界路由器开服怎么获得超级管理员权限。小伙伴们使用路由器开服的时候会发现一个明显的问题,部分路由器并没有给你最高管理员的权限,导致大家开服的时候出现各种问题。那么路由器开服怎么才能快速获得超级管理员的权限呢?说明:为什么路…

python无法调用安装的包_如何使用python命令和安装包进行安装Django框架

在python语言的框架中,Django框架是一种Web应用框架,这个框架的版本需要跟python的版本搭配上。其中,Django框架可以使用命令安装,也可以使用下载压缩包进行安装。下面利用实例说明Django框架安装方法和过程,操作如下&…

vs传值接收页面怎么直接打开_VS2003传值

估计楼主应该是用了ORM,只知道定义泛型类,然后ORM自己就完成映射,具体怎么得到的数据,就不知道了.所以,请退回到旧时代,用DataTable传递数据.cmdText:这个是SQL查询语句;connStr:这个是数据库连接字符串.public static DataTable(string cmdText,string connStr){SqlConnection…

linux摄像头内核驱动开发,怎么在Linux下开发摄像头驱动

无根之木不活,无基之楼不立,无论是学习哪个领域知识,基础是重中之重。针对学习linux驱动,我们来仔细谈谈:个人认为C语言和数据结构就是重中之重!Linux系统最优秀的地方就在于内核。无论是进程调度&#xff…

idea卡顿的解决方法_lt;绝地求生/PUBG/解决卡顿方法(停机9小时)维护gt;9月16日(星期三) 08点30分amp;崩溃...

【正式服不停机维护公告】我们将在北京时间10月7日(星期三) 10点开始正式服的不停机维护。- 维护开始时间:10月7日(星期三) 10点 - 维护内容:优化服务器以及BUG修复1. 修复了在四排模式下队伍列表中无法显示队员的问题;2. 修复了警示胶带背包…

安装应用需要打开未知来源权限_打开安卓这个开关 不让流氓软件肆意妄为

1月21消息,国外媒体Cybernews曝光了数款存在安全隐患的安卓应用,从这些应用中我们发现大都是相机类应用。根据Cybernews的说法这些应用会寻求多项权限,而多数权限和应用本身功能并不相关。其实在国内这类软件也并不缺乏,他们通常会…

git for windows_手把手教会舍友玩 Git (包教包会,再也不用担心他的学习)

作 者: BWH_Steven 原文链接:https://www.cnblogs.com/ideal-20/p/13644420.html舍友长大想当程序员,我和他爷爷奶奶都可高兴了,写他最喜欢的喜之郎牌Git文章,学完以后,再也不用担心舍友的学习了(狗头)哪里…

合并的表格怎么加横线_word怎么合并表格边框

回答:方法如下:去掉Word文字保留表格的方法一:1、全选表格,按 Delet 键,表格的所有文字被删除,如图3所示:2、图3是图1所示是表格,文字都没有了。去掉Word文字保留表格的方法二:全选表…

Linux免设置路由端口映射,2014/04/01 演示中设置linux路由器、端口过滤的使用、路由设置...

2.linux主机做为路由器,具有数据转发和随机丢包的功能1.1.iptables 基于内核的防火墙1.2.编写防火墙设置的脚本及鸟哥的linux私房菜(服务器篇)linux 路由器的设置参考鸟哥的linux私房菜(服务器篇)使能数据包转发功能即可,linux内核本身就支持1.#cat /pro…

stotybord如何添加子视图_SQL复杂查询-子查询

视图:1.视图的概念引入:SQL数据库里面存放的是SQL语句,视图中查看到的SQL查询语句,当我们运用客户端连接到视图时候,视图会运行里面的查询语句,从库中查找出数据,保存在临时表里面。当客户端和数…