01: /*
02: * ChainBuilder ESB
03: * Visual Enterprise Integration
04: *
05: * Copyright (C) 2007 Bostech Corporation
06: *
07: * This program is free software; you can redistribute it and/or modify it
08: * under the terms of the GNU General Public License as published by the
09: * Free Software Foundation; either version 2 of the License, or (at your option)
10: * any later version.
11: *
12: * This program is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15: * for more details.
16: *
17: * You should have received a copy of the GNU General Public License along with
18: * this program; if not, write to the Free Software Foundation, Inc.,
19: * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20: *
21: *
22: * $Id: ARRetryTriggerListener.java 6905 2007-04-19 03:05:32Z mpreston $
23: */
24: package com.bostechcorp.cbesb.runtime.scheduler;
25:
26: import org.apache.commons.logging.Log;
27: import org.apache.commons.logging.LogFactory;
28: import org.quartz.JobExecutionContext;
29: import org.quartz.Trigger;
30: import org.quartz.TriggerListener;
31: import org.quartz.listeners.TriggerListenerSupport;
32:
33: public class ARRetryTriggerListener extends TriggerListenerSupport
34: implements TriggerListener {
35:
36: private Log log = LogFactory.getLog(ARRetryTriggerListener.class);
37:
38: /* (non-Javadoc)
39: * @see org.quartz.TriggerListener#getName()
40: */
41: public String getName() {
42: return "ARRetryTriggerListener";
43: }
44:
45: /* (non-Javadoc)
46: * @see org.quartz.TriggerListener#triggerComplete(org.quartz.Trigger, org.quartz.JobExecutionContext, int)
47: */
48: public void triggerComplete(Trigger trigger,
49: JobExecutionContext context, int triggerInstructionCode) {
50: boolean success = context.getMergedJobDataMap()
51: .getBooleanValue(AutoRetryConstants.SUCCESS);
52: IAutoRetryJobProcessor jobProcessor = (IAutoRetryJobProcessor) context
53: .getMergedJobDataMap().get(
54: AutoRetryConstants.JOB_PROCESSOR);
55: if (success) {
56: SchedulerCore schedulerCoreInstance = (SchedulerCore) context
57: .getMergedJobDataMap().get(
58: AutoRetryConstants.SCHEDULER_CORE_INSTANCE);
59: try {
60: schedulerCoreInstance.unScheduleRetryTrigger(trigger);
61: } catch (Exception e) {
62: log.error("Unable to unschedule retry trigger.", e);
63: }
64: jobProcessor.onSuccess();
65:
66: } else {
67: if (!trigger.mayFireAgain()) {
68: //This was the last retry
69: jobProcessor.onFailure();
70: }
71: }
72: }
73:
74: }
|