使用uwolfer gerrit-rest-java-client获取Gerrit信息
使用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 OKContent-Disposition: attachmentContent-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的指南和文档。指南:https://gerrit-review.googlesource.com/Documentation/dev-rest-api.html,文档:https://gerrit-review.googlesource.com/Documentation/rest-api.html
uwolfer gerrit rest java client
我们要编程调用gerrit api时发现,光是pojo对象就得写好多。这样例行公事的工作当然是交给开源库来实现最划算了。
比如我们可以使用 uwolfer gerrit rest java client.
引入依赖
大家的后端工程应该是使用maven管理的,我们就先引入maven依赖:
<dependencies><dependency><groupId>com.urswolfer.gerrit.client.rest</groupId><artifactId>gerrit-rest-java-client</artifactId><version>0.8.16</version></dependency>
</dependencies>
鉴权
下一步我们就可以调用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<ChangeInfo> 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:I5c490fba0f109824ae5c5cd91e7222787da9f41d
Project:xxx
Branch:yyy
Subject:zzz
例2,遍历当前gerrit下都有些什么工程
List<ProjectInfo> 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/fugu
null
~~~~~~~~~~~~~~
code/device/asus/fugu-kernel
null
~~~~~~~~~~~~~~
code/device/common
null
~~~~~~~~~~~~~~
code/device/coolpad/common
null
~~~~~~~~~~~~~~
完整代码
下面是上面两例的完整代码:
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.alios.basic.test</groupId><artifactId>TestGerrit3</artifactId><version>1.0.0-SNAPSHOT</version>
<dependencies><dependency><groupId>com.urswolfer.gerrit.client.rest</groupId><artifactId>gerrit-rest-java-client</artifactId><version>0.8.16</version></dependency>
</dependencies></project>
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<ChangeInfo> 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<ProjectInfo> 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();}}
}
使用uwolfer gerrit-rest-java-client获取Gerrit信息相关推荐
- java 获取远程服务器信息,java 远程获取服务器信息
java 远程获取服务器信息 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...
- java 获取apk版本号_纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限...
[实例简介] 纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限... 代码讲解地址:http://blog.csdn.net/chillax_li/article/details/4185 ...
- java微信获取用户信息接口_java微信接口之二—获取用户组
一.微信获取用户组接口简介 1.请求 该请求也是GET方式请求.请求的url格式如下: https://api.weixin.qq.com/cgi-bin/groups/get?access_toke ...
- java反射获取泛型_如何通过Java反射获取泛型类型信息
前言 关于Java泛型,很多人都有一个误解,认为Java代码在编译时会擦除泛型的类型,从而在运行时导致没法访问其类型,这其实并不完全正确,因为有一部分泛型信息是可以在运行时动态获取的,这部分信息基本能 ...
- JAVA中获取字段信息的方法
一.JDBC之DatabaseMetaData之获取表信息以及列信息 (1) DatabaseMetaData实例的获取 Connection conn = DriverManager.getCon ...
- Java 反射 ---- 获取方法信息
这一章我们通过Java的反射获取某个类的全部信息,话不多说直接上代码. 先贴工具类获取类信息的方法: package com.wangjd;import java.lang.reflect.Metho ...
- java微信获取用户信息_SpringBoot中获取微信用户信息的方法
前言 不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息.获取用户信息就是获取公众号下微信用户的信息,今天我就来讲讲如何从公众号下获取微信用户信息. 需要 ...
- java ipmi 获取服务器硬件信息(温度,风扇转速,内存数,硬盘数等等)
本文通过vxipmi.jar获取 官方地址:http://www.veraxsystems.com/en/products/free-ipmi-library-java import java.net ...
- java mbean获取堆信息_实时取得虚拟机类信息、内存信息、MXBean的使用方法
import java.lang.management.ClassLoadingMXBean; import java.lang.management.ManagementFactory; impor ...
- java代码获取gc信息,如何监视Java垃圾回收
在文章<理解Java垃圾收集>中,我们了解了不同GC算法的流程,GC的工作方式,年轻代和年老代,以及您应该了解的新JDK 7中5种类型的GC的知识.这些类型的GC对性能都有影响. 本文将讨 ...
最新文章
- Vsftpd 服务器 问题大全
- iphone导出照片到电脑_如何把 iPhone 中的照片快速传到电脑上?
- nyoj 133 子序列(尺取法+离散化)
- [SAP成都] SAP UI5应用的sap-ui-core.js被加载之前,还有哪些js文件被加载了
- 三菱plc编程实例3000_三菱入门PLC编程PLC系统程序包括哪些
- 【学习笔记】整体二分
- 什么是JAX-RS注释? (第2部分)
- 交换机开发(四)—— ARP 基础知识解析
- Amazon Seller Central is Temporarily Unavailable
- django 1.8 官方文档翻译: 3-1-2 编写视图
- 数据结构笔记(十七)--矩阵的压缩存储
- 今天下午又是在教室里坐了一个下午,头有点晕
- 云计算服务器搭建教程,如何搭建云计算平台_搭建云计算平台步骤
- 新点软件怎么导入清单_新点造价软件的QDZ招投标清单使用说明
- 《新型智慧城市总体规划导则》发布
- 深入理解 Base64 底层原理
- 金融工程学(一):概述
- java实现gif动画效果(java显示动态图片)
- Azkaban配置Work Flow案例实操
- 安装pyltp模块详细教程(windows下python安装)
热门文章
- idea注释模板:类注释模板、方法注释模板(带参数获取以及参数换行)
- 日常用语--生病看医生
- 视频水平翻转怎么操作 多个视频教你一键搞定批量剪辑
- Python中嵌套循环练习
- QFile修改替换文件中特定的内容
- 芙拉机器人_【诉说实情】芙拉迷你简约纯色锁扣单肩斜挎包女士怎么样?真实使用心得,不看后悔 | 智能扫地机器人评测...
- 解决webstorm的中文乱码两中方法
- php实现丑数,曾经绊倒我的 “超级丑数”
- Ant Design Pro 中 ProTable受控菜单 class类 与 构造函数
- 为什么中国长期在科学领域少有重大建树 -关于钱学森之问 的回答