From d2c0dbf36ee4b33698f6a6312feb1c3b877bc2b7 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Wed, 17 Dec 2025 14:51:32 +0100 Subject: [PATCH] MetricsApi stub --- sentry/api/sentry.api | 22 +++++++++++++++++++ .../src/main/java/io/sentry/HubAdapter.java | 6 +++++ .../main/java/io/sentry/HubScopesWrapper.java | 6 +++++ sentry/src/main/java/io/sentry/IScopes.java | 4 ++++ sentry/src/main/java/io/sentry/NoOpHub.java | 7 ++++++ .../src/main/java/io/sentry/NoOpScopes.java | 7 ++++++ sentry/src/main/java/io/sentry/Scopes.java | 9 ++++++++ .../main/java/io/sentry/ScopesAdapter.java | 6 +++++ sentry/src/main/java/io/sentry/Sentry.java | 6 +++++ .../java/io/sentry/metrics/IMetricsApi.java | 11 ++++++++++ .../java/io/sentry/metrics/MetricsApi.java | 18 +++++++++++++++ .../io/sentry/metrics/NoOpMetricsApi.java | 16 ++++++++++++++ 12 files changed, 118 insertions(+) create mode 100644 sentry/src/main/java/io/sentry/metrics/IMetricsApi.java create mode 100644 sentry/src/main/java/io/sentry/metrics/MetricsApi.java create mode 100644 sentry/src/main/java/io/sentry/metrics/NoOpMetricsApi.java diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 36386f7a134..62421cd2787 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -661,6 +661,7 @@ public final class io/sentry/HubAdapter : io/sentry/IHub { public fun isHealthy ()Z public fun logger ()Lio/sentry/logger/ILoggerApi; public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken; + public fun metrics ()Lio/sentry/metrics/IMetricsApi; public fun popScope ()V public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken; public fun pushScope ()Lio/sentry/ISentryLifecycleToken; @@ -732,6 +733,7 @@ public final class io/sentry/HubScopesWrapper : io/sentry/IHub { public fun isHealthy ()Z public fun logger ()Lio/sentry/logger/ILoggerApi; public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken; + public fun metrics ()Lio/sentry/metrics/IMetricsApi; public fun popScope ()V public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken; public fun pushScope ()Lio/sentry/ISentryLifecycleToken; @@ -992,6 +994,7 @@ public abstract interface class io/sentry/IScopes { public fun isNoOp ()Z public abstract fun logger ()Lio/sentry/logger/ILoggerApi; public abstract fun makeCurrent ()Lio/sentry/ISentryLifecycleToken; + public abstract fun metrics ()Lio/sentry/metrics/IMetricsApi; public abstract fun popScope ()V public abstract fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken; public abstract fun pushScope ()Lio/sentry/ISentryLifecycleToken; @@ -1565,6 +1568,7 @@ public final class io/sentry/NoOpHub : io/sentry/IHub { public fun isNoOp ()Z public fun logger ()Lio/sentry/logger/ILoggerApi; public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken; + public fun metrics ()Lio/sentry/metrics/IMetricsApi; public fun popScope ()V public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken; public fun pushScope ()Lio/sentry/ISentryLifecycleToken; @@ -1741,6 +1745,7 @@ public final class io/sentry/NoOpScopes : io/sentry/IScopes { public fun isNoOp ()Z public fun logger ()Lio/sentry/logger/ILoggerApi; public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken; + public fun metrics ()Lio/sentry/metrics/IMetricsApi; public fun popScope ()V public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken; public fun pushScope ()Lio/sentry/ISentryLifecycleToken; @@ -2456,6 +2461,7 @@ public final class io/sentry/Scopes : io/sentry/IScopes { public fun isHealthy ()Z public fun logger ()Lio/sentry/logger/ILoggerApi; public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken; + public fun metrics ()Lio/sentry/metrics/IMetricsApi; public fun popScope ()V public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken; public fun pushScope ()Lio/sentry/ISentryLifecycleToken; @@ -2528,6 +2534,7 @@ public final class io/sentry/ScopesAdapter : io/sentry/IScopes { public fun isHealthy ()Z public fun logger ()Lio/sentry/logger/ILoggerApi; public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken; + public fun metrics ()Lio/sentry/metrics/IMetricsApi; public fun popScope ()V public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken; public fun pushScope ()Lio/sentry/ISentryLifecycleToken; @@ -2648,6 +2655,7 @@ public final class io/sentry/Sentry { public static fun isEnabled ()Z public static fun isHealthy ()Z public static fun logger ()Lio/sentry/logger/ILoggerApi; + public static fun metrics ()Lio/sentry/metrics/IMetricsApi; public static fun popScope ()V public static fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken; public static fun pushScope ()Lio/sentry/ISentryLifecycleToken; @@ -5119,6 +5127,20 @@ public final class io/sentry/logger/SentryLogParameters { public fun setTimestamp (Lio/sentry/SentryDate;)V } +public abstract interface class io/sentry/metrics/IMetricsApi { + public abstract fun count (Ljava/lang/String;)V +} + +public final class io/sentry/metrics/MetricsApi : io/sentry/metrics/IMetricsApi { + public fun (Lio/sentry/Scopes;)V + public fun count (Ljava/lang/String;)V +} + +public final class io/sentry/metrics/NoOpMetricsApi : io/sentry/metrics/IMetricsApi { + public fun count (Ljava/lang/String;)V + public static fun getInstance ()Lio/sentry/metrics/NoOpMetricsApi; +} + public final class io/sentry/opentelemetry/OpenTelemetryUtil { public fun ()V public static fun applyIgnoredSpanOrigins (Lio/sentry/SentryOptions;)V diff --git a/sentry/src/main/java/io/sentry/HubAdapter.java b/sentry/src/main/java/io/sentry/HubAdapter.java index 31a2e219cd0..5715d061144 100644 --- a/sentry/src/main/java/io/sentry/HubAdapter.java +++ b/sentry/src/main/java/io/sentry/HubAdapter.java @@ -1,6 +1,7 @@ package io.sentry; import io.sentry.logger.ILoggerApi; +import io.sentry.metrics.IMetricsApi; import io.sentry.protocol.Feedback; import io.sentry.protocol.SentryId; import io.sentry.protocol.SentryTransaction; @@ -389,6 +390,11 @@ public void reportFullyDisplayed() { return Sentry.getCurrentScopes().logger(); } + @Override + public @NotNull IMetricsApi metrics() { + return Sentry.getCurrentScopes().metrics(); + } + @Override public void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result) { Sentry.addFeatureFlag(flag, result); diff --git a/sentry/src/main/java/io/sentry/HubScopesWrapper.java b/sentry/src/main/java/io/sentry/HubScopesWrapper.java index d15ed72ee4b..c04aad9ed8c 100644 --- a/sentry/src/main/java/io/sentry/HubScopesWrapper.java +++ b/sentry/src/main/java/io/sentry/HubScopesWrapper.java @@ -1,6 +1,7 @@ package io.sentry; import io.sentry.logger.ILoggerApi; +import io.sentry.metrics.IMetricsApi; import io.sentry.protocol.Feedback; import io.sentry.protocol.SentryId; import io.sentry.protocol.SentryTransaction; @@ -374,6 +375,11 @@ public void reportFullyDisplayed() { return scopes.logger(); } + @Override + public @NotNull IMetricsApi metrics() { + return scopes.metrics(); + } + @Override public void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result) { scopes.addFeatureFlag(flag, result); diff --git a/sentry/src/main/java/io/sentry/IScopes.java b/sentry/src/main/java/io/sentry/IScopes.java index bf78d28ecd3..0a7c86fa8e6 100644 --- a/sentry/src/main/java/io/sentry/IScopes.java +++ b/sentry/src/main/java/io/sentry/IScopes.java @@ -1,6 +1,7 @@ package io.sentry; import io.sentry.logger.ILoggerApi; +import io.sentry.metrics.IMetricsApi; import io.sentry.protocol.Feedback; import io.sentry.protocol.SentryId; import io.sentry.protocol.SentryTransaction; @@ -744,5 +745,8 @@ default boolean isNoOp() { @NotNull ILoggerApi logger(); + @NotNull + IMetricsApi metrics(); + void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result); } diff --git a/sentry/src/main/java/io/sentry/NoOpHub.java b/sentry/src/main/java/io/sentry/NoOpHub.java index 811e1d297a3..2885d8017d1 100644 --- a/sentry/src/main/java/io/sentry/NoOpHub.java +++ b/sentry/src/main/java/io/sentry/NoOpHub.java @@ -2,6 +2,8 @@ import io.sentry.logger.ILoggerApi; import io.sentry.logger.NoOpLoggerApi; +import io.sentry.metrics.IMetricsApi; +import io.sentry.metrics.NoOpMetricsApi; import io.sentry.protocol.Feedback; import io.sentry.protocol.SentryId; import io.sentry.protocol.SentryTransaction; @@ -331,6 +333,11 @@ public boolean isNoOp() { return NoOpLoggerApi.getInstance(); } + @Override + public @NotNull IMetricsApi metrics() { + return NoOpMetricsApi.getInstance(); + } + @Override public void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result) {} } diff --git a/sentry/src/main/java/io/sentry/NoOpScopes.java b/sentry/src/main/java/io/sentry/NoOpScopes.java index 40777da892f..5abb20226ac 100644 --- a/sentry/src/main/java/io/sentry/NoOpScopes.java +++ b/sentry/src/main/java/io/sentry/NoOpScopes.java @@ -2,6 +2,8 @@ import io.sentry.logger.ILoggerApi; import io.sentry.logger.NoOpLoggerApi; +import io.sentry.metrics.IMetricsApi; +import io.sentry.metrics.NoOpMetricsApi; import io.sentry.protocol.Feedback; import io.sentry.protocol.SentryId; import io.sentry.protocol.SentryTransaction; @@ -329,6 +331,11 @@ public boolean isNoOp() { return NoOpLoggerApi.getInstance(); } + @Override + public @NotNull IMetricsApi metrics() { + return NoOpMetricsApi.getInstance(); + } + @Override public void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result) {} } diff --git a/sentry/src/main/java/io/sentry/Scopes.java b/sentry/src/main/java/io/sentry/Scopes.java index c8afde59cc1..374ecbfdb55 100644 --- a/sentry/src/main/java/io/sentry/Scopes.java +++ b/sentry/src/main/java/io/sentry/Scopes.java @@ -5,6 +5,8 @@ import io.sentry.hints.SessionStartHint; import io.sentry.logger.ILoggerApi; import io.sentry.logger.LoggerApi; +import io.sentry.metrics.IMetricsApi; +import io.sentry.metrics.MetricsApi; import io.sentry.protocol.*; import io.sentry.transport.RateLimiter; import io.sentry.util.HintUtils; @@ -31,6 +33,7 @@ public final class Scopes implements IScopes { private final @NotNull CombinedScopeView combinedScope; private final @NotNull ILoggerApi logger; + private final @NotNull IMetricsApi metrics; public Scopes( final @NotNull IScope scope, @@ -57,6 +60,7 @@ private Scopes( validateOptions(options); this.compositePerformanceCollector = options.getCompositePerformanceCollector(); this.logger = new LoggerApi(this); + this.metrics = new MetricsApi(this); } public @NotNull String getCreator() { @@ -1220,6 +1224,11 @@ public void reportFullyDisplayed() { return logger; } + @Override + public @NotNull IMetricsApi metrics() { + return metrics; + } + @Override public void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result) { combinedScope.addFeatureFlag(flag, result); diff --git a/sentry/src/main/java/io/sentry/ScopesAdapter.java b/sentry/src/main/java/io/sentry/ScopesAdapter.java index 99e70694ee0..ba7e74d23bb 100644 --- a/sentry/src/main/java/io/sentry/ScopesAdapter.java +++ b/sentry/src/main/java/io/sentry/ScopesAdapter.java @@ -1,6 +1,7 @@ package io.sentry; import io.sentry.logger.ILoggerApi; +import io.sentry.metrics.IMetricsApi; import io.sentry.protocol.Feedback; import io.sentry.protocol.SentryId; import io.sentry.protocol.SentryTransaction; @@ -386,6 +387,11 @@ public void reportFullyDisplayed() { return Sentry.getCurrentScopes().logger(); } + @Override + public @NotNull IMetricsApi metrics() { + return Sentry.getCurrentScopes().metrics(); + } + @Override public void addFeatureFlag(final @Nullable String flag, final @Nullable Boolean result) { Sentry.addFeatureFlag(flag, result); diff --git a/sentry/src/main/java/io/sentry/Sentry.java b/sentry/src/main/java/io/sentry/Sentry.java index f726c1a602c..178f97a3b30 100644 --- a/sentry/src/main/java/io/sentry/Sentry.java +++ b/sentry/src/main/java/io/sentry/Sentry.java @@ -14,6 +14,7 @@ import io.sentry.internal.modules.NoOpModulesLoader; import io.sentry.internal.modules.ResourcesModulesLoader; import io.sentry.logger.ILoggerApi; +import io.sentry.metrics.IMetricsApi; import io.sentry.opentelemetry.OpenTelemetryUtil; import io.sentry.protocol.Feedback; import io.sentry.protocol.SentryId; @@ -1344,6 +1345,11 @@ public static IDistributionApi distribution() { return getCurrentScopes().getScope().getOptions().getDistributionController(); } + @NotNull + public static IMetricsApi metrics() { + return getCurrentScopes().metrics(); + } + public static void showUserFeedbackDialog() { showUserFeedbackDialog(null); } diff --git a/sentry/src/main/java/io/sentry/metrics/IMetricsApi.java b/sentry/src/main/java/io/sentry/metrics/IMetricsApi.java new file mode 100644 index 00000000000..ddd6bb9d410 --- /dev/null +++ b/sentry/src/main/java/io/sentry/metrics/IMetricsApi.java @@ -0,0 +1,11 @@ +package io.sentry.metrics; + +import org.jetbrains.annotations.NotNull; + +public interface IMetricsApi { + + void count(@NotNull final String name); + // distribution + // gauge + // +} diff --git a/sentry/src/main/java/io/sentry/metrics/MetricsApi.java b/sentry/src/main/java/io/sentry/metrics/MetricsApi.java new file mode 100644 index 00000000000..7b878de3d2d --- /dev/null +++ b/sentry/src/main/java/io/sentry/metrics/MetricsApi.java @@ -0,0 +1,18 @@ +package io.sentry.metrics; + +import io.sentry.Scopes; +import org.jetbrains.annotations.NotNull; + +public final class MetricsApi implements IMetricsApi { + + private final @NotNull Scopes scopes; + + public MetricsApi(final @NotNull Scopes scopes) { + this.scopes = scopes; + } + + @Override + public void count(@NotNull String name) { + scopes.getOptions(); + } +} diff --git a/sentry/src/main/java/io/sentry/metrics/NoOpMetricsApi.java b/sentry/src/main/java/io/sentry/metrics/NoOpMetricsApi.java new file mode 100644 index 00000000000..f6977b6953a --- /dev/null +++ b/sentry/src/main/java/io/sentry/metrics/NoOpMetricsApi.java @@ -0,0 +1,16 @@ +package io.sentry.metrics; + +import org.jetbrains.annotations.NotNull; + +public final class NoOpMetricsApi implements IMetricsApi { + private static final NoOpMetricsApi instance = new NoOpMetricsApi(); + + private NoOpMetricsApi() {} + + public static NoOpMetricsApi getInstance() { + return instance; + } + + @Override + public void count(@NotNull String name) {} +}