blob: efb0213a0650a07d3b0f30436f7effa22d90280a [file] [log] [blame]
package net.onrc.onos.core.metrics;
import com.codahale.metrics.Counter;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Meter;
import com.codahale.metrics.Timer;
import com.codahale.metrics.Histogram;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import java.util.List;
/**
* Resource class to hold Metrics information. Timers, Gauges, Counters,
* Meters and Historgrams are currently implemented.
*/
@JsonSerialize(using = MetricsObjectSerializer.class)
@SuppressWarnings("rawtypes")
public class MetricsObjectResource {
/**
* Base Metric object that all metrics inherit from. Defines common
* attributes.
*/
static class BaseMetricObject {
private final String name;
/**
* Constructor for the base object. Sets the name attribute.
*
* @param newName name of the Metric
*/
protected BaseMetricObject(final String newName) {
name = newName;
}
/**
* Get the name of the Metric.
*
* @return metric name
*/
public String getName() {
return name;
}
}
/**
* Metric object that represents a Timer.
*/
static class TimerObjectResource extends BaseMetricObject {
private final Timer timer;
/**
* Construct a new Timer resource object.
*
* @param newName name to use for the timer
* @param newTimer Metrics Timer object
*/
public TimerObjectResource(final String newName,
final Timer newTimer) {
super(newName);
timer = newTimer;
}
/**
* Get the Metrics Timer object for this resource.
*
* @return Metrics Timer object.
*/
public Timer getTimer() {
return timer;
}
}
/**
* Metric object that represents a Gauge.
*/
static class GaugeObjectResource extends BaseMetricObject {
private final Gauge gauge;
/**
* Constructs a new Gauge resource object.
*
* @param newName name to use for the Gauge object
* @param newGauge Metrics Gauge object
*/
public GaugeObjectResource(final String newName,
final Gauge newGauge) {
super(newName);
gauge = newGauge;
}
/**
* Gets the Metrics Gauge object for this resource.
*
* @return Metrics Gauge object.
*/
public Gauge getGauge() {
return gauge;
}
}
/**
* Metric object that represents a Counter.
*/
static class CounterObjectResource extends BaseMetricObject {
private final Counter counter;
/**
* Constructs a new Counter resource object.
*
* @param newName name to use for the Counter object
* @param newCounter Metrics Counter object
*/
public CounterObjectResource(final String newName,
final Counter newCounter) {
super(newName);
counter = newCounter;
}
/**
* Gets the Metrics Counter object for this resource.
*
* @return Metrics Counter object.
*/
public Counter getCounter() {
return counter;
}
}
/**
* Metric object that represents a Meter.
*/
static class MeterObjectResource extends BaseMetricObject {
private final Meter meter;
/**
* Constructs a new Meter resource object.
*
* @param newName name to use for the Meter object
* @param newMeter Metrics Meter object
*/
public MeterObjectResource(final String newName,
final Meter newMeter) {
super(newName);
meter = newMeter;
}
/**
* Gets the Metrics Meter object for this resource.
*
* @return Metrics Meter object.
*/
public Meter getMeter() {
return meter;
}
}
/**
* Metric objerct that represents a Histogram.
*/
static class HistogramObjectResource extends BaseMetricObject {
private final Histogram histogram;
/**
* Constructs a new Histogram resource object.
*
* @param newName name to use for Histogram object.
* @param newHistogram Metrics Histogram object.
*/
public HistogramObjectResource(final String newName,
final Histogram newHistogram) {
super(newName);
histogram = newHistogram;
}
/**
* Gets the Metrics Histogram object for this resource.
*
* @return Metrics Histogram Object
*/
public Histogram getHistogram() {
return histogram;
}
}
private List<TimerObjectResource> timers;
private List<GaugeObjectResource> gauges;
private List<CounterObjectResource> counters;
private List<MeterObjectResource> meters;
private List<HistogramObjectResource> histograms;
/**
* Gets the list of Gauge objects.
*
* @return list of gauges
*/
public List<GaugeObjectResource> getGauges() {
return gauges;
}
/**
* Defines the list of Gauge objects.
*
* @param gauges list of gauges
*/
public void setGauges(List<GaugeObjectResource> gauges) {
this.gauges = gauges;
}
/**
* Gets the list of Timer objects.
*
* @return list of Timers
*/
public List<TimerObjectResource> getTimers() {
return timers;
}
/**
* Defines the list of Timer objects.
*
* @param newTimers list of Timers
*/
public void setTimers(List<TimerObjectResource> newTimers) {
timers = newTimers;
}
/**
* Gets the list of Counter objects.
*
* @return list of Counters
*/
public List<CounterObjectResource> getCounters() {
return counters;
}
/**
* Defines the list of Counter objects.
*
* @param counters list of Counters
*/
public void setCounters(List<CounterObjectResource> counters) {
this.counters = counters;
}
/**
* Gets the list of Meter objects.
*
* @return list of Meters
*/
public List<MeterObjectResource> getMeters() {
return meters;
}
/**
* Defines the list of Meter objects.
*
* @param meters list of Meters
*/
public void setMeters(List<MeterObjectResource> meters) {
this.meters = meters;
}
/**
* Gets the list of Histogram objects.
*
* @return list of Histograms
*/
public List<HistogramObjectResource> getHistograms() {
return histograms;
}
/**
* Defines the list of Histogram objects.
*
* @param histograms list of Histograms.
*/
public void setHistograms(List<HistogramObjectResource> histograms) {
this.histograms = histograms;
}
}