diff --git a/src/Sentry/Android/JavaExtensions.cs b/src/Sentry/Android/JavaExtensions.cs index 6db935af21..69e739fbf7 100644 --- a/src/Sentry/Android/JavaExtensions.cs +++ b/src/Sentry/Android/JavaExtensions.cs @@ -5,81 +5,12 @@ namespace Sentry.Android { internal static class JavaExtensions { - public static SentryLevel ToSentryLevel(this Java.SentryLevel level) - { - // note: switch doesn't work here because JNI enums are not constants - if (level == Java.SentryLevel.Debug) - return SentryLevel.Debug; - if (level == Java.SentryLevel.Info) - return SentryLevel.Info; - if (level == Java.SentryLevel.Warning) - return SentryLevel.Warning; - if (level == Java.SentryLevel.Error) - return SentryLevel.Error; - if (level == Java.SentryLevel.Fatal) - return SentryLevel.Fatal; - - throw new ArgumentOutOfRangeException(nameof(level), level, message: default); - } - - public static Java.SentryLevel ToJavaSentryLevel(this SentryLevel level) => - level switch - { - SentryLevel.Debug => Java.SentryLevel.Debug!, - SentryLevel.Info => Java.SentryLevel.Info!, - SentryLevel.Warning => Java.SentryLevel.Warning!, - SentryLevel.Error => Java.SentryLevel.Error!, - SentryLevel.Fatal => Java.SentryLevel.Fatal!, - _ => throw new ArgumentOutOfRangeException(nameof(level), level, message: default) - }; - public static SentryId ToSentryId(this Java.Protocol.SentryId sentryId) => new(Guid.Parse(sentryId.ToString())); public static SpanId ToSpanId(this Java.SpanId spanId) => new(spanId.ToString()); - public static SpanStatus ToSpanStatus(this Java.SpanStatus status) - { - // note: switch doesn't work here because JNI enums are not constants - if (status == Java.SpanStatus.Ok) - return SpanStatus.Ok; - if (status == Java.SpanStatus.DeadlineExceeded) - return SpanStatus.DeadlineExceeded; - if (status == Java.SpanStatus.Unauthenticated) - return SpanStatus.Unauthenticated; - if (status == Java.SpanStatus.PermissionDenied) - return SpanStatus.PermissionDenied; - if (status == Java.SpanStatus.NotFound) - return SpanStatus.NotFound; - if (status == Java.SpanStatus.ResourceExhausted) - return SpanStatus.ResourceExhausted; - if (status == Java.SpanStatus.InvalidArgument) - return SpanStatus.InvalidArgument; - if (status == Java.SpanStatus.Unimplemented) - return SpanStatus.Unimplemented; - if (status == Java.SpanStatus.Unavailable) - return SpanStatus.Unavailable; - if (status == Java.SpanStatus.InternalError) - return SpanStatus.InternalError; - if (status == Java.SpanStatus.UnknownError) - return SpanStatus.UnknownError; - if (status == Java.SpanStatus.Cancelled) - return SpanStatus.Cancelled; - if (status == Java.SpanStatus.AlreadyExists) - return SpanStatus.AlreadyExists; - if (status == Java.SpanStatus.FailedPrecondition) - return SpanStatus.FailedPrecondition; - if (status == Java.SpanStatus.Aborted) - return SpanStatus.Aborted; - if (status == Java.SpanStatus.OutOfRange) - return SpanStatus.OutOfRange; - if (status == Java.SpanStatus.DataLoss) - return SpanStatus.DataLoss; - - throw new ArgumentOutOfRangeException(nameof(status), status, message: default); - } - public static SentryEvent ToSentryEvent(this Java.SentryEvent sentryEvent, Java.SentryOptions javaOptions) { using var stream = new MemoryStream(); @@ -144,7 +75,7 @@ public static TransactionSamplingContext ToTransactionSamplingContext(this Java. tc.Name, tc.Operation, tc.Description, - tc.Status?.ToSpanStatus(), + (SpanStatus)tc.Status, tc.Sampled?.BooleanValue(), tc.ParentSampled?.BooleanValue()); diff --git a/src/Sentry/Android/JavaLogger.cs b/src/Sentry/Android/JavaLogger.cs index 55a9bec874..116870a0c5 100644 --- a/src/Sentry/Android/JavaLogger.cs +++ b/src/Sentry/Android/JavaLogger.cs @@ -7,15 +7,15 @@ internal class JavaLogger : JavaObject, Java.ILogger public JavaLogger(SentryOptions options) => _options = options; public void Log(Java.SentryLevel level, string message, JavaObject[]? args) => - _options.DiagnosticLogger?.Log(level.ToSentryLevel(), message, null, args?.Cast()); + _options.DiagnosticLogger?.Log((SentryLevel)level, message, null, args?.Cast()); public void Log(Java.SentryLevel level, string message, Throwable? throwable) => - _options.DiagnosticLogger?.Log(level.ToSentryLevel(), message, throwable); + _options.DiagnosticLogger?.Log((SentryLevel)level, message, throwable); public void Log(Java.SentryLevel level, Throwable? throwable, string message, params JavaObject[]? args) => - _options.DiagnosticLogger?.Log(level.ToSentryLevel(), message, throwable, args?.Cast()); + _options.DiagnosticLogger?.Log((SentryLevel)level, message, throwable, args?.Cast()); - public bool IsEnabled(Java.SentryLevel? level) => - level != null && _options.DiagnosticLogger?.IsEnabled(level.ToSentryLevel()) == true; + public bool IsEnabled(Java.SentryLevel level) => + _options.DiagnosticLogger?.IsEnabled((SentryLevel)level) == true; } } diff --git a/src/Sentry/Android/SentrySdk.cs b/src/Sentry/Android/SentrySdk.cs index 98f5442255..0196457529 100644 --- a/src/Sentry/Android/SentrySdk.cs +++ b/src/Sentry/Android/SentrySdk.cs @@ -61,7 +61,7 @@ public static IDisposable Init(AndroidContext context, SentryOptions options) // These options are copied over from our SentryOptions o.AttachStacktrace = options.AttachStacktrace; o.Debug = options.Debug; - o.DiagnosticLevel = options.DiagnosticLevel.ToJavaSentryLevel(); + o.DiagnosticLevel = (Java.SentryLevel)options.DiagnosticLevel; o.Dsn = options.Dsn; o.EnableAutoSessionTracking = options.AutoSessionTracking; o.Environment = options.Environment; diff --git a/src/Sentry/Android/Transforms/EnumFields.xml b/src/Sentry/Android/Transforms/EnumFields.xml new file mode 100644 index 0000000000..0575cb6f20 --- /dev/null +++ b/src/Sentry/Android/Transforms/EnumFields.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Sentry/Android/Transforms/Metadata.xml b/src/Sentry/Android/Transforms/Metadata.xml index 9c6bc0662a..3d4a1aadcf 100644 --- a/src/Sentry/Android/Transforms/Metadata.xml +++ b/src/Sentry/Android/Transforms/Metadata.xml @@ -46,6 +46,15 @@ SentryTraceHeaderName TraceStateHeaderName + + + Sentry.Java.SentryLevel + Sentry.Java.SentryLevel + + + Sentry.Java.SpanStatus + Sentry.Java.SpanStatus +