1
2
3
4
5
6
7
8
9
10 package ch.qos.logback.core.spi;
11
12 import java.util.ArrayList;
13 import java.util.List;
14 import java.util.concurrent.CopyOnWriteArrayList;
15
16 import ch.qos.logback.core.filter.Filter;
17
18
19
20
21
22
23 final public class FilterAttachableImpl<E> implements FilterAttachable<E> {
24
25 CopyOnWriteArrayList<Filter<E>> filterList = new CopyOnWriteArrayList<Filter<E>>();
26
27
28
29
30 public void addFilter(Filter<E> newFilter) {
31 filterList.add(newFilter);
32 }
33
34
35
36
37 public Filter<E> getFirstFilter() {
38 if (filterList.size() > 0) {
39 return filterList.get(0);
40 } else {
41 return null;
42 }
43 }
44
45
46
47
48 public void clearAllFilters() {
49 filterList.clear();
50 }
51
52
53
54
55
56
57 public FilterReply getFilterChainDecision(E event) {
58 for (Filter<E> f : filterList) {
59 final FilterReply r = f.decide(event);
60 if (r == FilterReply.DENY || r == FilterReply.ACCEPT) {
61 return r;
62 }
63 }
64 return FilterReply.NEUTRAL;
65 }
66
67 public List<Filter<E>> getCopyOfAttachedFiltersList() {
68 return new ArrayList<Filter<E>>(filterList);
69 }
70 }