我正在使用JIRA插件sdk处理已更改的问题。
我已经实现了IssueListener,并且可以访问Issue本身和IssueEvent。
如何确定我的问题的哪个属性(摘要,描述,估计...)已更改?
更改日志可能包含已更改的内容,并且IssueEvent对象上有一个方法可以获取此内容(getChangeLog
),并返回GenericValue对象。
Atlassian Answers网站上的这篇文章提供了一些与Atlassian教程有关的代码,这些教程介绍了如何编写JIRA事件监听器。
相关代码段如下所示:
if (eventTypeId.equals(EventType.ISSUE_UPDATED_ID)) {
List<GenericValue> changeItems = null;
try {
GenericValue changeLog = issueEvent.getChangeLog();
changeItems = changeLog.internalDelegator.findByAnd("ChangeItem", EasyMap.build("group",changeLog.get("id")));
} catch (GenericEntityException e){
System.out.println(e.getMessage());
}
log.info("number of changes: {}",changeItems.size());
for (Iterator<GenericValue> iterator = changeItems.iterator(); iterator.hasNext();){
GenericValue changetemp = (GenericValue) iterator.next();
String field = changetemp.getString("field");
String oldstring = changetemp.getString("oldstring");
String newstring = changetemp.getString("newstring");
StringBuilder fullstring = new StringBuilder();
fullstring.append("Issue ");
fullstring.append(issue.getKey());
fullstring.append(" field ");
fullstring.append(field);
fullstring.append(" has been updated from ");
fullstring.append(oldstring);
fullstring.append(" to ");
fullstring.append(newstring);
log.info("changes {}", fullstring.toString());
/* Do something here if a particular field you are
looking for has being changed.
*/
if(field == "Component") changeAssignee(changetemp, issue, user);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句