我正在创建Rally Build Records作为TeamCity to Rally集成的一部分,但却存在将Build与ChangeSet相关联的问题。
我找到一组与特定条件匹配的相关ChangeSet,并将它们放在String数组中。然后我创建一个JsonArray对象,将这些“_ref”字符串作为JsonPrimatives添加到Array中,将该数组添加到我的create Json对象并将其添加到Rally。
然而,发生的是构建已创建,但结果有一个空的Changeset数组。
我已尝试在createRequest中包含更改集并执行updateRequest但在两种情况下响应都是SUCCESS,没有报告错误或警告,并且Changeset数组返回为null并且重新查询将所有其他数据显示为预期但changeSet数组为空。
这是代码。
JsonObject obj = new JsonObject();
obj.addProperty("Workspace", def.getWorkspace().getRef());
obj.addProperty("Duration",1.05);
obj.addProperty("Message", "Master 4683 Success");
obj.addProperty("Start", isoFormat.format(new Date()));
obj.addProperty("Status","SUCCESS");
obj.addProperty("Number","4683");
obj.addProperty("Uri", "http://");
obj.addProperty("BuildDefinition",def.getRef());
// changeSets is a ArrayList<String> of "_ref" strings of VALID changesets references.
if (changeSets != null && changeSets.size() > 0) {
JsonArray changeSetList = new JsonArray();
for (String id : changeSets) {
changeSetList.add(new JsonPrimitive(id));
}
obj.add("Changesets", changeSetList);
}
String ref = connector.Create("Build",obj);
connector.Delete(ref, null);
有什么想法吗?
答案 0 :(得分:1)
我的想法是,不是用JsonPrimitive只填充ref的值来填充你的JsonArray,而是实际上需要一个JsonObject,其键/值对为{“_ ref”,“/ changeset/12345678910.js”}。 I.E.进行类似以下的更改:
// changeSets is a ArrayList<String> of "_ref" strings of VALID changesets references.
if (changeSets != null && changeSets.size() > 0) {
JsonArray changeSetList = new JsonArray();
for (String id : changeSets) {
JsonObject thisChangeset = new JsonObject();
thisChangeset.addProperty("_ref", id);
changeSetList.add(thisChangeset);
}
obj.add("Changesets", changeSetList);
}
我相信您的代码应该按预期工作。