diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 6e6c7ab94b..9b9881d9f9 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -2955,6 +2955,7 @@ public final class io/sentry/SentryEnvelopeItem { public fun getEvent (Lio/sentry/ISerializer;)Lio/sentry/SentryEvent; public fun getHeader ()Lio/sentry/SentryEnvelopeItemHeader; public fun getLogs (Lio/sentry/ISerializer;)Lio/sentry/SentryLogEvents; + public fun getMetrics (Lio/sentry/ISerializer;)Lio/sentry/SentryMetricsEvents; public fun getTransaction (Lio/sentry/ISerializer;)Lio/sentry/protocol/SentryTransaction; } diff --git a/sentry/src/main/java/io/sentry/JsonSerializer.java b/sentry/src/main/java/io/sentry/JsonSerializer.java index c643fd2a69..a0fa80879a 100644 --- a/sentry/src/main/java/io/sentry/JsonSerializer.java +++ b/sentry/src/main/java/io/sentry/JsonSerializer.java @@ -123,6 +123,7 @@ public JsonSerializer(@NotNull SentryOptions options) { deserializersByClass.put(SentryLevel.class, new SentryLevel.Deserializer()); deserializersByClass.put(SentryLockReason.class, new SentryLockReason.Deserializer()); deserializersByClass.put(SentryLogEvents.class, new SentryLogEvents.Deserializer()); + deserializersByClass.put(SentryMetricsEvents.class, new SentryMetricsEvents.Deserializer()); deserializersByClass.put(SentryPackage.class, new SentryPackage.Deserializer()); deserializersByClass.put(SentryRuntime.class, new SentryRuntime.Deserializer()); deserializersByClass.put(SentryReplayEvent.class, new SentryReplayEvent.Deserializer()); diff --git a/sentry/src/main/java/io/sentry/SentryEnvelopeItem.java b/sentry/src/main/java/io/sentry/SentryEnvelopeItem.java index 155c40ae7c..58d150886d 100644 --- a/sentry/src/main/java/io/sentry/SentryEnvelopeItem.java +++ b/sentry/src/main/java/io/sentry/SentryEnvelopeItem.java @@ -158,6 +158,17 @@ public final class SentryEnvelopeItem { } } + public @Nullable SentryMetricsEvents getMetrics(final @NotNull ISerializer serializer) + throws Exception { + if (header == null || header.getType() != SentryItemType.TraceMetric) { + return null; + } + try (final Reader eventReader = + new BufferedReader(new InputStreamReader(new ByteArrayInputStream(getData()), UTF_8))) { + return serializer.deserialize(eventReader, SentryMetricsEvents.class); + } + } + public static SentryEnvelopeItem fromUserFeedback( final @NotNull ISerializer serializer, final @NotNull UserFeedback userFeedback) { Objects.requireNonNull(serializer, "ISerializer is required.");