diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/listener/CompositeChunkListener.java b/spring-batch-core/src/main/java/org/springframework/batch/core/listener/CompositeChunkListener.java index 5291df491..aa8e8b07d 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/listener/CompositeChunkListener.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/listener/CompositeChunkListener.java @@ -49,35 +49,40 @@ public class CompositeChunkListener implements ChunkListener { } /** - * Call the registered listeners in order, respecting and prioritizing those - * that implement {@link Ordered}. + * Call the registered listeners in reverse order. * * @see org.springframework.batch.core.ChunkListener#afterChunk(ChunkContext context) */ @Override public void afterChunk(ChunkContext context) { - for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { + for (Iterator iterator = listeners.reverse(); iterator.hasNext();) { ChunkListener listener = iterator.next(); listener.afterChunk(context); } } /** - * Call the registered listeners in reverse order. + * Call the registered listeners in order, respecting and prioritizing those + * that implement {@link Ordered}. * * @see org.springframework.batch.core.ChunkListener#beforeChunk(ChunkContext context) */ @Override public void beforeChunk(ChunkContext context) { - for (Iterator iterator = listeners.reverse(); iterator.hasNext();) { + for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { ChunkListener listener = iterator.next(); listener.beforeChunk(context); } } + /** + * Call the registered listeners in reverse order. + * + * @see org.springframework.batch.core.ChunkListener#afterChunkError(ChunkContext context) + */ @Override public void afterChunkError(ChunkContext context) { - for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { + for (Iterator iterator = listeners.reverse(); iterator.hasNext();) { ChunkListener listener = iterator.next(); listener.afterChunkError(context); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/listener/CompositeItemReadListener.java b/spring-batch-core/src/main/java/org/springframework/batch/core/listener/CompositeItemReadListener.java index b454f9c87..58746f687 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/listener/CompositeItemReadListener.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/listener/CompositeItemReadListener.java @@ -81,7 +81,7 @@ public class CompositeItemReadListener implements ItemReadListener { */ @Override public void onReadError(Exception ex) { - for (Iterator> iterator = listeners.iterator(); iterator.hasNext();) { + for (Iterator> iterator = listeners.reverse(); iterator.hasNext();) { ItemReadListener listener = iterator.next(); listener.onReadError(ex); }