Reputation: 24482
I'm implementing a Jira Server plugin with a listener that captures every VersionReleaseEvent:
@EventListener
public void onVersionReleaseEvent(VersionReleaseEvent versionReleaseEvent) {
log.info("#### onVersionReleaseEvent {}", versionReleaseEvent);
}
I need to know which issues are included in that versionRelease, but the VersionReleaseEvent class doesn't include them. How can I access that information?
Upvotes: 2
Views: 153
Reputation: 24482
I finally managed to work this out, using JQL and 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());
...
}
Upvotes: 2