JIRA Plugins SDK: как узнать измененные данные?

Я использую JIRA plugins sdk для работы с измененными проблемами.

Я реализовал IssueListener, и у меня есть доступ к самой проблеме и к IssueEvent.

Как узнать, какое свойство (резюме, описание, оценка...) моей проблемы было изменено?


person Breiti    schedule 13.08.2015    source источник


Ответы (1)


Журнал изменений, вероятно, содержит то, что было изменено, и в объекте 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);
    }
}
person Sam    schedule 20.08.2015