@Override public RemotePartitioningWorkerStepBuilder listener(StepExecutionListener listener) { super.listener(listener); return this; }
@Override public RemotePartitioningWorkerStepBuilder listener(Object listener) { super.listener(listener); return this; }
@Override @Bean public Step step(){ return stepBuilders.get("step") .listener(listener()) .<String,String>chunk(2) .reader(reader()) .writer(writer()) .build(); } }
@Override @Bean public Step step(){ return stepBuilders.get("step") .listener(listener()) .<String,String>chunk(2) .reader(reader()) .writer(writer()) .faultTolerant() .skipLimit(1) .skip(MySkippableException.class) // ChunkListener registered twice for checking BATCH-2149 .listener((ChunkListener) listener()) .build(); } }
@Test public void testListeners() throws Exception { JobRepository jobRepository = new MapJobRepositoryFactoryBean().getObject(); StepExecution execution = jobRepository.createJobExecution("foo", new JobParameters()).createStepExecution("step"); jobRepository.add(execution); PlatformTransactionManager transactionManager = new ResourcelessTransactionManager(); TaskletStepBuilder builder = new StepBuilder("step") .repository(jobRepository) .transactionManager(transactionManager) .listener(new InterfaceBasedStepExecutionListener()) .listener(new AnnotationBasedStepExecutionListener()) .tasklet((contribution, chunkContext) -> null); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(1, InterfaceBasedStepExecutionListener.beforeStepCount); assertEquals(1, InterfaceBasedStepExecutionListener.afterStepCount); assertEquals(1, AnnotationBasedStepExecutionListener.beforeStepCount); assertEquals(1, AnnotationBasedStepExecutionListener.afterStepCount); assertEquals(1, AnnotationBasedStepExecutionListener.beforeChunkCount); assertEquals(1, AnnotationBasedStepExecutionListener.afterChunkCount); }
@Bean public Step taskletlStep(StepBuilderFactory steps, StepExecutionListener taskletlStepListener) { return steps.get("taskletlStep") .listener(taskletlStepListener) .tasklet((contribution, chunkContext) -> { log.debug("Initialize tasklet step!!"); return RepeatStatus.FINISHED; }).build(); } }