我正在使用一个捕获每个VersionReleaseEvent的侦听器来实现Jira Server插件:
@EventListener
public void onVersionReleaseEvent(VersionReleaseEvent versionReleaseEvent) {
log.info("#### onVersionReleaseEvent {}", versionReleaseEvent);
}
我需要知道那个版本发布中包含哪些问题,但是VersionReleaseEvent类不包含它们。我如何访问该信息?
我终于设法使用JQL和SearchService
来解决这个问题:
@Component
public class ReleaseVersionListener implements InitializingBean, DisposableBean {
private static final Logger log = LoggerFactory.getLogger(ReleaseVersionListener.class);
@JiraImport
private final EventPublisher eventPublisher;
@JiraImport
private SearchService searchService;
@JiraImport
private JiraAuthenticationContext jiraAuthenticationContext;
@ComponentImport
private final PluginSettingsFactory pluginSettingsFactory;
private final RestTemplate restTemplate = new RestTemplate();
@Autowired
public ReleaseVersionListener(EventPublisher eventPublisher, JiraAuthenticationContext jiraAuthenticationContext, PluginSettingsFactory pluginSettingsFactory,
SearchService searchService) {
this.eventPublisher = eventPublisher;
this.pluginSettingsFactory = pluginSettingsFactory;
this.searchService = searchService;
this.jiraAuthenticationContext = jiraAuthenticationContext;
}
@EventListener
public void onVersionReleaseEvent(VersionReleaseEvent versionReleaseEvent) {
log.info("#### onVersionReleaseEvent {}", versionReleaseEvent);
String projectId = versionReleaseEvent.getVersion().getProject().getName();
ApplicationUser loggedInUser = jiraAuthenticationContext.getLoggedInUser();
JqlClauseBuilder jqlClauseBuilder = JqlQueryBuilder.newClauseBuilder();
Query query = jqlClauseBuilder.fixVersion().in().functionReleasedVersions(projectId).buildQuery();
PagerFilter<?> pagerFilter = PagerFilter.getUnlimitedFilter();
try {
SearchResults results = searchService.search(loggedInUser, query, pagerFilter);
List<Issue> issues = results.getIssues();
List<Issue> releasedIssues = issues.stream()
.filter(i -> i.getFixVersions().iterator().next().getName().equalsIgnoreCase(versionReleaseEvent.getVersion().getName()))
.collect(Collectors.toList());
...
}