Better error handling in case a scheduler job name listed in database
cannot be found in the code (instead of the NPE currently happenig in such cases) Signed-off-by: Michael Vorburger <mike@vorburger.ch>
This commit is contained in:
+3
@@ -302,6 +302,9 @@ public class JobRegisterServiceImpl implements JobRegisterService {
|
|||||||
private JobDetail createJobDetail(final ScheduledJobDetail scheduledJobDetail) throws Exception {
|
private JobDetail createJobDetail(final ScheduledJobDetail scheduledJobDetail) throws Exception {
|
||||||
final MifosPlatformTenant tenant = ThreadLocalContextUtil.getTenant();
|
final MifosPlatformTenant tenant = ThreadLocalContextUtil.getTenant();
|
||||||
final ClassMethodNamesPair jobDetails = CronMethodParser.findTargetMethodDetails(scheduledJobDetail.getJobName());
|
final ClassMethodNamesPair jobDetails = CronMethodParser.findTargetMethodDetails(scheduledJobDetail.getJobName());
|
||||||
|
if (jobDetails == null) { throw new IllegalArgumentException(
|
||||||
|
"Code has no @CronTarget with this job name (@see JobName); seems like DB/code are not in line: "
|
||||||
|
+ scheduledJobDetail.getJobName()); }
|
||||||
final Object targetObject = getBeanObject(Class.forName(jobDetails.className));
|
final Object targetObject = getBeanObject(Class.forName(jobDetails.className));
|
||||||
final MethodInvokingJobDetailFactoryBean jobDetailFactoryBean = new MethodInvokingJobDetailFactoryBean();
|
final MethodInvokingJobDetailFactoryBean jobDetailFactoryBean = new MethodInvokingJobDetailFactoryBean();
|
||||||
jobDetailFactoryBean.setName(scheduledJobDetail.getJobName() + "JobDetail" + tenant.getId());
|
jobDetailFactoryBean.setName(scheduledJobDetail.getJobName() + "JobDetail" + tenant.getId());
|
||||||
|
|||||||
Reference in New Issue
Block a user