1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.hadoop.hbase.quotas;
18
19 import java.util.Objects;
20
21 import org.apache.hadoop.conf.Configuration;
22 import org.apache.hadoop.hbase.classification.InterfaceAudience;
23
24
25
26
27
28 @InterfaceAudience.Private
29 public class SpaceQuotaSnapshotNotifierFactory {
30 private static final SpaceQuotaSnapshotNotifierFactory INSTANCE =
31 new SpaceQuotaSnapshotNotifierFactory();
32
33 public static final String SNAPSHOT_NOTIFIER_KEY = "hbase.master.quota.snapshot.notifier.impl";
34 public static final Class<? extends SpaceQuotaSnapshotNotifier> SNAPSHOT_NOTIFIER_DEFAULT =
35 TableSpaceQuotaSnapshotNotifier.class;
36
37
38 private SpaceQuotaSnapshotNotifierFactory() {}
39
40 public static SpaceQuotaSnapshotNotifierFactory getInstance() {
41 return INSTANCE;
42 }
43
44
45
46
47
48
49
50
51
52 public SpaceQuotaSnapshotNotifier create(Configuration conf) {
53 Class<? extends SpaceQuotaSnapshotNotifier> clz = Objects.requireNonNull(conf)
54 .getClass(SNAPSHOT_NOTIFIER_KEY, SNAPSHOT_NOTIFIER_DEFAULT,
55 SpaceQuotaSnapshotNotifier.class);
56 try {
57 return clz.newInstance();
58 } catch (InstantiationException | IllegalAccessException e) {
59 throw new IllegalArgumentException("Failed to instantiate the implementation", e);
60 }
61 }
62 }