diff --git a/api/internal/src/main/java/io/opentelemetry/api/internal/Utils.java b/api/internal/src/main/java/io/opentelemetry/api/internal/Utils.java index 3978ae49ce..2f6603e0da 100644 --- a/api/internal/src/main/java/io/opentelemetry/api/internal/Utils.java +++ b/api/internal/src/main/java/io/opentelemetry/api/internal/Utils.java @@ -5,7 +5,6 @@ package io.opentelemetry.api.internal; -import java.util.Objects; import javax.annotation.concurrent.Immutable; /** General internal utility methods. */ @@ -26,23 +25,4 @@ public final class Utils { throw new IllegalArgumentException(errorMessage); } } - - /** - * Validates that the array of Strings is 1) even in length, and 2) they can be formed into valid - * pairs where the first item in the pair is not null. - * - *
TODO: write unit tests for this method. - * - * @param keyValuePairs The String[] to validate for correctness. - * @throws IllegalArgumentException if any of the preconditions are violated. - */ - public static void validateLabelPairs(String[] keyValuePairs) { - checkArgument( - keyValuePairs.length % 2 == 0, - "You must provide an even number of key/value pair arguments."); - for (int i = 0; i < keyValuePairs.length; i += 2) { - String key = keyValuePairs[i]; - Objects.requireNonNull(key, "You cannot provide null keys for label creation."); - } - } } diff --git a/api/metrics/src/main/java/io/opentelemetry/api/metrics/DefaultMeter.java b/api/metrics/src/main/java/io/opentelemetry/api/metrics/DefaultMeter.java index 967b91f8d2..b4f4e0d198 100644 --- a/api/metrics/src/main/java/io/opentelemetry/api/metrics/DefaultMeter.java +++ b/api/metrics/src/main/java/io/opentelemetry/api/metrics/DefaultMeter.java @@ -114,7 +114,7 @@ final class DefaultMeter implements Meter { @Override public BatchRecorder newBatchRecorder(String... keyValuePairs) { - Utils.validateLabelPairs(keyValuePairs); + validateLabelPairs(keyValuePairs); return NoopBatchRecorder.INSTANCE; } @@ -676,4 +676,21 @@ final class DefaultMeter implements Meter { protected abstract B getThis(); } + + /** + * Validates that the array of Strings is 1) even in length, and 2) they can be formed into valid + * pairs where the first item in the pair is not null. + * + * @param keyValuePairs The String[] to validate for correctness. + * @throws IllegalArgumentException if any of the preconditions are violated. + */ + private static void validateLabelPairs(String[] keyValuePairs) { + Utils.checkArgument( + keyValuePairs.length % 2 == 0, + "You must provide an even number of key/value pair arguments."); + for (int i = 0; i < keyValuePairs.length; i += 2) { + String key = keyValuePairs[i]; + Objects.requireNonNull(key, "You cannot provide null keys for label creation."); + } + } } diff --git a/api/metrics/src/test/java/io/opentelemetry/api/metrics/BatchRecorderTest.java b/api/metrics/src/test/java/io/opentelemetry/api/metrics/BatchRecorderTest.java index 099574e1b3..fdd460da5c 100644 --- a/api/metrics/src/test/java/io/opentelemetry/api/metrics/BatchRecorderTest.java +++ b/api/metrics/src/test/java/io/opentelemetry/api/metrics/BatchRecorderTest.java @@ -13,10 +13,16 @@ class BatchRecorderTest { private static final Meter meter = Meter.getDefault(); @Test - void testNewBatchRecorder_badLabelSet() { + void testNewBatchRecorder_WrongNumberOfLabels() { assertThrows(IllegalArgumentException.class, () -> meter.newBatchRecorder("key"), "key/value"); } + @Test + void testNewBatchRecorder_NullLabelKey() { + assertThrows( + NullPointerException.class, () -> meter.newBatchRecorder(null, "value"), "null keys"); + } + @Test void preventNull_MeasureLong() { assertThrows(