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