I have been using the same code IssueEventListener on all my projects. I think event listeners are not stable.
This code works great on my small local jira instance but it does not catch all issue events on big jira instances, but catches on some events.
@Component
public class IssueEventListener implements InitializingBean, DisposableBean {
@JiraImport private final EventPublisher eventPublisher; private static final Logger log = LoggerFactory.getLogger(IssueEventListener.class); @Autowired public IssueEventListener(@ComponentImport EventPublisher eventPublisher) { this.eventPublisher = eventPublisher; } /** * Called when the plugin has been enabled. * @throws Exception */ @Override public void afterPropertiesSet() throws Exception { log.info("Enabling plugin"); eventPublisher.register(this); } /** * Called when the plugin is being disabled or removed. * @throws Exception */ @Override public void destroy() throws Exception { log.info("Disabling plugin"); eventPublisher.unregister(this); } @EventListener public void onIssueEvent(IssueEvent issueEvent) throws GenericEntityException { log.error("--------------"); log.error("--------------"); log.error("onIssueEvent- " +issueEvent.getIssue()); log.error("--------------"); log.error("--------------"); List<GenericValue> childChangeItem = issueEvent.getChangeLog().getRelated("ChildChangeItem"); List<Attachment> attachments = new ArrayList<>(); MutableIssue issue = (MutableIssue) issueEvent.getIssue(); childChangeItem.stream() // if sth changes .filter(genericValue -> genericValue.getString("field").equalsIgnoreCase("attachment")) .forEach(genericValue -> { log.error("attachment stream running - "); }); }
}
Also I realized this log in the log file.
2020-12-31 11:59:58,315+0300 http-nio-8080-exec-18 ERROR AR430628 719x1644012x1 jabmob 31.145.1.146,10.248.198.122 /servicedesk/customer/portal/5/create/211 [c.a.event.internal.AsynchronousAbleEventDispatcher] There was an excep
tion thrown trying to dispatch event [com.atlassian.jira.event.issue.IssueEvent@67eda7fb[issue=SM-11489,comment=<null>,worklog=<null>,changelog=<null>,eventTypeId=1,sendMail=true,params={eventsource=workflow, baseurl=https://dig
iport.arcelik.com},subtasksUpdated=false,spanningOperation=Optional.empty]] from the invoker [SingleParameterMethodListenerInvoker{method=public void com.veniture.jira.controller.IssueEventListener.onIssueEvent(com.atlassian.jir
a.event.issue.IssueEvent) throws org.ofbiz.core.entity.GenericEntityException, listener=com.veniture.jira.controller.IssueEventListener@47f28a8e}]
java.lang.RuntimeException: Listener: com.veniture.jira.controller.IssueEventListener event: com.atlassian.jira.event.issue.IssueEvent
at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:52)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.lambda$null$0(AsynchronousAbleEventDispatcher.java:37)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:85)
at com.atlassian.event.internal.LockFreeEventPublisher$Publisher.dispatch(LockFreeEventPublisher.java:220)
at com.atlassian.event.internal.LockFreeEventPublisher.publish(LockFreeEventPublisher.java:96)
at com.atlassian.jira.event.issue.DefaultIssueEventManager.publishEventIfNotificationsAreEnabled(DefaultIssueEventManager.java:180)
at com.atlassian.jira.event.issue.DefaultIssueEventManager.publishEvent(DefaultIssueEventManager.java:162)
at com.atlassian.jira.event.issue.DefaultIssueEventManager.publishAsRedundant(DefaultIssueEventManager.java:204)
at com.atlassian.jira.event.issue.DefaultIssueEventManager.dispatchRedundantEvent(DefaultIssueEventManager.java:101)
at com.atlassian.jira.workflow.function.event.FireIssueEventFunction.execute(FireIssueEventFunction.java:62)
at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:1014)
at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1407)
at com.opensymphony.workflow.AbstractWorkflow.initialize(AbstractWorkflow.java:606)
at com.atlassian.jira.workflow.OSWorkflowManager.createIssue(OSWorkflowManager.java:754)
at com.atlassian.jira.issue.managers.DefaultIssueManager.createIssue(DefaultIssueManager.java:592)
at com.atlassian.jira.issue.managers.DefaultIssueManager.createIssue(DefaultIssueManager.java:501)
at com.atlassian.jira.issue.managers.RequestCachingIssueManager.createIssue(RequestCachingIssueManager.java:195)
at com.atlassian.jira.bc.issue.DefaultIssueService.create(DefaultIssueService.java:256)
at com.atlassian.jira.bc.issue.DefaultIssueService.create(DefaultIssueService.java:224)
... 2 filtered
at java.lang.reflect.Method.invoke(Method.java:498)
at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
at com.sun.proxy.$Proxy188.create(Unknown Source)
... 2 filtered