in geronimo-metrics-common/src/main/java/org/apache/geronimo/microprofile/metrics/common/jaxrs/MetricsEndpoints.java [272:314]
private Object toJson(final Object metric, final String nameSuffix) {
if (Timer.class.isInstance(metric)) {
final Timer meter = Timer.class.cast(metric);
final Map<Object, Object> map = new TreeMap<>();
map.putAll(snapshot(meter.getSnapshot(), nameSuffix));
map.putAll(meter(meter, nameSuffix));
final Duration elapsedTime = meter.getElapsedTime();
map.put("elapsedTime" + nameSuffix, elapsedTime == null ? 0 : elapsedTime.toNanos());
return map;
}
if (SimpleTimer.class.isInstance(metric)) {
final SimpleTimer simpleTimer = SimpleTimer.class.cast(metric);
final Map<Object, Object> map = new TreeMap<>();
map.put("count" + nameSuffix, simpleTimer.getCount());
final Duration elapsedTime = simpleTimer.getElapsedTime();
map.put("elapsedTime" + nameSuffix, elapsedTime == null ? 0 : elapsedTime.toNanos());
final Duration minTimeDuration = simpleTimer.getMinTimeDuration();
map.put("minTimeDuration" + nameSuffix, minTimeDuration == null ? JsonValue.NULL : minTimeDuration.toNanos());
final Duration maxTimeDuration = simpleTimer.getMaxTimeDuration();
map.put("maxTimeDuration" + nameSuffix, maxTimeDuration == null ? JsonValue.NULL : maxTimeDuration.toNanos());
return map;
}
if (Meter.class.isInstance(metric)) {
return meter(Meter.class.cast(metric), nameSuffix);
}
if (Histogram.class.isInstance(metric)) {
final Histogram histogram = Histogram.class.cast(metric);
final Map<Object, Object> map = new TreeMap<>();
map.putAll(snapshot(histogram.getSnapshot(), nameSuffix));
map.put("count" + nameSuffix, histogram.getCount());
return map;
}
if (ConcurrentGauge.class.isInstance(metric)) {
final ConcurrentGauge concurrentGauge = ConcurrentGauge.class.cast(metric);
final Map<Object, Object> map = new TreeMap<>();
map.put("min" + nameSuffix, concurrentGauge.getMin());
map.put("current" + nameSuffix, concurrentGauge.getCount());
map.put("max" + nameSuffix, concurrentGauge.getMax());
return map;
}
// counters and gauges are unwrapped so skip it
return metric;
}