Hi,
I would like to implement a tasklet deleting files matching a certain pattern in 'MultiResourceReader' style. What is the best approach to teach the tasklet class to evaluate the bean property the same way as MultiResourceReader (or its calling class) does?
I think about the following bean definition:
Code:<bean id="deleteFilesTasklet" class="com.siemens.ces.sdsync.DeleteFileTasklet" scope="step"> <property name="resources" value="#{jobParameters['inputFileNamePattern']}"/> </bean>Thanks in advance for your help,Code:public class DeleteFileTasklet implements Tasklet, InitializingBean { private Resource[] resources; public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { for (int i = 0; i < resources.length; i++) { File file = resources[i].getFile(); Assert.state(file.isFile()); boolean deleted = file.delete(); if (!deleted) { throw new UnexpectedJobExecutionException( "Could not delete file " + file.getName()); } } return RepeatStatus.FINISHED; } public void setResources(Resource resources[]) { Assert.notNull(resources, "The resources must not be null"); this.resources = (Resource[]) Arrays.asList(resources).toArray( new Resource[resources.length]); } public void afterPropertiesSet() throws Exception { Assert.notNull(resources, "files must be set"); } }
Elmar


Reply With Quote