|
41 | 41 | import org.springframework.batch.core.listener.ItemReadListener; |
42 | 42 | import org.springframework.batch.core.listener.ItemWriteListener; |
43 | 43 | import org.springframework.batch.core.listener.SkipListener; |
| 44 | +import org.springframework.batch.core.listener.StepExecutionListener; |
44 | 45 | import org.springframework.batch.core.listener.StepListener; |
45 | 46 | import org.springframework.batch.core.listener.StepListenerFactoryBean; |
46 | 47 | import org.springframework.batch.core.repository.JobRepository; |
@@ -380,11 +381,20 @@ public ChunkOrientedStepBuilder<I, O> observationRegistry(ObservationRegistry ob |
380 | 381 | public ChunkOrientedStep<I, O> build() { |
381 | 382 | Assert.notNull(this.reader, "Item reader must not be null"); |
382 | 383 | Assert.notNull(this.writer, "Item writer must not be null"); |
| 384 | + if (this.reader instanceof StepExecutionListener listener) { |
| 385 | + this.stepListeners.add(listener); |
| 386 | + } |
| 387 | + if (this.writer instanceof StepExecutionListener listener) { |
| 388 | + this.stepListeners.add(listener); |
| 389 | + } |
383 | 390 | ChunkOrientedStep<I, O> chunkOrientedStep = new ChunkOrientedStep<>(this.getName(), this.chunkSize, this.reader, |
384 | 391 | this.writer, this.getJobRepository()); |
385 | 392 | if (this.processor != null) { |
386 | 393 | chunkOrientedStep.setItemProcessor(this.processor); |
387 | 394 | } |
| 395 | + if (this.processor instanceof StepExecutionListener listener) { |
| 396 | + this.stepListeners.add(listener); |
| 397 | + } |
388 | 398 | chunkOrientedStep.setTransactionManager(this.transactionManager); |
389 | 399 | chunkOrientedStep.setTransactionAttribute(this.transactionAttribute); |
390 | 400 | chunkOrientedStep.setInterruptionPolicy(this.interruptionPolicy); |
@@ -416,17 +426,20 @@ public ChunkOrientedStep<I, O> build() { |
416 | 426 | } |
417 | 427 | streams.forEach(chunkOrientedStep::registerItemStream); |
418 | 428 | stepListeners.forEach(stepListener -> { |
419 | | - if (stepListener instanceof ItemReadListener) { |
420 | | - chunkOrientedStep.registerItemReadListener((ItemReadListener<I>) stepListener); |
| 429 | + if (stepListener instanceof ItemReadListener listener) { |
| 430 | + chunkOrientedStep.registerItemReadListener(listener); |
| 431 | + } |
| 432 | + if (stepListener instanceof ItemProcessListener listener) { |
| 433 | + chunkOrientedStep.registerItemProcessListener(listener); |
421 | 434 | } |
422 | | - if (stepListener instanceof ItemProcessListener) { |
423 | | - chunkOrientedStep.registerItemProcessListener((ItemProcessListener<I, O>) stepListener); |
| 435 | + if (stepListener instanceof ItemWriteListener listener) { |
| 436 | + chunkOrientedStep.registerItemWriteListener(listener); |
424 | 437 | } |
425 | | - if (stepListener instanceof ItemWriteListener) { |
426 | | - chunkOrientedStep.registerItemWriteListener((ItemWriteListener<O>) stepListener); |
| 438 | + if (stepListener instanceof ChunkListener listener) { |
| 439 | + chunkOrientedStep.registerChunkListener(listener); |
427 | 440 | } |
428 | | - if (stepListener instanceof ChunkListener) { |
429 | | - chunkOrientedStep.registerChunkListener((ChunkListener<I, O>) stepListener); |
| 441 | + if (stepListener instanceof StepExecutionListener listener) { |
| 442 | + chunkOrientedStep.registerStepExecutionListener(listener); |
430 | 443 | } |
431 | 444 | }); |
432 | 445 | retryListeners.forEach(chunkOrientedStep::registerRetryListener); |
|
0 commit comments