String result = String.valueOf(context.getResult()); args = new Object[] {
String result = String.valueOf(context.getResult()); args = new Object[] {
public void jobWasExecuted (@Nonnull final JobExecutionContext aContext, final JobExecutionException aJobException) { final Object aResult = aContext.getResult (); final long nRuntimeMilliSecs = aContext.getJobRunTime (); final String sMsg = "Job was executed: " + getJobName (aContext) + (aResult == null ? "" : "; result=" + aResult) + "; duration=" + nRuntimeMilliSecs + "ms"; if (aJobException == null) s_aLogger.info (sMsg); else s_aLogger.error (sMsg, aJobException); } }
@Override protected void populateInitialHeaders(Map<String, Object> map) { super.populateInitialHeaders(map); if (jobExecutionContext != null) { map.put("calendar", jobExecutionContext.getCalendar()); map.put("fireTime", jobExecutionContext.getFireTime()); map.put("jobDetail", jobExecutionContext.getJobDetail()); map.put("jobInstance", jobExecutionContext.getJobInstance()); map.put("jobRunTime", jobExecutionContext.getJobRunTime()); map.put("mergedJobDataMap", jobExecutionContext.getMergedJobDataMap()); map.put("nextFireTime", jobExecutionContext.getNextFireTime()); map.put("previousFireTime", jobExecutionContext.getPreviousFireTime()); map.put("refireCount", jobExecutionContext.getRefireCount()); map.put("result", jobExecutionContext.getResult()); map.put("scheduledFireTime", jobExecutionContext.getScheduledFireTime()); map.put("scheduler", jobExecutionContext.getScheduler()); Trigger trigger = jobExecutionContext.getTrigger(); map.put("trigger", trigger); map.put("triggerName", trigger.getName()); map.put("triggerGroup", trigger.getGroup()); } }
protected Map<String, Serializable> buildMapContext(final JobExecutionContext context) { final JobDetail jobDetail = context.getJobDetail(); final Trigger trigger = context.getTrigger(); final TriggerKey triggerKey = trigger.getKey(); final JobKey jobKey = jobDetail.getKey(); final Map<String, Serializable> mapContext = new HashMap<String, Serializable>(); mapContext.put(AbstractBonitaJobListener.BOS_JOB, getBosJob(context)); mapContext.put(AbstractBonitaJobListener.JOB_DESCRIPTOR_ID, getJobDescriptorId(jobDetail)); mapContext.put(AbstractBonitaJobListener.TENANT_ID, getTenantId(jobDetail)); mapContext.put(AbstractBonitaJobListener.JOB_TYPE, getJobType(context.getJobInstance())); mapContext.put(AbstractBonitaJobListener.JOB_NAME, jobKey.getName()); mapContext.put(AbstractBonitaJobListener.JOB_GROUP, jobKey.getGroup()); mapContext.put(AbstractBonitaJobListener.TRIGGER_NAME, triggerKey.getName()); mapContext.put(AbstractBonitaJobListener.TRIGGER_GROUP, triggerKey.getGroup()); mapContext.put(AbstractBonitaJobListener.TRIGGER_PREVIOUS_FIRE_TIME, trigger.getPreviousFireTime()); mapContext.put(AbstractBonitaJobListener.TRIGGER_NEXT_FIRE_TIME, trigger.getNextFireTime()); mapContext.put(AbstractBonitaJobListener.REFIRE_COUNT, Integer.valueOf(context.getRefireCount())); mapContext.put(AbstractBonitaJobListener.JOB_DATAS, (Serializable) getJobDataValueAndType(jobDetail)); mapContext.put(AbstractBonitaJobListener.JOB_RESULT, String.valueOf(context.getResult())); return mapContext; } }
protected Map<String, Serializable> buildMapContext(final JobExecutionContext context) { final JobDetail jobDetail = context.getJobDetail(); final Trigger trigger = context.getTrigger(); final TriggerKey triggerKey = trigger.getKey(); final JobKey jobKey = jobDetail.getKey(); final Map<String, Serializable> mapContext = new HashMap<String, Serializable>(); mapContext.put(AbstractBonitaJobListener.BOS_JOB, getBosJob(context)); mapContext.put(AbstractBonitaJobListener.JOB_DESCRIPTOR_ID, getJobDescriptorId(jobDetail)); mapContext.put(AbstractBonitaJobListener.TENANT_ID, getTenantId(jobDetail)); mapContext.put(AbstractBonitaJobListener.JOB_TYPE, getJobType(context.getJobInstance())); mapContext.put(AbstractBonitaJobListener.JOB_NAME, jobKey.getName()); mapContext.put(AbstractBonitaJobListener.JOB_GROUP, jobKey.getGroup()); mapContext.put(AbstractBonitaJobListener.TRIGGER_NAME, triggerKey.getName()); mapContext.put(AbstractBonitaJobListener.TRIGGER_GROUP, triggerKey.getGroup()); mapContext.put(AbstractBonitaJobListener.TRIGGER_PREVIOUS_FIRE_TIME, trigger.getPreviousFireTime()); mapContext.put(AbstractBonitaJobListener.TRIGGER_NEXT_FIRE_TIME, trigger.getNextFireTime()); mapContext.put(AbstractBonitaJobListener.REFIRE_COUNT, Integer.valueOf(context.getRefireCount())); mapContext.put(AbstractBonitaJobListener.JOB_DATAS, (Serializable) getJobDataValueAndType(jobDetail)); mapContext.put(AbstractBonitaJobListener.JOB_RESULT, String.valueOf(context.getResult())); return mapContext; } }
@Override protected void populateInitialHeaders(Map<String, Object> map) { super.populateInitialHeaders(map); if (jobExecutionContext != null) { map.put("calendar", jobExecutionContext.getCalendar()); map.put("fireTime", jobExecutionContext.getFireTime()); map.put("jobDetail", jobExecutionContext.getJobDetail()); map.put("jobInstance", jobExecutionContext.getJobInstance()); map.put("jobRunTime", jobExecutionContext.getJobRunTime()); map.put("mergedJobDataMap", jobExecutionContext.getMergedJobDataMap()); map.put("nextFireTime", jobExecutionContext.getNextFireTime()); map.put("previousFireTime", jobExecutionContext.getPreviousFireTime()); map.put("refireCount", jobExecutionContext.getRefireCount()); map.put("result", jobExecutionContext.getResult()); map.put("scheduledFireTime", jobExecutionContext.getScheduledFireTime()); map.put("scheduler", jobExecutionContext.getScheduler()); Trigger trigger = jobExecutionContext.getTrigger(); map.put("trigger", trigger); map.put("triggerName", trigger.getKey().getName()); map.put("triggerGroup", trigger.getKey().getGroup()); } }
@Override public Void answer(InvocationOnMock invocation) throws Throwable { Void answer = super.answer(invocation); // simulate triggerComplete immediately with error+exception, last parameter (-1) is scheduler internals, we don't use it. JobExecutionContext jec = mock(JobExecutionContext.class); doReturn(new JobResult(false, new QuxException())).when(jec).getResult(); when(jec.getScheduler()).thenReturn(scheduler); triggerListener.triggerComplete(trigger, jec, null); return answer; } }
String result = String.valueOf(context.getResult()); args = new Object[] {
String result = String.valueOf(context.getResult()); args = new Object[] {
@Test public void triggerListenerSendsSuccessMessageToCurrentUserAndIsRemovedFromScheduler() throws Exception { // GIVEN definition.setAsynchronous(true); definition.setCommand("qux"); setUpForTriggerListenerTests(); JobExecutionContext jec = mock(JobExecutionContext.class); doReturn(new JobResult(true)).when(jec).getResult(); when(jec.getScheduler()).thenReturn(scheduler); AsyncActionExecutor executor = new DefaultAsyncActionExecutor<>(definition, schedulerModuleProvider, ctx, null, i18n); // WHEN executor.execute(item, null); // simulate triggerComplete after execute completed, last parameter (-1) is scheduler internals, we don't use it. triggerListener.triggerComplete(trigger, jec, null); // THEN we only want to make sure message is sent with current user (not system user) verify(messagesManager).sendMessage(eq(TEST_USER), any(Message.class)); // and the current TriggerListener should be removed from scheduler verify(scheduler.getListenerManager(), times(1)).removeTriggerListener(eq(triggerListener.getName())); }
@Test public void triggerListenerSendsErrorMessageToCurrentUserAndIsRemovedFromScheduler() throws Exception { // GIVEN definition.setAsynchronous(true); definition.setCommand("qux"); setUpForTriggerListenerTests(); JobExecutionContext jec = mock(JobExecutionContext.class); doReturn(new JobResult(false)).when(jec).getResult(); when(jec.getScheduler()).thenReturn(scheduler); AsyncActionExecutor executor = new DefaultAsyncActionExecutor<>(definition, schedulerModuleProvider, ctx, null, i18n); // WHEN executor.execute(item, null); // simulate triggerComplete after execute completed, last parameter (-1) is scheduler internals, we don't use it. triggerListener.triggerComplete(trigger, jec, null); // THEN we only want to make sure message is sent with current user (not system user) verify(messagesManager).sendMessage(eq(TEST_USER), any(Message.class)); // and the current TriggerListener should be removed from scheduler verify(scheduler.getListenerManager(), times(1)).removeTriggerListener(eq(triggerListener.getName())); }