У меня есть плагин Jira, которому необходимо прослушать IssueEvent
s и ответить на различные переходы статуса (как в разделе «Делать -> Выполняется», «Выполняется» -> Готово "и т. Д.). В большинстве случаев выполнение этого требует знания как текущего, так и предыдущего статуса выпуска. Однако нет очевидного API для получения последнего бита информации из IssueEvent
.Получить статус предыдущей версии в обработчике событий (Jira 7.x)
Моя установка довольно проста:
@Named("myEventListener")
public class JiraChangeListener implements InitializingBean, DisposableBean {
@ComponentImport
private final EventPublisher eventPublisher;
@ComponentImport
private final CustomFieldManager fieldManager;
@ComponentImport
private final IssueManager issueManager;
@Inject
public JiraChangeListener(EventPublisher publisher, CustomFieldManager fieldManager, IssueManager issueManager) {
this.eventPublisher = publisher;
this.fieldManager = fieldManager;
this.issueManager = issueManager;
}
@EventListener
public void onIssueEvent(IssueEvent event) {
Issue issue = event.getIssue();
long eventType = event.getEventTypeId();
String issueStatus = issue.getStatusId(); //the *current* issue status
//[read various internal plugin settings]
//now handle the event
if (eventType == EventType.ISSUE_CREATED_ID) {
//triggered upon creation; we don't need the old status here
if (apiAvailable && issueStatus.equals(triggerStatus)) {
//we can do stuff (apiAvailable) and we should do stuff (issueStatus == triggerStatus)
doStuff(issue);
}
}
else if (eventType == EventType.ISSUE_GENERICEVENT_ID) {
//triggered upon any status transition (and possibly other actions);
//need to see if the status has actually been modified
String oldStatus = [???]; //FIXME: need to get the previous status here
boolean statusChanged = ! issueStatus.equals(oldStatus);
if (apiAvailable && statusChanged && issueStatus.equals(triggerStatus)) {
//we can do stuff (apiAvailable && statusChanged) and we should do stuff (issueStatus == triggerStatus)
doStuff(issue);
}
}
}
}
Так что единственный улов с линией, которая идет:
String oldStatus = [???];
Что правильный способ программно получить предыдущее состояние этого вопроса, либо иным образом определить, что событие получено , потому что статус вопроса изменился?
Обратите внимание, что я работаю с Jira 7.x. Поддержка предыдущих версий Jira не вызывает беспокойства.