Hi,
I want to fire a custom event for a specific projects issue's creation.
To do that i create an event and trying to firing it from a plugin which i wrote.
I create this plugin because i need some arguments from the plugin's vm(view) and send these arguments to my listener where my business code is.
Here is my post-function execute method:
@SuppressWarnings("rawtypes")
public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException {
try {
fireCustomCreateIssueEvent(args, getIssue(transientVars));
} catch (Exception e) {
Utils.printError(e, log);
}
}Here is my firing an event method :
private void fireCustomCreateIssueEvent(Map args, Issue issue) throws Exception {
log.debug("*********************** Fire Custom Event Started ***********************");
log.debug("ISsue Key : " + issue.getKey());
log.debug("Selected Arguments " + args.toString());
long customCreateIssueEvent = 10003;
EventType eventType = ComponentAccessor.getEventTypeManager().getEventType(customCreateIssueEvent);
log.debug("Event name : " + eventType.getName() + " id : " + eventType.getId());
this.superUser = ComponentAccessor.getUserManager().getUserByName((String) args.get(Constants.USERNAME));
IssueEventManager issueEventManager = ComponentAccessor.getIssueEventManager();
IssueEventBundleFactory issueEventBundleFactory = (IssueEventBundleFactory) ComponentAccessor.getComponent(IssueEventBundleFactory.class);
IssueEvent issueEvent = new IssueEvent(issue, args, superUser, eventType.getId());
IssueEventBundle issueEventBundle = issueEventBundleFactory.wrapInBundle(issueEvent);
issueEventManager.dispatchEvent(issueEventBundle);
log.debug("*********************** Fire Custom Event Executed ***********************");
}
Here is my listener:
@EventListener
public void onIssueEvent(IssueEvent issueEvent) {
log.debug("******************** Event Listener Started ********************");
Long tekIssueCreatedEventId = Long.valueOf("10003");
Long eventTypeId = issueEvent.getEventTypeId();
Map args = issueEvent.getParams();
Issue issue = issueEvent.getIssue();
log.debug("Issue Event Type Id : " + eventTypeId);
log.debug("Event Arguments : " + args.toString());
log.debug("Issue Key : " + issue.getKey());
if(eventTypeId.equals(tekIssueCreatedEventId)) {
log.debug("***tek issue created event***");
foo(issue, args);
}
log.debug("******************** Event Listener Executed ********************");
}
Where do i wrong, can you help me please?