package org.stagemonitor.core.metrics.metrics2; import java.util.HashMap; import java.util.Map; import com.codahale.metrics.Metric; import com.codahale.metrics.MetricSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * A set of named metrics. * * @see Metric2Registry#registerAll(Metric2Set) */ public interface Metric2Set { /** * A map of metric names to metrics. * * @return the metrics */ Map<MetricName, Metric> getMetrics(); class Converter { private final static Logger logger = LoggerFactory.getLogger(Converter.class); public static Metric2Set convert(final MetricSet metricSet, final MetricNameConverter converter) { return new Metric2Set() { @Override public Map<MetricName, Metric> getMetrics() { final HashMap<MetricName, Metric> result = new HashMap<MetricName, Metric>(); for (Map.Entry<String, Metric> entry : metricSet.getMetrics().entrySet()) { final MetricName convertedName; try { convertedName = converter.convert(entry.getKey()); result.put(convertedName, entry.getValue()); } catch (Exception e) { e.printStackTrace(); logger.warn("Invalid name " + entry.getKey()); logger.debug(e.getMessage(), e); } } return result; } }; } } }