diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-core.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-core.txt index f417d99060..ad7f6c9288 100644 --- a/docs/apidiffs/current_vs_latest/prometheus-metrics-core.txt +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-core.txt @@ -1,2 +1,5 @@ Comparing source compatibility of prometheus-metrics-core-1.10.1-SNAPSHOT.jar against prometheus-metrics-core-1.10.0.jar -No changes. +*** MODIFIED CLASS: PUBLIC STATIC io.prometheus.metrics.core.metrics.StateSet$Builder (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.StateSet$Builder unit(io.prometheus.metrics.model.snapshots.Unit) + diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java index c62aecb773..ea635db316 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java @@ -8,6 +8,7 @@ import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.StateSetSnapshot; +import io.prometheus.metrics.model.snapshots.Unit; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -170,6 +171,17 @@ public Builder states(String... stateNames) { return this; } + /** + * Throws an {@link UnsupportedOperationException} because StateSet metrics cannot have a unit. + */ + @Override + public Builder unit(@Nullable Unit unit) { + if (unit != null) { + throw new UnsupportedOperationException("StateSet metrics cannot have a unit."); + } + return this; + } + @Override public StateSet build() { if (names == null) { diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StateSetTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StateSetTest.java index 318013edf3..e3df7d9a68 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StateSetTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StateSetTest.java @@ -5,6 +5,7 @@ import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.StateSetSnapshot; +import io.prometheus.metrics.model.snapshots.Unit; import java.util.Arrays; import org.junit.jupiter.api.Test; @@ -72,6 +73,14 @@ void illegalName() { + " metrics)"); } + @Test + void unit() { + assertThatExceptionOfType(UnsupportedOperationException.class) + .isThrownBy( + () -> StateSet.builder().name("test").states("a", "b").unit(Unit.SECONDS).build()) + .withMessage("StateSet metrics cannot have a unit."); + } + private StateSetSnapshot.StateSetDataPointSnapshot getData(StateSet stateSet, String... labels) { return stateSet.collect().getDataPoints().stream() .filter(d -> d.getLabels().equals(Labels.of(labels)))