使用Rally的rest api,我如何查询以找到用户的电子邮件地址?
例如,我使用以下查询来获取一个缺陷,其中包含打开它的用户和拥有该缺陷的用户的全名:
QueryRequest defectRequest = new QueryRequest("defect");
defectRequest.setFetch(new Fetch("Project", "LastUpdateDate", "FormattedId"));
defectRequest.setQueryFilter(new QueryFilter("Project.Name", "=", rallyProjectName).and(new QueryFilter("LastUpdateDate", ">", defectTimestamp.getTimestamp())));
QueryResponse projectDefects = rallyApi.query(defectRequest);现在我想从缺陷中获取提交者和所有者用户,并获得他们的电子邮件地址。
发布于 2012-09-05 09:10:26
确保在获取缺陷时包含字段"Owner“和"SubmittedBy”:
defectRequest.setFetch(new Fetch("Project", "LastUpdateDate", "FormattedId", "Owner", "SubmittedBy"));然后,每个返回的缺陷上的Owner和SubmittedBy字段(如果在Rally中填充并且不为空)将具有对Rally中相应的User对象的引用。那么你倾向于为此做第二个请求是正确的。最简单的方法就是使用该引用并直接对该引用执行GetRequest。下面是关于Owner字段的示例(请原谅笨拙的try/catch块-它正在捕获空的Owner字段):
QueryResponse projectDefects = restApi.query(defectRequest);
if (projectDefects.wasSuccessful()) {
for (JsonElement result : projectDefects.getResults()) {
JsonObject defect = result.getAsJsonObject();
try {
JsonObject ownerJsonObject = defect.get("Owner").getAsJsonObject();
String ownerRef = ownerJsonObject.get("_ref").getAsString();
GetRequest ownerRequest = new GetRequest(ownerRef);
GetResponse ownerResponse = restApi.get(ownerRequest);
JsonObject ownerObj = ownerResponse.getObject();
System.out.println(String.format("Read owner. EmailAddress = %s",
ownerObj.get("EmailAddress").getAsString()));
} catch (java.lang.IllegalStateException ise) {
// System.out.println("IllegalStateException caught: ");
// ise.printStackTrace();
}
}
}https://stackoverflow.com/questions/12271990
复制相似问题