From 37710750eba5638332eb2a635eff1b1db11e7b17 Mon Sep 17 00:00:00 2001 From: Michael Vorburger Date: Sun, 11 May 2014 02:10:00 +0200 Subject: [PATCH] ClassMethodNamesPair for CronMethodParser instead of CLASS_INDEX / METHOD_INDEX --- .../jobs/annotation/CronMethodParser.java | 20 ++++++++++--------- .../jobs/service/JobRegisterServiceImpl.java | 7 ++++--- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/annotation/CronMethodParser.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/annotation/CronMethodParser.java index ba44331d0..e1e826b47 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/annotation/CronMethodParser.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/annotation/CronMethodParser.java @@ -19,27 +19,27 @@ import org.springframework.util.ClassUtils; /** * Parser to find method which is marked with CronTargetMethod annotation - * */ public class CronMethodParser { + public static class ClassMethodNamesPair { + public String className; + public String methodName; + } + private static final String SEARCH_PACKAGE = "org.mifosplatform."; private static final String CRON_ANNOTATION_ATTRIBUTE_NAME = "jobName"; private static final String RESOURCE_PATTERN = "**/*.class"; - private static final Map targetMethosMap = new HashMap(); + private static final Map targetMethosMap = new HashMap(); private static final ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); private static final MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver); - public static final int CLASS_INDEX = 0; - - public static final int METHOD_INDEX = 1; - - public static String[] findTargetMethodDetails(final String attributeValue) throws IOException { + public static ClassMethodNamesPair findTargetMethodDetails(final String attributeValue) throws IOException { if (!targetMethosMap.containsKey(attributeValue)) { findAnnotationMethods(CronTarget.class, CRON_ANNOTATION_ATTRIBUTE_NAME); } @@ -66,8 +66,10 @@ public class CronMethodParser { final Map attributes = metadata.getAnnotationAttributes(annotationClass.getName()); final JobName attributeValue = (JobName) attributes.get(attributeName); final String className = metadata.getDeclaringClassName(); - final String[] mapVal = { className, metadata.getMethodName() }; - targetMethosMap.put(attributeValue.toString(), mapVal); + final ClassMethodNamesPair pair = new ClassMethodNamesPair(); + pair.className = className; + pair.methodName = metadata.getMethodName(); + targetMethosMap.put(attributeValue.toString(), pair); } } } 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 fe20e40f1..0acac5c7e 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 @@ -13,6 +13,7 @@ import org.mifosplatform.infrastructure.core.domain.MifosPlatformTenant; import org.mifosplatform.infrastructure.core.exception.PlatformInternalServerException; import org.mifosplatform.infrastructure.core.service.ThreadLocalContextUtil; import org.mifosplatform.infrastructure.jobs.annotation.CronMethodParser; +import org.mifosplatform.infrastructure.jobs.annotation.CronMethodParser.ClassMethodNamesPair; import org.mifosplatform.infrastructure.jobs.domain.ScheduledJobDetail; import org.mifosplatform.infrastructure.jobs.domain.SchedulerDetail; import org.mifosplatform.infrastructure.jobs.exception.JobNotFoundException; @@ -295,12 +296,12 @@ public class JobRegisterServiceImpl implements JobRegisterService { private JobDetail createJobDetail(final ScheduledJobDetail scheduledJobDetail) throws Exception { final MifosPlatformTenant tenant = ThreadLocalContextUtil.getTenant(); - final String[] jobDetails = CronMethodParser.findTargetMethodDetails(scheduledJobDetail.getJobName()); - final Object targetObject = getBeanObject(Class.forName(jobDetails[CronMethodParser.CLASS_INDEX])); + final ClassMethodNamesPair jobDetails = CronMethodParser.findTargetMethodDetails(scheduledJobDetail.getJobName()); + final Object targetObject = getBeanObject(Class.forName(jobDetails.className)); final MethodInvokingJobDetailFactoryBean jobDetailFactoryBean = new MethodInvokingJobDetailFactoryBean(); jobDetailFactoryBean.setName(scheduledJobDetail.getJobName() + "JobDetail" + tenant.getId()); jobDetailFactoryBean.setTargetObject(targetObject); - jobDetailFactoryBean.setTargetMethod(jobDetails[CronMethodParser.METHOD_INDEX]); + jobDetailFactoryBean.setTargetMethod(jobDetails.methodName); jobDetailFactoryBean.setGroup(scheduledJobDetail.getGroupName()); jobDetailFactoryBean.setConcurrent(false); jobDetailFactoryBean.afterPropertiesSet();