博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用uwolfer gerrit-rest-java-client获取Gerrit信息
阅读量:7084 次
发布时间:2019-06-28

本文共 4997 字,大约阅读时间需要 16 分钟。

使用uwolfer gerrit-rest-java-client获取Gerrit信息

使用Gerrit来做代码管理工具的话,难免要调用Gerrit的API。

Gerrit rest api

我们来看个例子,体会下gerrit rest api的交互过程:

请求如下, changes是API,q字符串想必gerrit的用户是熟悉的,n是限定个数:

GET /changes/?q=status:open+is:watched&n=2 HTTP/1.0

响应信息例:

HTTP/1.1 200 OK  Content-Disposition: attachment  Content-Type: application/json; charset=UTF-8  )]}'  [    {      "id": "demo~master~Idaf5e098d70898b7119f6f4af5a6c13343d64b57",      "project": "demo",      "branch": "master",      "change_id": "Idaf5e098d70898b7119f6f4af5a6c13343d64b57",      "subject": "One change",      "status": "NEW",      "created": "2012-07-17 07:18:30.854000000",      "updated": "2012-07-17 07:19:27.766000000",      "mergeable": true,      "insertions": 26,      "deletions": 10,      "_number": 1756,      "owner": {        "name": "John Doe"      },    },    {      "id": "demo~master~I09c8041b5867d5b33170316e2abc34b79bbb8501",      "project": "demo",      "branch": "master",      "change_id": "I09c8041b5867d5b33170316e2abc34b79bbb8501",      "subject": "Another change",      "status": "NEW",      "created": "2012-07-17 07:18:30.884000000",      "updated": "2012-07-17 07:18:30.885000000",      "mergeable": true,      "insertions": 12,      "deletions": 18,      "_number": 1757,      "owner": {        "name": "John Doe"      },      "_more_changes": true    }  ]

gerrit的网站上有Rest API的指南和文档。指南:,文档:

uwolfer gerrit rest java client

我们要编程调用gerrit api时发现,光是pojo对象就得写好多。这样例行公事的工作当然是交给开源库来实现最划算了。

比如我们可以使用 uwolfer gerrit rest java client.

引入依赖

大家的后端工程应该是使用maven管理的,我们就先引入maven依赖:

com.urswolfer.gerrit.client.rest
gerrit-rest-java-client
0.8.16

鉴权

下一步我们就可以调用gerrit-rest-java-client封装的API来调用gerrit rest api了。

首先要鉴权,记得gerrit的设置中有一项是HTTP password么,这里就该它发挥作用了。

GerritRestApiFactory gerritRestApiFactory = new GerritRestApiFactory();        GerritAuthData.Basic authData = new GerritAuthData.Basic("http://gerrit网址", "用户名", "HTTP password");        GerritApi gerritApi = gerritRestApiFactory.create(authData);

访问gerrit数据

鉴权成功之后,我们就可以通过gerritApi为所欲为了。

例1,查询10个status为merged的change:

List
changes = gerritApi.changes().query("status:merged").withLimit(10).get(); for (ChangeInfo ci : changes) { System.out.println("Change ID:"+ci.changeId); System.out.println("Project:"+ci.project); System.out.println("Branch:"+ci.branch); System.out.println("Subject:"+ci.subject); System.out.println("======================="); }

运行例:

Change ID:I5c490fba0f109824ae5c5cd91e7222787da9f41dProject:xxxBranch:yyySubject:zzz

例2,遍历当前gerrit下都有些什么工程

List
projects = gerritApi.projects().list().get(); for (ProjectInfo pi: projects){ System.out.println(pi.name); System.out.println(pi.description); System.out.println("~~~~~~~~~~~~~~"); }

输出例:

code/device/asus/fugunull

code/device/asus/fugu-kernel

null

code/device/commonnull

code/device/coolpad/common

null

完整代码

下面是上面两例的完整代码:

pom.xml:

4.0.0
cn.alios.basic.test
TestGerrit3
1.0.0-SNAPSHOT
com.urswolfer.gerrit.client.rest
gerrit-rest-java-client
0.8.16

Java代码:

package cn.alios.basic.tools;import com.google.gerrit.extensions.api.GerritApi;import com.google.gerrit.extensions.common.ChangeInfo;import com.google.gerrit.extensions.common.ProjectInfo;import com.google.gerrit.extensions.restapi.RestApiException;import com.urswolfer.gerrit.client.rest.GerritAuthData;import com.urswolfer.gerrit.client.rest.GerritRestApiFactory;import java.util.List;public class TestGerrit {    public static void main(String[] args) {        GerritRestApiFactory gerritRestApiFactory = new GerritRestApiFactory();        GerritAuthData.Basic authData = new GerritAuthData.Basic("http://gerrit.com", "user", "HttpPassword");        GerritApi gerritApi = gerritRestApiFactory.create(authData);        try {            List
changes = gerritApi.changes().query("status:merged").withLimit(10).get(); for (ChangeInfo ci : changes) { System.out.println("Change ID:"+ci.changeId); System.out.println("Project:"+ci.project); System.out.println("Branch:"+ci.branch); System.out.println("Subject:"+ci.subject); System.out.println("======================="); } List
projects = gerritApi.projects().list().get(); for (ProjectInfo pi: projects){ System.out.println(pi.name); System.out.println(pi.description); System.out.println("~~~~~~~~~~~~~~"); } } catch (RestApiException e) { e.printStackTrace(); } }}

转载地址:http://pbwql.baihongyu.com/

你可能感兴趣的文章
按时提醒win32提醒,无窗口
查看>>
FreeBSD6.2 java web环境搭建
查看>>
iptables filter表小案例,iptables nat表应用
查看>>
python3迭代器和生成器
查看>>
linux 不能上网,可以ping通宿主机,网关
查看>>
lamp安装
查看>>
python学习资料,不断更新。。。。
查看>>
关于部分编译器out_of_range报错的解决
查看>>
CTF之MD5相等值不相等
查看>>
使用Google Authenticator给ssh进行登录验证
查看>>
Python35安装
查看>>
迅雷,快车,旋风链接编码解码C#源代码
查看>>
就这样了吗?
查看>>
IOS性能调优系列:使用Zombies动态分析内存中的僵尸对象
查看>>
基于Samba和NFS简单实现Mariadb服务示例
查看>>
magic潮牌内衣品牌×××,家居服×××欢迎您
查看>>
Zend Framework Deployment
查看>>
RHEL 6.6 虚拟化新特性
查看>>
[培训]薛大龙@北京首体宾馆(2008.10.31-11.2)
查看>>
网络营销第六课(8):SEO搜索引擎优化(长尾关键词)
查看>>