Как получить список проблем из выпуска (исправления версии) при захвате VersionReleaseEvent - PullRequest
2 голосов
/ 25 марта 2020

Я реализую подключаемый модуль Jira Server с прослушивателем, который захватывает каждое VersionReleaseEvent:

@EventListener
public void onVersionReleaseEvent(VersionReleaseEvent versionReleaseEvent) {
    log.info("#### onVersionReleaseEvent {}", versionReleaseEvent);
}

Мне нужно знать, какие проблемы включены в этот versionRelease, но класс VersionReleaseEvent их не включает. Как я могу получить доступ к этой информации?

enter image description here

1 Ответ

2 голосов
/ 26 марта 2020

Мне, наконец, удалось решить это, используя 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());
        ...
    }

...