001package io.prometheus.client.dropwizard.samplebuilder; 002 003import io.prometheus.client.Collector; 004 005import java.util.ArrayList; 006import java.util.Collections; 007import java.util.List; 008 009 010/** 011 * Default implementation of {@link SampleBuilder}. 012 * Sanitises the metric name if necessary. 013 * 014 * @see io.prometheus.client.Collector#sanitizeMetricName(String) 015 */ 016public class DefaultSampleBuilder implements SampleBuilder { 017 @Override 018 public Collector.MetricFamilySamples.Sample createSample(final String dropwizardName, final String nameSuffix, final List<String> additionalLabelNames, final List<String> additionalLabelValues, final double value) { 019 final String suffix = nameSuffix == null ? "" : nameSuffix; 020 final List<String> labelNames = additionalLabelNames == null ? Collections.<String>emptyList() : additionalLabelNames; 021 final List<String> labelValues = additionalLabelValues == null ? Collections.<String>emptyList() : additionalLabelValues; 022 return new Collector.MetricFamilySamples.Sample( 023 Collector.sanitizeMetricName(dropwizardName + suffix), 024 new ArrayList<String>(labelNames), 025 new ArrayList<String>(labelValues), 026 value 027 ); 028 } 029}