[捕获VersionReleaseEvent时如何从发行版(修复版本)获取问题列表

问题描述 投票:2回答:1

我正在使用一个捕获每个VersionReleaseEvent的侦听器来实现Jira Server插件:

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

我需要知道那个版本发布中包含哪些问题,但是VersionReleaseEvent类不包含它们。我如何访问该信息?

enter image description here

jira jira-plugin
1个回答
1
投票

我终于设法使用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());
        ...
    }

© www.soinside.com 2019 - 2024. All rights reserved.