From df4a070123e1f031a87ea0a36f4646213a8d3686 Mon Sep 17 00:00:00 2001 From: Michael Vorburger Date: Thu, 14 Aug 2014 23:05:10 +0200 Subject: [PATCH] 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 --- .../infrastructure/jobs/service/JobRegisterServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/service/JobRegisterServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/service/JobRegisterServiceImpl.java index ffa33496b..35a639a72 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/service/JobRegisterServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/service/JobRegisterServiceImpl.java @@ -302,6 +302,9 @@ public class JobRegisterServiceImpl implements JobRegisterService { private JobDetail createJobDetail(final ScheduledJobDetail scheduledJobDetail) throws Exception { final MifosPlatformTenant tenant = ThreadLocalContextUtil.getTenant(); 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 MethodInvokingJobDetailFactoryBean jobDetailFactoryBean = new MethodInvokingJobDetailFactoryBean(); jobDetailFactoryBean.setName(scheduledJobDetail.getJobName() + "JobDetail" + tenant.getId());