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}