From 5bfb646f52c0c48f2100258a597a990796a00092 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Mon, 12 Jan 2026 10:30:39 +0100 Subject: [PATCH] SentryMetricsParameters create shortcut for attributes map --- sentry/api/sentry.api | 1 + .../metrics/SentryMetricsParameters.java | 12 ++++++++ sentry/src/test/java/io/sentry/ScopesTest.kt | 30 +++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 1f0783721e..1970c3fefb 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -5283,6 +5283,7 @@ public final class io/sentry/metrics/SentryMetricsParameters { public fun ()V public static fun create (Lio/sentry/SentryAttributes;)Lio/sentry/metrics/SentryMetricsParameters; public static fun create (Lio/sentry/SentryDate;Lio/sentry/SentryAttributes;)Lio/sentry/metrics/SentryMetricsParameters; + public static fun create (Ljava/util/Map;)Lio/sentry/metrics/SentryMetricsParameters; public fun getAttributes ()Lio/sentry/SentryAttributes; public fun getHint ()Lio/sentry/Hint; public fun getOrigin ()Ljava/lang/String; diff --git a/sentry/src/main/java/io/sentry/metrics/SentryMetricsParameters.java b/sentry/src/main/java/io/sentry/metrics/SentryMetricsParameters.java index c651a456af..b52a749497 100644 --- a/sentry/src/main/java/io/sentry/metrics/SentryMetricsParameters.java +++ b/sentry/src/main/java/io/sentry/metrics/SentryMetricsParameters.java @@ -3,6 +3,7 @@ import io.sentry.Hint; import io.sentry.SentryAttributes; import io.sentry.SentryDate; +import java.util.Map; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -60,4 +61,15 @@ public void setHint(final @Nullable Hint hint) { final @Nullable SentryAttributes attributes) { return create(null, attributes); } + + /** + * A shortcut for SentryMetricsParameters.create(SentryAttributes.fromMap()) + * + * @param attributes a map of attributes + * @return parameters + */ + public static @NotNull SentryMetricsParameters create( + final @Nullable Map attributes) { + return create(null, SentryAttributes.fromMap(attributes)); + } } diff --git a/sentry/src/test/java/io/sentry/ScopesTest.kt b/sentry/src/test/java/io/sentry/ScopesTest.kt index 842b9d9799..1e22be9877 100644 --- a/sentry/src/test/java/io/sentry/ScopesTest.kt +++ b/sentry/src/test/java/io/sentry/ScopesTest.kt @@ -3324,6 +3324,36 @@ class ScopesTest { ) } + @Test + fun `creating count metric with attributes from map and shortcut factory method works`() { + val (sut, mockClient) = getEnabledScopes() + + sut + .metrics() + .count( + "metric name", + 1.0, + "visit", + SentryMetricsParameters.create(mapOf("attrname1" to "attrval1")), + ) + + verify(mockClient) + .captureMetric( + check { + assertEquals("metric name", it.name) + assertEquals(1.0, it.value) + assertEquals("visit", it.unit) + assertEquals("counter", it.type) + + val attr1 = it.attributes?.get("attrname1")!! + assertEquals("attrval1", attr1.value) + assertEquals("string", attr1.type) + }, + anyOrNull(), + anyOrNull(), + ) + } + @Test fun `creating count metric with attributes works`() { val (sut, mockClient) = getEnabledScopes()