ClassMethodNamesPair for CronMethodParser instead of CLASS_INDEX /
METHOD_INDEX
This commit is contained in:
+11
-9
@@ -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<String, String[]> targetMethosMap = new HashMap<String, String[]>();
|
||||
private static final Map<String, ClassMethodNamesPair> targetMethosMap = new HashMap<String, ClassMethodNamesPair>();
|
||||
|
||||
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<String, Object> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user