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.List;
23
24 import org.apache.hadoop.hbase.classification.InterfaceAudience;
25 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
26 import org.apache.hadoop.hbase.regionserver.wal.HLog.Entry;
27
28
29
30
31
32 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)
33 public class ChainWALEntryFilter implements WALEntryFilter {
34
35 private final WALEntryFilter[] filters;
36
37 public ChainWALEntryFilter(WALEntryFilter...filters) {
38 this.filters = filters;
39 }
40
41 public ChainWALEntryFilter(List<WALEntryFilter> filters) {
42 ArrayList<WALEntryFilter> rawFilters = new ArrayList<WALEntryFilter>(filters.size());
43
44 for (WALEntryFilter filter : filters) {
45 if (filter instanceof ChainWALEntryFilter) {
46 for (WALEntryFilter f : ((ChainWALEntryFilter) filter).filters) {
47 rawFilters.add(f);
48 }
49 } else {
50 rawFilters.add(filter);
51 }
52 }
53
54 this.filters = rawFilters.toArray(new WALEntryFilter[rawFilters.size()]);
55 }
56
57 @Override
58 public Entry filter(Entry entry) {
59 for (WALEntryFilter filter : filters) {
60 if (entry == null) {
61 return null;
62 }
63 entry = filter.filter(entry);
64 }
65 return entry;
66 }
67
68 }