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.ItemWriteListener;
22 import org.springframework.core.Ordered;
23
24
25
26
27
28
29 public class CompositeItemWriteListener<S> implements ItemWriteListener<S> {
30
31 private OrderedComposite<ItemWriteListener<? super S>> listeners = new OrderedComposite<ItemWriteListener<? super S>>();
32
33
34
35
36
37
38 public void setListeners(List<? extends ItemWriteListener<? super S>> itemWriteListeners) {
39 this.listeners.setItems(itemWriteListeners);
40 }
41
42
43
44
45
46
47 public void register(ItemWriteListener<? super S> itemWriteListener) {
48 listeners.add(itemWriteListener);
49 }
50
51
52
53
54
55
56 @Override
57 public void afterWrite(List<? extends S> items) {
58 for (Iterator<ItemWriteListener<? super S>> iterator = listeners.reverse(); iterator.hasNext();) {
59 ItemWriteListener<? super S> listener = iterator.next();
60 listener.afterWrite(items);
61 }
62 }
63
64
65
66
67
68
69 @Override
70 public void beforeWrite(List<? extends S> items) {
71 for (Iterator<ItemWriteListener<? super S>> iterator = listeners.iterator(); iterator.hasNext();) {
72 ItemWriteListener<? super S> listener = iterator.next();
73 listener.beforeWrite(items);
74 }
75 }
76
77
78
79
80
81
82 @Override
83 public void onWriteError(Exception ex, List<? extends S> items) {
84 for (Iterator<ItemWriteListener<? super S>> iterator = listeners.reverse(); iterator.hasNext();) {
85 ItemWriteListener<? super S> listener = iterator.next();
86 listener.onWriteError(ex, items);
87 }
88 }
89 }