1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.batch.core.listener;
17
18 import java.util.Iterator;
19 import java.util.List;
20
21 import org.springframework.batch.core.ChunkListener;
22 import org.springframework.batch.core.scope.context.ChunkContext;
23 import org.springframework.core.Ordered;
24
25
26
27
28
29 public class CompositeChunkListener implements ChunkListener {
30
31 private OrderedComposite<ChunkListener> listeners = new OrderedComposite<ChunkListener>();
32
33
34
35
36
37
38 public void setListeners(List<? extends ChunkListener> listeners) {
39 this.listeners.setItems(listeners);
40 }
41
42
43
44
45
46
47 public void register(ChunkListener chunkListener) {
48 listeners.add(chunkListener);
49 }
50
51
52
53
54
55
56
57 @Override
58 public void afterChunk(ChunkContext context) {
59 for (Iterator<ChunkListener> iterator = listeners.iterator(); iterator.hasNext();) {
60 ChunkListener listener = iterator.next();
61 listener.afterChunk(context);
62 }
63 }
64
65
66
67
68
69
70 @Override
71 public void beforeChunk(ChunkContext context) {
72 for (Iterator<ChunkListener> iterator = listeners.reverse(); iterator.hasNext();) {
73 ChunkListener listener = iterator.next();
74 listener.beforeChunk(context);
75 }
76 }
77
78 @Override
79 public void afterChunkError(ChunkContext context) {
80 for (Iterator<ChunkListener> iterator = listeners.iterator(); iterator.hasNext();) {
81 ChunkListener listener = iterator.next();
82 listener.afterChunkError(context);
83 }
84 }
85 }