1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.monitoring.repositories;
18
19 import org.apache.commons.monitoring.Role;
20 import org.apache.commons.monitoring.configuration.Configuration;
21 import org.apache.commons.monitoring.counters.Counter;
22 import org.apache.commons.monitoring.gauges.DefaultGaugeManager;
23 import org.apache.commons.monitoring.gauges.Gauge;
24 import org.apache.commons.monitoring.stopwatches.CounterStopWatch;
25 import org.apache.commons.monitoring.stopwatches.StopWatch;
26 import org.apache.commons.monitoring.store.DataStore;
27 import org.apache.commons.monitoring.store.GaugeValuesRequest;
28
29 import java.util.Iterator;
30 import java.util.Map;
31
32 public class DefaultRepository implements Repository {
33 private final DataStore dataStore;
34 private final DefaultGaugeManager gaugeManager;
35
36 public DefaultRepository() {
37 this.dataStore = Configuration.newInstance(DataStore.class);
38 this.gaugeManager = new DefaultGaugeManager(dataStore);
39 }
40
41 @Configuration.Destroying
42 public void stopGaugeTimers() {
43 gaugeManager.stop();
44 }
45
46 @Override
47 public Counter getCounter(final Counter.Key key) {
48 return dataStore.getOrCreateCounter(key);
49 }
50
51 @Override
52 public void clear() {
53 dataStore.clearCounters();
54 }
55
56 @Override
57 public StopWatch start(final Counter monitor) {
58 return new CounterStopWatch(monitor);
59 }
60
61 @Override
62 public Iterator<Counter> iterator() {
63 return dataStore.getCounters().iterator();
64 }
65
66 @Override
67 public Map<Long, Double> getGaugeValues(final long start, final long end, final Role role) {
68 return dataStore.getGaugeValues(new GaugeValuesRequest(start, end, role));
69 }
70
71 @Override
72 public void addGauge(final Gauge gauge) {
73 gaugeManager.addGauge(gauge);
74 }
75
76 @Override
77 public void stopGauge(final Role role) {
78 gaugeManager.stopGauge(role);
79 }
80 }