in geronimo-metrics-common/src/main/java/org/apache/geronimo/microprofile/metrics/common/RegistryImpl.java [223:239]
public <T extends Number> Gauge<T> gauge(final MetricID metricID, final Supplier<T> supplier) {
Holder<? extends Metric> holder = metrics.get(metricID);
if (holder == null) {
holder = new Holder<>(
new SimpleGaugeImpl<>(supplier),
Metadata.builder().withName(metricID.getName()).withType(MetricType.GAUGE).build(),
metricID);
final Holder<? extends Metric> existing = metrics.putIfAbsent(holder.metricID, holder);
if (existing != null) {
holder = existing;
}
}
if (!Gauge.class.isInstance(holder.metric)) {
throw new IllegalArgumentException(holder.metric + " is not a gauge");
}
return Gauge.class.cast(holder.metric);
}