1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.replication;
20
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.List;
24
25 import org.apache.hadoop.hbase.classification.InterfaceAudience;
26 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
27 import org.apache.hadoop.hbase.wal.WAL.Entry;
28
29
30
31
32
33 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)
34 public class ChainWALEntryFilter implements WALEntryFilter {
35
36 private final WALEntryFilter[] filters;
37
38 public ChainWALEntryFilter(WALEntryFilter...filters) {
39 this.filters = filters;
40 }
41
42 public ChainWALEntryFilter(List<WALEntryFilter> filters) {
43 ArrayList<WALEntryFilter> rawFilters = new ArrayList<WALEntryFilter>(filters.size());
44
45 for (WALEntryFilter filter : filters) {
46 if (filter instanceof ChainWALEntryFilter) {
47 Collections.addAll(rawFilters, ((ChainWALEntryFilter) filter).filters);
48 } else {
49 rawFilters.add(filter);
50 }
51 }
52
53 this.filters = rawFilters.toArray(new WALEntryFilter[rawFilters.size()]);
54 }
55
56 @Override
57 public Entry filter(Entry entry) {
58 for (WALEntryFilter filter : filters) {
59 if (entry == null) {
60 return null;
61 }
62 entry = filter.filter(entry);
63 }
64 return entry;
65 }
66
67 }