SchedulerTriggerListener really should just be normally injected, like

everything else; it's an anti pattern to directly use
applicationContext, unless there is a specific good reason for it.
This commit is contained in:
Michael Vorburger
2014-05-11 02:27:23 +02:00
parent 226439bef1
commit f194867c15
@@ -54,6 +54,7 @@ public class JobRegisterServiceImpl implements JobRegisterService {
private TenantDetailsService tenantDetailsService; private TenantDetailsService tenantDetailsService;
private SchedulerJobListener schedulerJobListener; private SchedulerJobListener schedulerJobListener;
private SchedulerStopListener schedulerStopListener; private SchedulerStopListener schedulerStopListener;
private SchedulerTriggerListener globalSchedulerTriggerListener;
private final HashMap<String, Scheduler> schedulers = new HashMap<String, Scheduler>(4); private final HashMap<String, Scheduler> schedulers = new HashMap<String, Scheduler>(4);
@@ -82,6 +83,11 @@ public class JobRegisterServiceImpl implements JobRegisterService {
this.schedulerStopListener = schedulerStopListener; this.schedulerStopListener = schedulerStopListener;
} }
@Autowired
public void setGlobalTriggerListener(SchedulerTriggerListener globalTriggerListener) {
this.globalSchedulerTriggerListener = globalTriggerListener;
}
@PostConstruct @PostConstruct
public void loadAllJobs() { public void loadAllJobs() {
final List<MifosPlatformTenant> allTenants = this.tenantDetailsService.findAllTenants(); final List<MifosPlatformTenant> allTenants = this.tenantDetailsService.findAllTenants();
@@ -277,8 +283,7 @@ public class JobRegisterServiceImpl implements JobRegisterService {
final SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); final SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setSchedulerName(name); schedulerFactoryBean.setSchedulerName(name);
schedulerFactoryBean.setGlobalJobListeners(jobListeners); schedulerFactoryBean.setGlobalJobListeners(jobListeners);
final TriggerListener globalTriggerListener = this.applicationContext.getBean("schedulerTriggerListener", TriggerListener.class); final TriggerListener[] globalTriggerListeners = { globalSchedulerTriggerListener };
final TriggerListener[] globalTriggerListeners = { globalTriggerListener };
schedulerFactoryBean.setGlobalTriggerListeners(globalTriggerListeners); schedulerFactoryBean.setGlobalTriggerListeners(globalTriggerListeners);
final Properties quartzProperties = new Properties(); final Properties quartzProperties = new Properties();
quartzProperties.put(SchedulerFactoryBean.PROP_THREAD_COUNT, Integer.toString(noOfThreads)); quartzProperties.put(SchedulerFactoryBean.PROP_THREAD_COUNT, Integer.toString(noOfThreads));