├── .craft.yml ├── .cursor └── rules │ └── coding.mdc ├── .editorconfig ├── .envrc ├── .git-blame-ignore-revs ├── .gitattributes ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report_android.yml │ ├── bug_report_java.yml │ ├── config.yml │ ├── feature_android.yml │ ├── feature_java.yml │ └── maintainer-blank.yml ├── dependabot.yml ├── file-filters.yml ├── pull_request_template.md └── workflows │ ├── add-platform-label.yml │ ├── agp-matrix.yml │ ├── build.yml │ ├── changes-in-high-risk-code.yml │ ├── codeql-analysis.yml │ ├── danger.yml │ ├── enforce-license-compliance.yml │ ├── format-code.yml │ ├── generate-javadocs.yml │ ├── integration-tests-benchmarks.yml │ ├── integration-tests-ui-critical.yml │ ├── integration-tests-ui.yml │ ├── release-build.yml │ ├── release.yml │ ├── system-tests-backend.yml │ └── update-deps.yml ├── .gitignore ├── .gitmodules ├── .mvn └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── .sauce ├── sentry-uitest-android-benchmark-lite.yml ├── sentry-uitest-android-benchmark.yml └── sentry-uitest-android-ui.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── MIGRATION.md ├── Makefile ├── README.md ├── build-logic ├── build.gradle.kts ├── settings.gradle.kts └── src │ └── main │ └── kotlin │ ├── io.sentry.javadoc.aggregate.gradle.kts │ ├── io.sentry.javadoc.gradle.kts │ ├── io.sentry.spotless.gradle.kts │ └── io │ └── sentry │ └── gradle │ └── AggregateJavadoc.kt ├── build.gradle.kts ├── buildSrc ├── build.gradle.kts ├── settings.gradle.kts └── src │ └── main │ └── java │ ├── Config.kt │ └── Publication.kt ├── codecov.yml ├── debug.keystore ├── detekt.yml ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── hooks └── pre-commit ├── requirements.txt ├── scripts ├── bump-version.sh ├── commit-formatted-code.sh ├── mvnw ├── mvnw.cmd ├── settings.xml ├── test-ui-critical.sh ├── toggle-codec-logs.sh ├── update-gradle.sh └── update-sentry-native-ndk.sh ├── sentry-android-core ├── .gitignore ├── api │ └── sentry-android-core.api ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── android │ │ │ └── core │ │ │ ├── ANRWatchDog.java │ │ │ ├── ActivityBreadcrumbsIntegration.java │ │ │ ├── ActivityFramesTracker.java │ │ │ ├── ActivityLifecycleIntegration.java │ │ │ ├── AndroidContinuousProfiler.java │ │ │ ├── AndroidCpuCollector.java │ │ │ ├── AndroidDateUtils.java │ │ │ ├── AndroidFatalLogger.java │ │ │ ├── AndroidLogger.java │ │ │ ├── AndroidMemoryCollector.java │ │ │ ├── AndroidOptionsInitializer.java │ │ │ ├── AndroidProfiler.java │ │ │ ├── AndroidSocketTagger.java │ │ │ ├── AndroidTransactionProfiler.java │ │ │ ├── AndroidTransportGate.java │ │ │ ├── AnrIntegration.java │ │ │ ├── AnrIntegrationFactory.java │ │ │ ├── AnrV2EventProcessor.java │ │ │ ├── AnrV2Integration.java │ │ │ ├── AppComponentsBreadcrumbsIntegration.java │ │ │ ├── AppLifecycleIntegration.java │ │ │ ├── AppState.java │ │ │ ├── ApplicationNotResponding.java │ │ │ ├── BuildInfoProvider.java │ │ │ ├── ContextUtils.java │ │ │ ├── CurrentActivityHolder.java │ │ │ ├── DefaultAndroidEventProcessor.java │ │ │ ├── DeviceInfoUtil.java │ │ │ ├── EmptySecureContentProvider.java │ │ │ ├── EnvelopeFileObserver.java │ │ │ ├── EnvelopeFileObserverIntegration.java │ │ │ ├── IDebugImagesLoader.java │ │ │ ├── Installation.java │ │ │ ├── InternalSentrySdk.java │ │ │ ├── LifecycleWatcher.java │ │ │ ├── LoadClass.java │ │ │ ├── MainLooperHandler.java │ │ │ ├── ManifestMetadataReader.java │ │ │ ├── NdkHandlerStrategy.java │ │ │ ├── NdkIntegration.java │ │ │ ├── NetworkBreadcrumbsIntegration.java │ │ │ ├── NoOpDebugImagesLoader.java │ │ │ ├── PerformanceAndroidEventProcessor.java │ │ │ ├── ScreenshotEventProcessor.java │ │ │ ├── SendCachedEnvelopeIntegration.java │ │ │ ├── SentryAndroid.java │ │ │ ├── SentryAndroidDateProvider.java │ │ │ ├── SentryAndroidOptions.java │ │ │ ├── SentryFrameMetrics.java │ │ │ ├── SentryInitProvider.java │ │ │ ├── SentryLogcatAdapter.java │ │ │ ├── SentryPerformanceProvider.java │ │ │ ├── SentryUserFeedbackButton.java │ │ │ ├── SentryUserFeedbackDialog.java │ │ │ ├── SpanFrameMetricsCollector.java │ │ │ ├── SystemEventsBreadcrumbsIntegration.java │ │ │ ├── UserInteractionIntegration.java │ │ │ ├── ViewHierarchyEventProcessor.java │ │ │ ├── cache │ │ │ └── AndroidEnvelopeCache.java │ │ │ ├── internal │ │ │ ├── debugmeta │ │ │ │ └── AssetsDebugMetaLoader.java │ │ │ ├── gestures │ │ │ │ ├── AndroidViewGestureTargetLocator.java │ │ │ │ ├── NoOpWindowCallback.java │ │ │ │ ├── SentryGestureListener.java │ │ │ │ ├── SentryWindowCallback.java │ │ │ │ ├── ViewUtils.java │ │ │ │ └── WindowCallbackAdapter.java │ │ │ ├── modules │ │ │ │ └── AssetsModulesLoader.java │ │ │ ├── threaddump │ │ │ │ ├── Line.java │ │ │ │ ├── Lines.java │ │ │ │ └── ThreadDumpParser.java │ │ │ └── util │ │ │ │ ├── AndroidConnectionStatusProvider.java │ │ │ │ ├── AndroidCurrentDateProvider.java │ │ │ │ ├── AndroidThreadChecker.java │ │ │ │ ├── BreadcrumbFactory.java │ │ │ │ ├── ClassUtil.java │ │ │ │ ├── ContentProviderSecurityChecker.java │ │ │ │ ├── CpuInfoUtils.java │ │ │ │ ├── Debouncer.java │ │ │ │ ├── DeviceOrientations.java │ │ │ │ ├── FirstDrawDoneListener.java │ │ │ │ ├── Permissions.java │ │ │ │ ├── RootChecker.java │ │ │ │ ├── ScreenshotUtils.java │ │ │ │ └── SentryFrameMetricsCollector.java │ │ │ ├── performance │ │ │ ├── ActivityLifecycleCallbacksAdapter.java │ │ │ ├── ActivityLifecycleSpanHelper.java │ │ │ ├── ActivityLifecycleTimeSpan.java │ │ │ ├── AppStartMetrics.java │ │ │ ├── TimeSpan.java │ │ │ └── WindowContentChangedCallback.java │ │ │ └── util │ │ │ └── AndroidLazyEvaluator.java │ └── res │ │ ├── drawable │ │ ├── sentry_edit_text_border.xml │ │ ├── sentry_logo_dark.xml │ │ ├── sentry_oval_button_ripple_background.xml │ │ └── sentry_user_feedback_button_logo_24.xml │ │ ├── layout │ │ └── sentry_dialog_user_feedback.xml │ │ └── values │ │ ├── attrs.xml │ │ └── public.xml │ └── test │ ├── AndroidManifest.xml │ ├── assets │ └── sentry-debug-meta.properties │ ├── java │ └── io │ │ └── sentry │ │ └── android │ │ └── core │ │ ├── ANRWatchDogTest.kt │ │ ├── ActivityBreadcrumbsIntegrationTest.kt │ │ ├── ActivityFramesTrackerTest.kt │ │ ├── ActivityLifecycleIntegrationTest.kt │ │ ├── AndroidConnectionStatusProviderTest.kt │ │ ├── AndroidContinuousProfilerTest.kt │ │ ├── AndroidCpuCollectorTest.kt │ │ ├── AndroidMemoryCollectorTest.kt │ │ ├── AndroidOptionsInitializerTest.kt │ │ ├── AndroidProfilerTest.kt │ │ ├── AndroidTransactionProfilerTest.kt │ │ ├── AndroidTransportGateTest.kt │ │ ├── AnrIntegrationTest.kt │ │ ├── AnrV2EventProcessorTest.kt │ │ ├── AnrV2IntegrationTest.kt │ │ ├── AppComponentsBreadcrumbsIntegrationTest.kt │ │ ├── AppLifecycleIntegrationTest.kt │ │ ├── ApplicationStub.kt │ │ ├── CachedEvent.kt │ │ ├── ContextUtilsTest.kt │ │ ├── ContextUtilsTestHelper.kt │ │ ├── CustomCachedApplyScopeDataHint.kt │ │ ├── DefaultAndroidEventProcessorTest.kt │ │ ├── DeviceInfoUtilTest.kt │ │ ├── EnvelopeFileObserverIntegrationTest.kt │ │ ├── EnvelopeFileObserverTest.kt │ │ ├── InstallationTest.kt │ │ ├── InternalSentrySdkTest.kt │ │ ├── LifecycleWatcherTest.kt │ │ ├── ManifestMetadataReaderTest.kt │ │ ├── NdkIntegrationTest.kt │ │ ├── NetworkBreadcrumbsIntegrationTest.kt │ │ ├── PerformanceAndroidEventProcessorTest.kt │ │ ├── PermissionsTest.kt │ │ ├── ScreenshotEventProcessorTest.kt │ │ ├── SendCachedEnvelopeIntegrationTest.kt │ │ ├── SentryAndroidDateProviderTest.kt │ │ ├── SentryAndroidOptionsTest.kt │ │ ├── SentryAndroidTest.kt │ │ ├── SentryFrameMetricsTest.kt │ │ ├── SentryInitProviderTest.kt │ │ ├── SentryLogcatAdapterTest.kt │ │ ├── SentryNdk.kt │ │ ├── SentryPerformanceProviderTest.kt │ │ ├── SentryShadowProcess.kt │ │ ├── SentryUserFeedbackDialogTest.kt │ │ ├── SessionTrackingIntegrationTest.kt │ │ ├── SpanFrameMetricsCollectorTest.kt │ │ ├── SystemEventsBreadcrumbsIntegrationTest.kt │ │ ├── UserInteractionIntegrationTest.kt │ │ ├── ViewHierarchyEventProcessorTest.kt │ │ ├── cache │ │ └── AndroidEnvelopeCacheTest.kt │ │ ├── internal │ │ ├── debugmeta │ │ │ └── AssetsDebugMetaLoaderTest.kt │ │ ├── gestures │ │ │ ├── SentryGestureListenerClickTest.kt │ │ │ ├── SentryGestureListenerScrollTest.kt │ │ │ ├── SentryGestureListenerTracingTest.kt │ │ │ ├── SentryWindowCallbackTest.kt │ │ │ ├── ViewHelpers.kt │ │ │ └── ViewUtilsTest.kt │ │ ├── modules │ │ │ └── AssetsModulesLoaderTest.kt │ │ ├── threaddump │ │ │ └── ThreadDumpParserTest.kt │ │ └── util │ │ │ ├── AndroidThreadCheckerTest.kt │ │ │ ├── ClassUtilTest.kt │ │ │ ├── ContentProviderSecurityCheckerTest.kt │ │ │ ├── CpuInfoUtilsTest.kt │ │ │ ├── DebouncerTest.kt │ │ │ ├── DeviceOrientationsTest.kt │ │ │ ├── FirstDrawDoneListenerTest.kt │ │ │ ├── RootCheckerTest.kt │ │ │ ├── ScreenshotUtilTest.kt │ │ │ └── SentryFrameMetricsCollectorTest.kt │ │ └── performance │ │ ├── ActivityLifecycleSpanHelperTest.kt │ │ ├── ActivityLifecycleTimeSpanTest.kt │ │ ├── AppStartMetricsTest.kt │ │ └── TimeSpanTest.kt │ └── resources │ ├── mockito-extensions │ └── org.mockito.plugins.MockMaker │ ├── robolectric.properties │ ├── thread_dump.txt │ ├── thread_dump_bad_data.txt │ └── thread_dump_native_only.txt ├── sentry-android-fragment ├── .gitignore ├── api │ └── sentry-android-fragment.api ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── android │ │ │ └── fragment │ │ │ ├── FragmentLifecycleIntegration.kt │ │ │ ├── FragmentLifecycleState.kt │ │ │ └── SentryFragmentLifecycleCallbacks.kt │ └── res │ │ └── values │ │ └── public.xml │ └── test │ └── java │ └── io │ └── sentry │ └── android │ └── fragment │ ├── FragmentLifecycleIntegrationTest.kt │ ├── FragmentLifecycleStateTest.kt │ └── SentryFragmentLifecycleCallbacksTest.kt ├── sentry-android-integration-tests ├── README.md ├── metrics-test.yml ├── sentry-uitest-android-benchmark │ ├── .gitignore │ ├── benchmark-proguard-rules.pro │ ├── build.gradle.kts │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── io │ │ │ └── sentry │ │ │ └── uitest │ │ │ └── android │ │ │ └── benchmark │ │ │ ├── BaseBenchmarkTest.kt │ │ │ ├── SentryBenchmarkTest.kt │ │ │ └── util │ │ │ ├── BenchmarkComparisonResult.kt │ │ │ ├── BenchmarkOperation.kt │ │ │ └── BenchmarkOperationComparable.kt │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── uitest │ │ │ └── android │ │ │ └── benchmark │ │ │ ├── BenchmarkActivity.kt │ │ │ └── BenchmarkTransactionListAdapter.kt │ │ └── res │ │ └── layout │ │ ├── activity_benchmark.xml │ │ └── benchmark_item_list.xml ├── sentry-uitest-android-critical │ ├── .gitignore │ ├── build.gradle.kts │ ├── maestro │ │ ├── corruptEnvelope.yaml │ │ └── crash.yaml │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── io │ │ └── sentry │ │ └── uitest │ │ └── android │ │ └── critical │ │ └── MainActivity.kt ├── sentry-uitest-android │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── io │ │ │ └── sentry │ │ │ └── uitest │ │ │ └── android │ │ │ ├── AutomaticSpansTest.kt │ │ │ ├── BaseUiTest.kt │ │ │ ├── EnvelopeTests.kt │ │ │ ├── ReplayTest.kt │ │ │ ├── SdkInitTests.kt │ │ │ ├── UserFeedbackUiTest.kt │ │ │ ├── UserInteractionTests.kt │ │ │ └── mockservers │ │ │ ├── EnvelopeAsserter.kt │ │ │ ├── MockRelay.kt │ │ │ └── RelayAsserter.kt │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── uitest │ │ │ └── android │ │ │ ├── ComposeActivity.kt │ │ │ ├── EmptyActivity.kt │ │ │ ├── ProfilingSampleActivity.kt │ │ │ └── utils │ │ │ └── BooleanIdlingResource.kt │ │ └── res │ │ ├── layout │ │ ├── activity_profiling_sample.xml │ │ └── profiling_sample_item_list.xml │ │ └── values │ │ └── values.xml ├── test-app-plain │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── java │ │ │ └── tests │ │ │ └── perf │ │ │ └── appplain │ │ │ ├── FirstFragment.java │ │ │ ├── MainActivity.java │ │ │ └── SecondFragment.java │ │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── content_main.xml │ │ ├── fragment_first.xml │ │ └── fragment_second.xml │ │ ├── menu │ │ └── menu_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── navigation │ │ └── nav_graph.xml │ │ ├── values-land │ │ └── dimens.xml │ │ ├── values-night │ │ └── themes.xml │ │ ├── values-w1240dp │ │ └── dimens.xml │ │ ├── values-w600dp │ │ └── dimens.xml │ │ ├── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── themes.xml │ │ └── xml │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml └── test-app-sentry │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── io │ │ └── sentry │ │ └── java │ │ └── tests │ │ └── perf │ │ └── appsentry │ │ ├── FirstFragment.java │ │ ├── MainActivity.java │ │ └── SecondFragment.java │ └── res │ ├── drawable-v24 │ └── ic_launcher_foreground.xml │ ├── drawable │ └── ic_launcher_background.xml │ ├── layout │ ├── activity_main.xml │ ├── content_main.xml │ ├── fragment_first.xml │ └── fragment_second.xml │ ├── menu │ └── menu_main.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── navigation │ └── nav_graph.xml │ ├── values-land │ └── dimens.xml │ ├── values-night │ └── themes.xml │ ├── values-w1240dp │ └── dimens.xml │ ├── values-w600dp │ └── dimens.xml │ ├── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── themes.xml │ └── xml │ ├── backup_rules.xml │ └── data_extraction_rules.xml ├── sentry-android-navigation ├── .gitignore ├── api │ └── sentry-android-navigation.api ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── android │ │ │ └── navigation │ │ │ └── SentryNavigationListener.kt │ └── res │ │ └── values │ │ └── public.xml │ └── test │ └── java │ └── io │ └── sentry │ └── android │ └── navigation │ └── SentryNavigationListenerTest.kt ├── sentry-android-ndk ├── api │ └── sentry-android-ndk.api ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── android │ │ │ └── ndk │ │ │ ├── DebugImagesLoader.java │ │ │ ├── NdkScopeObserver.java │ │ │ ├── SentryNdk.java │ │ │ └── SentryNdkUtil.java │ └── res │ │ └── values │ │ └── public.xml │ └── test │ ├── java │ └── io │ │ └── sentry │ │ └── android │ │ └── ndk │ │ ├── DebugImagesLoaderTest.kt │ │ ├── NdkScopeObserverTest.kt │ │ ├── SentryNdkTest.kt │ │ └── SentryNdkUtilTest.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-android-replay ├── .gitignore ├── api │ └── sentry-android-replay.api ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── android │ │ │ └── replay │ │ │ ├── DefaultReplayBreadcrumbConverter.kt │ │ │ ├── ModifierExtensions.kt │ │ │ ├── Recorder.kt │ │ │ ├── ReplayCache.kt │ │ │ ├── ReplayIntegration.kt │ │ │ ├── ReplayLifecycle.kt │ │ │ ├── ScreenshotRecorder.kt │ │ │ ├── SessionReplayOptions.kt │ │ │ ├── ViewExtensions.kt │ │ │ ├── WindowRecorder.kt │ │ │ ├── Windows.kt │ │ │ ├── capture │ │ │ ├── BaseCaptureStrategy.kt │ │ │ ├── BufferCaptureStrategy.kt │ │ │ ├── CaptureStrategy.kt │ │ │ └── SessionCaptureStrategy.kt │ │ │ ├── gestures │ │ │ ├── GestureRecorder.kt │ │ │ └── ReplayGestureConverter.kt │ │ │ ├── util │ │ │ ├── Context.kt │ │ │ ├── DebugOverlayDrawable.kt │ │ │ ├── Executors.kt │ │ │ ├── FixedWindowCallback.java │ │ │ ├── MainLooperHandler.kt │ │ │ ├── Nodes.kt │ │ │ ├── Persistable.kt │ │ │ ├── Sampling.kt │ │ │ ├── SystemProperties.kt │ │ │ ├── TextLayout.kt │ │ │ └── Views.kt │ │ │ ├── video │ │ │ ├── SimpleFrameMuxer.kt │ │ │ ├── SimpleMp4FrameMuxer.kt │ │ │ └── SimpleVideoEncoder.kt │ │ │ └── viewhierarchy │ │ │ ├── ComposeViewHierarchyNode.kt │ │ │ └── ViewHierarchyNode.kt │ ├── res │ │ └── values │ │ │ └── public.xml │ └── resources │ │ └── META-INF │ │ └── io │ │ └── sentry │ │ └── sentry-android-replay │ │ └── verification.properties │ └── test │ ├── AndroidManifest.xml │ ├── java │ └── io │ │ └── sentry │ │ └── android │ │ └── replay │ │ ├── AnrWithReplayIntegrationTest.kt │ │ ├── DefaultReplayBreadcrumbConverterTest.kt │ │ ├── ReplayCacheTest.kt │ │ ├── ReplayIntegrationTest.kt │ │ ├── ReplayIntegrationWithRecorderTest.kt │ │ ├── ReplayLifecycleTest.kt │ │ ├── ReplaySmokeTest.kt │ │ ├── capture │ │ ├── BufferCaptureStrategyTest.kt │ │ └── SessionCaptureStrategyTest.kt │ │ ├── gestures │ │ ├── GestureRecorderTest.kt │ │ └── ReplayGestureConverterTest.kt │ │ ├── util │ │ ├── ReplayShadowMediaCodec.kt │ │ ├── TextViewDominantColorTest.kt │ │ └── ViewsTest.kt │ │ └── viewhierarchy │ │ ├── ComposeMaskingOptionsTest.kt │ │ ├── ContainerMaskingOptionsTest.kt │ │ └── MaskingOptionsTest.kt │ └── resources │ └── Tongariro.jpg ├── sentry-android-sqlite ├── api │ └── sentry-android-sqlite.api ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── android │ │ │ └── sqlite │ │ │ ├── SQLiteSpanManager.kt │ │ │ ├── SentryCrossProcessCursor.kt │ │ │ ├── SentrySupportSQLiteDatabase.kt │ │ │ ├── SentrySupportSQLiteOpenHelper.kt │ │ │ └── SentrySupportSQLiteStatement.kt │ └── res │ │ └── values │ │ └── public.xml │ └── test │ ├── java │ └── io │ │ └── sentry │ │ └── android │ │ └── sqlite │ │ ├── SQLiteSpanManagerTest.kt │ │ ├── SentryCrossProcessCursorTest.kt │ │ ├── SentrySupportSQLiteDatabaseTest.kt │ │ ├── SentrySupportSQLiteOpenHelperTest.kt │ │ └── SentrySupportSQLiteStatementTest.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-android-timber ├── api │ └── sentry-android-timber.api ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── android │ │ │ └── timber │ │ │ ├── SentryTimberIntegration.kt │ │ │ └── SentryTimberTree.kt │ └── res │ │ └── values │ │ └── public.xml │ └── test │ ├── java │ └── io │ │ └── sentry │ │ └── android │ │ └── timber │ │ ├── SentryTimberIntegrationTest.kt │ │ └── SentryTimberTreeTest.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-android ├── build.gradle.kts ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ └── res │ └── values │ └── public.xml ├── sentry-apache-http-client-5 ├── api │ └── sentry-apache-http-client-5.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── transport │ │ └── apache │ │ ├── ApacheHttpClientTransport.java │ │ └── ApacheHttpClientTransportFactory.java │ └── test │ ├── kotlin │ └── io │ │ └── sentry │ │ ├── SentryOptionsManipulator.kt │ │ └── transport │ │ └── apache │ │ ├── ApacheHttpClientTransportClientReportTest.kt │ │ ├── ApacheHttpClientTransportFactoryTest.kt │ │ └── ApacheHttpClientTransportTest.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-apollo-3 ├── api │ └── sentry-apollo-3.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── apollo3 │ │ ├── SentryApollo3ClientException.kt │ │ ├── SentryApollo3HttpInterceptor.kt │ │ ├── SentryApollo3Interceptor.kt │ │ └── SentryApolloBuilderExtensions.kt │ └── test │ ├── java │ └── io │ │ └── sentry │ │ ├── apollo3 │ │ ├── LaunchDetailsQuery.kt │ │ ├── SentryApollo3InterceptorClientErrors.kt │ │ ├── SentryApollo3InterceptorTest.kt │ │ ├── SentryApollo3InterceptorWithVariablesTest.kt │ │ ├── adapter │ │ │ ├── LaunchDetailsQuery_ResponseAdapter.kt │ │ │ └── LaunchDetailsQuery_VariablesAdapter.kt │ │ ├── selections │ │ │ └── LaunchDetailsQuerySelections.kt │ │ └── type │ │ │ ├── GraphQLBoolean.kt │ │ │ ├── GraphQLID.kt │ │ │ ├── GraphQLString.kt │ │ │ ├── Launch.kt │ │ │ ├── Mission.kt │ │ │ ├── Query.kt │ │ │ └── Rocket.kt │ │ └── util │ │ └── Apollo3PlatformTestManipulator.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-apollo-4 ├── README.md ├── api │ └── sentry-apollo-4.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── apollo4 │ │ ├── SentryApollo4.kt │ │ ├── SentryApollo4ClientException.kt │ │ ├── SentryApollo4HttpInterceptor.kt │ │ ├── SentryApollo4Interceptor.kt │ │ └── SentryApolloBuilderExtensions.kt │ └── test │ ├── java │ └── io │ │ └── sentry │ │ ├── apollo4 │ │ ├── SentryApollo4BuilderExtensionsClientErrorsTest.kt │ │ ├── SentryApollo4BuilderExtensionsTest.kt │ │ ├── SentryApollo4HttpInterceptorTest.kt │ │ └── generated │ │ │ ├── LaunchDetailsQuery.kt │ │ │ ├── adapter │ │ │ ├── LaunchDetailsQuery_ResponseAdapter.kt │ │ │ └── LaunchDetailsQuery_VariablesAdapter.kt │ │ │ ├── selections │ │ │ └── LaunchDetailsQuerySelections.kt │ │ │ └── type │ │ │ ├── GraphQLBoolean.kt │ │ │ ├── GraphQLID.kt │ │ │ ├── GraphQLString.kt │ │ │ ├── Launch.kt │ │ │ ├── Mission.kt │ │ │ ├── Query.kt │ │ │ └── Rocket.kt │ │ └── util │ │ └── Apollo4PlatformTestManipulator.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-apollo ├── api │ └── sentry-apollo.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── apollo │ │ └── SentryApolloInterceptor.kt │ └── test │ ├── java │ └── io │ │ └── sentry │ │ ├── apollo │ │ ├── LaunchDetailsQuery.java │ │ ├── SentryApolloInterceptorTest.kt │ │ └── type │ │ │ └── CustomType.java │ │ └── util │ │ └── ApolloPlatformTestManipulator.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-bom └── build.gradle.kts ├── sentry-compose ├── .gitignore ├── README.md ├── api │ ├── android │ │ └── sentry-compose.api │ └── desktop │ │ └── sentry-compose.api ├── build.gradle.kts ├── gradle.properties ├── proguard-rules.pro └── src │ ├── androidMain │ ├── kotlin │ │ └── io │ │ │ └── sentry │ │ │ └── compose │ │ │ ├── SentryComposeHelper.kt │ │ │ ├── SentryComposeTracing.kt │ │ │ ├── SentryModifier.kt │ │ │ ├── SentryNavigationIntegration.kt │ │ │ ├── gestures │ │ │ └── ComposeGestureTargetLocator.kt │ │ │ └── viewhierarchy │ │ │ └── ComposeViewHierarchyExporter.kt │ └── res │ │ └── values │ │ └── public.xml │ └── androidUnitTest │ └── kotlin │ └── io │ └── sentry │ └── compose │ ├── ComposeIntegrationTests.kt │ ├── SentryLifecycleObserverTest.kt │ ├── SentryModifierComposeTest.kt │ └── viewhierarchy │ └── ComposeViewHierarchyExporterTest.kt ├── sentry-graphql-22 ├── api │ └── sentry-graphql-22.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── graphql22 │ │ └── SentryInstrumentation.java │ └── test │ └── kotlin │ └── io │ └── sentry │ └── graphql22 │ ├── SentryInstrumentationAnotherTest.kt │ └── SentryInstrumentationTest.kt ├── sentry-graphql-core ├── api │ └── sentry-graphql-core.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── graphql │ │ ├── ExceptionReporter.java │ │ ├── GraphqlStringUtils.java │ │ ├── NoOpSubscriptionHandler.java │ │ ├── SentryGenericDataFetcherExceptionHandler.java │ │ ├── SentryGraphqlExceptionHandler.java │ │ ├── SentryGraphqlInstrumentation.java │ │ └── SentrySubscriptionHandler.java │ └── test │ └── kotlin │ └── io │ └── sentry │ └── graphql │ ├── ExceptionReporterTest.kt │ ├── GraphqlStringUtilsTest.kt │ └── SentryGenericDataFetcherExceptionHandlerTest.kt ├── sentry-graphql ├── api │ └── sentry-graphql.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── graphql │ │ └── SentryInstrumentation.java │ └── test │ └── kotlin │ └── io │ └── sentry │ └── graphql │ ├── SentryInstrumentationAnotherTest.kt │ └── SentryInstrumentationTest.kt ├── sentry-jdbc ├── api │ └── sentry-jdbc.api ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── jdbc │ │ │ ├── DatabaseUtils.java │ │ │ └── SentryJdbcEventListener.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── com.p6spy.engine.event.JdbcEventListener │ └── test │ └── kotlin │ └── io │ └── sentry │ └── jdbc │ ├── DatabaseUtilsTest.kt │ └── SentryJdbcEventListenerTest.kt ├── sentry-jul ├── api │ └── sentry-jul.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── jul │ │ └── SentryHandler.java │ └── test │ ├── kotlin │ └── io │ │ └── sentry │ │ └── jul │ │ └── SentryHandlerTest.kt │ └── resources │ ├── logging.properties │ ├── mockito-extensions │ └── org.mockito.plugins.MockMaker │ └── sentry.properties ├── sentry-kotlin-extensions ├── api │ └── sentry-kotlin-extensions.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── kotlin │ │ ├── SentryContext.kt │ │ └── SentryCoroutineExceptionHandler.kt │ └── test │ └── java │ └── io │ └── sentry │ └── kotlin │ ├── SentryContextTest.kt │ └── SentryCoroutineExceptionHandlerTest.kt ├── sentry-log4j2 ├── api │ └── sentry-log4j2.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── log4j2 │ │ └── SentryAppender.java │ └── test │ ├── kotlin │ └── io │ │ └── sentry │ │ └── log4j2 │ │ └── SentryAppenderTest.kt │ └── resources │ ├── mockito-extensions │ └── org.mockito.plugins.MockMaker │ └── sentry.properties ├── sentry-logback ├── api │ └── sentry-logback.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── logback │ │ └── SentryAppender.java │ └── test │ ├── kotlin │ └── io │ │ └── sentry │ │ └── logback │ │ └── SentryAppenderTest.kt │ └── resources │ ├── mockito-extensions │ └── org.mockito.plugins.MockMaker │ └── sentry.properties ├── sentry-okhttp ├── api │ └── sentry-okhttp.api ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── okhttp │ │ │ ├── SentryOkHttpEvent.kt │ │ │ ├── SentryOkHttpEventListener.kt │ │ │ ├── SentryOkHttpInterceptor.kt │ │ │ └── SentryOkHttpUtils.kt │ └── resources │ │ └── META-INF │ │ └── proguard │ │ └── sentry-okhttp.pro │ └── test │ ├── java │ └── io │ │ └── sentry │ │ └── okhttp │ │ ├── SentryOkHttpEventListenerTest.kt │ │ ├── SentryOkHttpEventTest.kt │ │ ├── SentryOkHttpInterceptorTest.kt │ │ └── SentryOkHttpUtilsTest.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugin.MockMaker ├── sentry-openfeign ├── api │ └── sentry-openfeign.api ├── build.gradle.kts └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── openfeign │ │ ├── SentryCapability.java │ │ └── SentryFeignClient.java │ └── test │ ├── kotlin │ └── io │ │ └── sentry │ │ └── openfeign │ │ └── SentryFeignClientTest.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-opentelemetry ├── README.md ├── sentry-opentelemetry-agent │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── sentry │ │ └── opentelemetry │ │ └── agent │ │ └── AgentMarker.java ├── sentry-opentelemetry-agentcustomization │ ├── api │ │ └── sentry-opentelemetry-agentcustomization.api │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── opentelemetry │ │ │ ├── SentryAutoConfigurationCustomizerProvider.java │ │ │ ├── SentryBootstrapPackagesProvider.java │ │ │ └── SentryPropagatorProvider.java │ │ └── resources │ │ └── META-INF │ │ └── services │ │ ├── io.opentelemetry.javaagent.tooling.bootstrap.BootstrapPackagesConfigurer │ │ ├── io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider │ │ └── io.opentelemetry.sdk.autoconfigure.spi.ConfigurablePropagatorProvider ├── sentry-opentelemetry-agentless-spring │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── sentry │ │ └── opentelemetry │ │ └── agent │ │ └── AgentlessSpringMarker.java ├── sentry-opentelemetry-agentless │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── sentry │ │ └── opentelemetry │ │ └── agent │ │ └── AgentlessMarker.java ├── sentry-opentelemetry-bootstrap │ ├── api │ │ └── sentry-opentelemetry-bootstrap.api │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── opentelemetry │ │ │ ├── IOtelSpanWrapper.java │ │ │ ├── InternalSemanticAttributes.java │ │ │ ├── OtelContextScopesStorage.java │ │ │ ├── OtelSpanFactory.java │ │ │ ├── OtelStorageToken.java │ │ │ ├── OtelStrongRefSpanWrapper.java │ │ │ ├── OtelTransactionSpanForwarder.java │ │ │ ├── SentryContextStorage.java │ │ │ ├── SentryContextStorageProvider.java │ │ │ ├── SentryContextWrapper.java │ │ │ ├── SentryOtelKeys.java │ │ │ ├── SentryOtelThreadLocalStorage.java │ │ │ └── SentryWeakSpanStorage.java │ │ └── resources │ │ └── META-INF │ │ └── services │ │ └── io.opentelemetry.context.ContextStorageProvider └── sentry-opentelemetry-core │ ├── api │ └── sentry-opentelemetry-core.api │ ├── build.gradle.kts │ └── src │ ├── main │ └── java │ │ └── io │ │ └── sentry │ │ └── opentelemetry │ │ ├── OpenTelemetryAttributesExtractor.java │ │ ├── OpenTelemetryLinkErrorEventProcessor.java │ │ ├── OtelInternalSpanDetectionUtil.java │ │ ├── OtelSamplingUtil.java │ │ ├── OtelSentryPropagator.java │ │ ├── OtelSentrySpanProcessor.java │ │ ├── OtelSpanContext.java │ │ ├── OtelSpanInfo.java │ │ ├── OtelSpanUtils.java │ │ ├── OtelSpanWrapper.java │ │ ├── SentryPropagator.java │ │ ├── SentrySampler.java │ │ ├── SentrySamplingResult.java │ │ ├── SentrySpanExporter.java │ │ ├── SentrySpanProcessor.java │ │ ├── SpanDescriptionExtractor.java │ │ ├── SpanNode.java │ │ └── TraceData.java │ └── test │ └── kotlin │ ├── OpenTelemetryAttributesExtractorTest.kt │ ├── OtelInternalSpanDetectionUtilTest.kt │ ├── OtelSentryPropagatorTest.kt │ ├── SentrySpanProcessorTest.kt │ └── SpanDescriptionExtractorTest.kt ├── sentry-quartz ├── api │ └── sentry-quartz.api ├── build.gradle.kts └── src │ └── main │ └── java │ └── io │ └── sentry │ └── quartz │ └── SentryJobListener.java ├── sentry-reactor ├── README.md ├── api │ └── sentry-reactor.api ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── reactor │ │ │ ├── SentryReactorThreadLocalAccessor.java │ │ │ └── SentryReactorUtils.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── io.micrometer.context.ThreadLocalAccessor │ └── test │ └── kotlin │ └── io │ └── sentry │ └── reactor │ └── SentryReactorUtilsTest.kt ├── sentry-samples ├── sentry-samples-android │ ├── .gitignore │ ├── CMakeLists.txt │ ├── build.gradle.kts │ ├── maestro │ │ ├── README.md │ │ └── orientation_change_flow.yml │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── cpp │ │ └── native-sample.cpp │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── samples │ │ │ └── android │ │ │ ├── CoroutinesUtil.kt │ │ │ ├── FrameDataForSpansActivity.kt │ │ │ ├── GesturesActivity.kt │ │ │ ├── GitHubService.kt │ │ │ ├── GithubAPI.kt │ │ │ ├── MainActivity.java │ │ │ ├── MyApplication.java │ │ │ ├── NativeSample.java │ │ │ ├── PermissionsActivity.kt │ │ │ ├── ProfilingActivity.kt │ │ │ ├── ProfilingListAdapter.kt │ │ │ ├── SampleFragment.kt │ │ │ ├── SampleInnerFragment.kt │ │ │ ├── SecondActivity.kt │ │ │ ├── SharedState.kt │ │ │ ├── ThirdActivityFragment.kt │ │ │ ├── ThirdFragment.kt │ │ │ └── compose │ │ │ └── ComposeActivity.kt │ │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── ic_launcher_background.xml │ │ └── sentry_glyph.xml │ │ ├── layout │ │ ├── activity_gestures.xml │ │ ├── activity_main.xml │ │ ├── activity_permissions.xml │ │ ├── activity_profiling.xml │ │ ├── activity_second.xml │ │ ├── activity_third_fragment.xml │ │ ├── fragment_recycler.xml │ │ ├── fragment_sample.xml │ │ ├── fragment_sample_inner.xml │ │ ├── fragment_scrolling.xml │ │ ├── profiling_item_list.xml │ │ └── third_fragment.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── raw │ │ └── sentry.png │ │ ├── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── network.xml ├── sentry-samples-console-opentelemetry-noagent │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── sentry │ │ └── samples │ │ └── console │ │ └── Main.java ├── sentry-samples-console │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ └── java │ │ │ └── io │ │ │ └── sentry │ │ │ └── samples │ │ │ └── console │ │ │ └── Main.java │ │ └── test │ │ └── kotlin │ │ └── io │ │ └── sentry │ │ ├── DummyTest.kt │ │ └── systemtest │ │ └── ConsoleApplicationSystemTest.kt ├── sentry-samples-jul │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── samples │ │ │ └── jul │ │ │ └── Main.java │ │ └── resources │ │ ├── logging.properties │ │ └── sentry.properties ├── sentry-samples-log4j2 │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── samples │ │ │ └── log4j2 │ │ │ └── Main.java │ │ └── resources │ │ ├── log4j2.xml │ │ └── sentry.properties ├── sentry-samples-logback │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── samples │ │ │ └── logback │ │ │ └── Main.java │ │ └── resources │ │ ├── logback.xml │ │ └── sentry.properties ├── sentry-samples-netflix-dgs │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── samples │ │ │ └── netflix │ │ │ └── dgs │ │ │ ├── ActorsDataloader.java │ │ │ ├── NetlixDgsApplication.java │ │ │ ├── ShowsDatafetcher.java │ │ │ └── graphql │ │ │ ├── DgsConstants.java │ │ │ └── types │ │ │ ├── Actor.java │ │ │ └── Show.java │ │ └── resources │ │ ├── application.properties │ │ └── schema │ │ └── schema.graphqls ├── sentry-samples-openfeign │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── sentry │ │ └── samples │ │ └── openfeign │ │ └── Main.java ├── sentry-samples-servlet │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── samples │ │ │ └── servlet │ │ │ ├── SampleServlet.java │ │ │ └── SentryInitializer.java │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml ├── sentry-samples-spring-boot-jakarta-opentelemetry-noagent │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── sentry │ │ │ │ └── samples │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ └── jakarta │ │ │ │ ├── CustomEventProcessor.java │ │ │ │ ├── CustomJob.java │ │ │ │ ├── DistributedTracingController.java │ │ │ │ ├── Person.java │ │ │ │ ├── PersonController.java │ │ │ │ ├── PersonService.java │ │ │ │ ├── SecurityConfiguration.java │ │ │ │ ├── SentryDemoApplication.java │ │ │ │ ├── Todo.java │ │ │ │ ├── TodoController.java │ │ │ │ ├── graphql │ │ │ │ ├── AssigneeController.java │ │ │ │ ├── GreetingController.java │ │ │ │ ├── ProjectController.java │ │ │ │ └── TaskCreatorController.java │ │ │ │ └── quartz │ │ │ │ └── SampleJob.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── graphql │ │ │ └── schema.graphqls │ │ │ ├── quartz.properties │ │ │ └── schema.sql │ │ └── test │ │ ├── kotlin │ │ └── io │ │ │ └── sentry │ │ │ ├── DummyTest.kt │ │ │ └── systemtest │ │ │ ├── DistributedTracingSystemTest.kt │ │ │ ├── GraphqlGreetingSystemTest.kt │ │ │ ├── GraphqlProjectSystemTest.kt │ │ │ ├── GraphqlTaskSystemTest.kt │ │ │ ├── PersonSystemTest.kt │ │ │ └── TodoSystemTest.kt │ │ └── resources │ │ └── logback.xml ├── sentry-samples-spring-boot-jakarta-opentelemetry │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── sentry │ │ │ │ └── samples │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ └── jakarta │ │ │ │ ├── CustomEventProcessor.java │ │ │ │ ├── CustomJob.java │ │ │ │ ├── DistributedTracingController.java │ │ │ │ ├── Person.java │ │ │ │ ├── PersonController.java │ │ │ │ ├── PersonService.java │ │ │ │ ├── SecurityConfiguration.java │ │ │ │ ├── SentryDemoApplication.java │ │ │ │ ├── Todo.java │ │ │ │ ├── TodoController.java │ │ │ │ ├── graphql │ │ │ │ ├── AssigneeController.java │ │ │ │ ├── GreetingController.java │ │ │ │ ├── ProjectController.java │ │ │ │ └── TaskCreatorController.java │ │ │ │ └── quartz │ │ │ │ └── SampleJob.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── graphql │ │ │ └── schema.graphqls │ │ │ ├── quartz.properties │ │ │ └── schema.sql │ │ └── test │ │ ├── kotlin │ │ └── io │ │ │ └── sentry │ │ │ ├── DummyTest.kt │ │ │ └── systemtest │ │ │ ├── DistributedTracingSystemTest.kt │ │ │ ├── GraphqlGreetingSystemTest.kt │ │ │ ├── GraphqlProjectSystemTest.kt │ │ │ ├── GraphqlTaskSystemTest.kt │ │ │ ├── PersonSystemTest.kt │ │ │ └── TodoSystemTest.kt │ │ └── resources │ │ └── logback.xml ├── sentry-samples-spring-boot-jakarta │ ├── README.md │ ├── build.gradle.kts │ ├── sentry-jakarta-text-master.properties │ ├── sentry-package-rename.properties │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── sentry │ │ │ │ └── samples │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ └── jakarta │ │ │ │ ├── CustomEventProcessor.java │ │ │ │ ├── CustomJob.java │ │ │ │ ├── DistributedTracingController.java │ │ │ │ ├── Person.java │ │ │ │ ├── PersonController.java │ │ │ │ ├── PersonService.java │ │ │ │ ├── SecurityConfiguration.java │ │ │ │ ├── SentryDemoApplication.java │ │ │ │ ├── Todo.java │ │ │ │ ├── TodoController.java │ │ │ │ ├── graphql │ │ │ │ ├── AssigneeController.java │ │ │ │ ├── GreetingController.java │ │ │ │ ├── ProjectController.java │ │ │ │ └── TaskCreatorController.java │ │ │ │ └── quartz │ │ │ │ └── SampleJob.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── graphql │ │ │ └── schema.graphqls │ │ │ ├── quartz.properties │ │ │ └── schema.sql │ │ └── test │ │ ├── kotlin │ │ └── io │ │ │ └── sentry │ │ │ ├── DummyTest.kt │ │ │ └── systemtest │ │ │ ├── DistributedTracingSystemTest.kt │ │ │ ├── GraphqlGreetingSystemTest.kt │ │ │ ├── GraphqlProjectSystemTest.kt │ │ │ ├── GraphqlTaskSystemTest.kt │ │ │ ├── PersonSystemTest.kt │ │ │ └── TodoSystemTest.kt │ │ └── resources │ │ └── logback.xml ├── sentry-samples-spring-boot-opentelemetry-noagent │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── sentry │ │ │ │ └── samples │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ ├── CustomJob.java │ │ │ │ ├── DistributedTracingController.java │ │ │ │ ├── Person.java │ │ │ │ ├── PersonController.java │ │ │ │ ├── PersonService.java │ │ │ │ ├── SecurityConfiguration.java │ │ │ │ ├── SentryDemoApplication.java │ │ │ │ ├── Todo.java │ │ │ │ ├── TodoController.java │ │ │ │ ├── graphql │ │ │ │ ├── AssigneeController.java │ │ │ │ ├── GreetingController.java │ │ │ │ ├── ProjectController.java │ │ │ │ └── TaskCreatorController.java │ │ │ │ └── quartz │ │ │ │ └── SampleJob.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── graphql │ │ │ └── schema.graphqls │ │ │ └── schema.sql │ │ └── test │ │ ├── kotlin │ │ └── io │ │ │ └── sentry │ │ │ ├── DummyTest.kt │ │ │ └── systemtest │ │ │ ├── DistributedTracingSystemTest.kt │ │ │ ├── GraphqlGreetingSystemTest.kt │ │ │ ├── GraphqlProjectSystemTest.kt │ │ │ ├── GraphqlTaskSystemTest.kt │ │ │ ├── PersonSystemTest.kt │ │ │ └── TodoSystemTest.kt │ │ └── resources │ │ └── logback.xml ├── sentry-samples-spring-boot-opentelemetry │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── sentry │ │ │ │ └── samples │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ ├── CustomJob.java │ │ │ │ ├── DistributedTracingController.java │ │ │ │ ├── Person.java │ │ │ │ ├── PersonController.java │ │ │ │ ├── PersonService.java │ │ │ │ ├── SecurityConfiguration.java │ │ │ │ ├── SentryDemoApplication.java │ │ │ │ ├── Todo.java │ │ │ │ ├── TodoController.java │ │ │ │ ├── graphql │ │ │ │ ├── AssigneeController.java │ │ │ │ ├── GreetingController.java │ │ │ │ ├── ProjectController.java │ │ │ │ └── TaskCreatorController.java │ │ │ │ └── quartz │ │ │ │ └── SampleJob.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── graphql │ │ │ └── schema.graphqls │ │ │ └── schema.sql │ │ └── test │ │ ├── kotlin │ │ └── io │ │ │ └── sentry │ │ │ ├── DummyTest.kt │ │ │ └── systemtest │ │ │ ├── DistributedTracingSystemTest.kt │ │ │ ├── GraphqlGreetingSystemTest.kt │ │ │ ├── GraphqlProjectSystemTest.kt │ │ │ ├── GraphqlTaskSystemTest.kt │ │ │ ├── PersonSystemTest.kt │ │ │ └── TodoSystemTest.kt │ │ └── resources │ │ └── logback.xml ├── sentry-samples-spring-boot-webflux-jakarta │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── sentry │ │ │ │ └── samples │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ └── jakarta │ │ │ │ ├── DistributedTracingController.java │ │ │ │ ├── Person.java │ │ │ │ ├── PersonController.java │ │ │ │ ├── PersonService.java │ │ │ │ ├── SentryDemoApplication.java │ │ │ │ ├── Todo.java │ │ │ │ ├── TodoController.java │ │ │ │ └── graphql │ │ │ │ └── GreetingController.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── graphql │ │ │ └── schema.graphqls │ │ └── test │ │ ├── kotlin │ │ └── io │ │ │ └── sentry │ │ │ ├── DummyTest.kt │ │ │ └── systemtest │ │ │ ├── DistributedTracingSystemTest.kt │ │ │ ├── GraphqlGreetingSystemTest.kt │ │ │ ├── PersonSystemTest.kt │ │ │ └── TodoSystemTest.kt │ │ └── resources │ │ └── logback.xml ├── sentry-samples-spring-boot-webflux │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── sentry │ │ │ │ └── samples │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ ├── DistributedTracingController.java │ │ │ │ ├── Person.java │ │ │ │ ├── PersonController.java │ │ │ │ ├── PersonService.java │ │ │ │ ├── SentryDemoApplication.java │ │ │ │ ├── Todo.java │ │ │ │ ├── TodoController.java │ │ │ │ └── graphql │ │ │ │ └── GreetingController.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── graphql │ │ │ └── schema.graphqls │ │ └── test │ │ ├── kotlin │ │ └── io │ │ │ └── sentry │ │ │ ├── DummyTest.kt │ │ │ └── systemtest │ │ │ ├── DistributedTracingSystemTest.kt │ │ │ ├── GraphqlGreetingSystemTest.kt │ │ │ ├── PersonSystemTest.kt │ │ │ └── TodoSystemTest.kt │ │ └── resources │ │ └── logback.xml ├── sentry-samples-spring-boot │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── sentry │ │ │ │ └── samples │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ ├── CustomJob.java │ │ │ │ ├── DistributedTracingController.java │ │ │ │ ├── Person.java │ │ │ │ ├── PersonController.java │ │ │ │ ├── PersonService.java │ │ │ │ ├── SecurityConfiguration.java │ │ │ │ ├── SentryDemoApplication.java │ │ │ │ ├── Todo.java │ │ │ │ ├── TodoController.java │ │ │ │ ├── graphql │ │ │ │ ├── AssigneeController.java │ │ │ │ ├── GreetingController.java │ │ │ │ ├── ProjectController.java │ │ │ │ └── TaskCreatorController.java │ │ │ │ └── quartz │ │ │ │ └── SampleJob.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── graphql │ │ │ └── schema.graphqls │ │ │ └── schema.sql │ │ └── test │ │ ├── kotlin │ │ └── io │ │ │ └── sentry │ │ │ ├── DummyTest.kt │ │ │ └── systemtest │ │ │ ├── DistributedTracingSystemTest.kt │ │ │ ├── GraphqlGreetingSystemTest.kt │ │ │ ├── GraphqlProjectSystemTest.kt │ │ │ ├── GraphqlTaskSystemTest.kt │ │ │ ├── PersonSystemTest.kt │ │ │ └── TodoSystemTest.kt │ │ └── resources │ │ └── logback.xml ├── sentry-samples-spring-jakarta │ ├── README.md │ ├── build.gradle.kts │ ├── sentry-jakarta-text-master.properties │ ├── sentry-package-rename.properties │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── samples │ │ │ └── spring │ │ │ └── jakarta │ │ │ ├── AppConfig.java │ │ │ ├── AppInitializer.java │ │ │ ├── SecurityConfiguration.java │ │ │ ├── SentryConfig.java │ │ │ ├── WebConfig.java │ │ │ └── web │ │ │ ├── Person.java │ │ │ ├── PersonController.java │ │ │ └── PersonService.java │ │ └── resources │ │ ├── logback.xml │ │ └── sentry.properties └── sentry-samples-spring │ ├── README.md │ ├── build.gradle.kts │ └── src │ └── main │ ├── java │ └── io │ │ └── sentry │ │ └── samples │ │ └── spring │ │ ├── AppConfig.java │ │ ├── AppInitializer.java │ │ ├── SecurityConfiguration.java │ │ ├── SentryConfig.java │ │ ├── WebConfig.java │ │ └── web │ │ ├── Person.java │ │ ├── PersonController.java │ │ └── PersonService.java │ └── resources │ ├── logback.xml │ └── sentry.properties ├── sentry-servlet-jakarta ├── api │ └── sentry-servlet-jakarta.api ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── servlet │ │ │ └── jakarta │ │ │ ├── SentryRequestHttpServletRequestProcessor.java │ │ │ ├── SentryServletContainerInitializer.java │ │ │ └── SentryServletRequestListener.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── jakarta.servlet.ServletContainerInitializer │ └── test │ └── kotlin │ └── io │ └── sentry │ └── servlet │ └── jakarta │ ├── SentryRequestHttpServletRequestProcessorTest.kt │ ├── SentryServletContainerInitializerTest.kt │ └── SentryServletRequestListenerTest.kt ├── sentry-servlet ├── api │ └── sentry-servlet.api ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── servlet │ │ │ ├── SentryRequestHttpServletRequestProcessor.java │ │ │ ├── SentryServletContainerInitializer.java │ │ │ └── SentryServletRequestListener.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── javax.servlet.ServletContainerInitializer │ └── test │ └── kotlin │ └── io │ └── sentry │ └── servlet │ ├── SentryRequestHttpServletRequestProcessorTest.kt │ ├── SentryServletContainerInitializerTest.kt │ └── SentryServletRequestListenerTest.kt ├── sentry-spring-boot-jakarta ├── .gitignore ├── api │ └── sentry-spring-boot-jakarta.api ├── build.gradle.kts ├── sentry-jakarta-text-master.properties ├── sentry-package-rename.properties ├── spring-test-rename.properties └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── spring │ │ │ └── boot │ │ │ └── jakarta │ │ │ ├── InAppIncludesResolver.java │ │ │ ├── SentryAutoConfiguration.java │ │ │ ├── SentryLogbackAppenderAutoConfiguration.java │ │ │ ├── SentryLogbackInitializer.java │ │ │ ├── SentryProperties.java │ │ │ ├── SentrySpanRestClientCustomizer.java │ │ │ ├── SentrySpanRestTemplateCustomizer.java │ │ │ ├── SentrySpanWebClientCustomizer.java │ │ │ ├── SentrySpringVersionChecker.java │ │ │ ├── SentryWebfluxAutoConfiguration.java │ │ │ └── graphql │ │ │ ├── SentryGraphql22AutoConfiguration.java │ │ │ └── SentryGraphqlAutoConfiguration.java │ └── resources │ │ └── META-INF │ │ ├── native-image │ │ └── io.sentry │ │ │ └── sentry │ │ │ └── proxy-config.json │ │ ├── spring.factories │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ └── test │ ├── kotlin │ ├── com │ │ └── acme │ │ │ └── MainBootClass.kt │ └── io │ │ └── sentry │ │ └── spring │ │ └── boot │ │ └── jakarta │ │ ├── SentryAutoConfigurationTest.kt │ │ ├── SentryLogbackAppenderAutoConfigurationTest.kt │ │ ├── SentrySpanRestClientCustomizerTest.kt │ │ ├── SentrySpanRestTemplateCustomizerTest.kt │ │ ├── SentrySpanWebClientCustomizerTest.kt │ │ ├── SentryWebfluxAutoConfigurationTest.kt │ │ └── it │ │ └── SentrySpringIntegrationTest.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-spring-boot-starter-jakarta ├── .gitignore ├── api │ └── sentry-spring-boot-starter-jakarta.api └── build.gradle.kts ├── sentry-spring-boot-starter ├── api │ └── sentry-spring-boot-starter.api └── build.gradle.kts ├── sentry-spring-boot ├── README.md ├── api │ └── sentry-spring-boot.api ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── spring │ │ │ └── boot │ │ │ ├── InAppIncludesResolver.java │ │ │ ├── SentryAutoConfiguration.java │ │ │ ├── SentryLogbackAppenderAutoConfiguration.java │ │ │ ├── SentryLogbackInitializer.java │ │ │ ├── SentryProperties.java │ │ │ ├── SentrySpanRestTemplateCustomizer.java │ │ │ ├── SentrySpanWebClientCustomizer.java │ │ │ ├── SentrySpringVersionChecker.java │ │ │ ├── SentryWebfluxAutoConfiguration.java │ │ │ └── graphql │ │ │ └── SentryGraphqlAutoConfiguration.java │ └── resources │ │ └── META-INF │ │ ├── native-image │ │ └── io.sentry │ │ │ └── sentry │ │ │ └── proxy-config.json │ │ └── spring.factories │ └── test │ ├── kotlin │ ├── com │ │ └── acme │ │ │ └── MainBootClass.kt │ └── io │ │ └── sentry │ │ └── spring │ │ └── boot │ │ ├── SentryAutoConfigurationTest.kt │ │ ├── SentryLogbackAppenderAutoConfigurationTest.kt │ │ ├── SentrySpanRestTemplateCustomizerTest.kt │ │ ├── SentrySpanWebClientCustomizerTest.kt │ │ ├── SentryWebfluxAutoConfigurationTest.kt │ │ └── it │ │ └── SentrySpringIntegrationTest.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-spring-jakarta ├── api │ └── sentry-spring-jakarta.api ├── build.gradle.kts ├── sentry-jakarta-text-master.properties ├── sentry-package-rename.properties ├── spring-test-rename.properties └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── spring │ │ │ └── jakarta │ │ │ ├── ContextTagsEventProcessor.java │ │ │ ├── EnableSentry.java │ │ │ ├── HttpServletRequestSentryUserProvider.java │ │ │ ├── RequestPayloadExtractor.java │ │ │ ├── SentryExceptionResolver.java │ │ │ ├── SentryHubRegistrar.java │ │ │ ├── SentryInitBeanPostProcessor.java │ │ │ ├── SentryRequestHttpServletRequestProcessor.java │ │ │ ├── SentryRequestResolver.java │ │ │ ├── SentrySpringFilter.java │ │ │ ├── SentrySpringServletContainerInitializer.java │ │ │ ├── SentryTaskDecorator.java │ │ │ ├── SentryUserFilter.java │ │ │ ├── SentryUserProvider.java │ │ │ ├── SentryWebConfiguration.java │ │ │ ├── SpringProfilesEventProcessor.java │ │ │ ├── SpringSecuritySentryUserProvider.java │ │ │ ├── checkin │ │ │ ├── SentryCheckIn.java │ │ │ ├── SentryCheckInAdvice.java │ │ │ ├── SentryCheckInAdviceConfiguration.java │ │ │ ├── SentryCheckInPointcutConfiguration.java │ │ │ ├── SentryQuartzConfiguration.java │ │ │ └── SentrySchedulerFactoryBeanCustomizer.java │ │ │ ├── exception │ │ │ ├── SentryCaptureExceptionParameter.java │ │ │ ├── SentryCaptureExceptionParameterAdvice.java │ │ │ ├── SentryCaptureExceptionParameterConfiguration.java │ │ │ ├── SentryCaptureExceptionParameterPointcutConfiguration.java │ │ │ └── SentryExceptionParameterAdviceConfiguration.java │ │ │ ├── graphql │ │ │ ├── SentryBatchLoaderRegistry.java │ │ │ ├── SentryDataFetcherExceptionResolverAdapter.java │ │ │ ├── SentryDgsSubscriptionHandler.java │ │ │ ├── SentryGraphql22Configuration.java │ │ │ ├── SentryGraphqlBeanPostProcessor.java │ │ │ ├── SentryGraphqlConfiguration.java │ │ │ └── SentrySpringSubscriptionHandler.java │ │ │ ├── opentelemetry │ │ │ ├── SentryOpenTelemetryAgentWithoutAutoInitConfiguration.java │ │ │ └── SentryOpenTelemetryNoAgentConfiguration.java │ │ │ ├── tracing │ │ │ ├── CombinedTransactionNameProvider.java │ │ │ ├── SentryAdviceConfiguration.java │ │ │ ├── SentrySpan.java │ │ │ ├── SentrySpanAdvice.java │ │ │ ├── SentrySpanClientHttpRequestInterceptor.java │ │ │ ├── SentrySpanClientWebRequestFilter.java │ │ │ ├── SentrySpanPointcutConfiguration.java │ │ │ ├── SentryTracingConfiguration.java │ │ │ ├── SentryTracingFilter.java │ │ │ ├── SentryTransaction.java │ │ │ ├── SentryTransactionAdvice.java │ │ │ ├── SentryTransactionPointcutConfiguration.java │ │ │ ├── SpringMvcTransactionNameProvider.java │ │ │ ├── SpringServletTransactionNameProvider.java │ │ │ ├── TransactionNameProvider.java │ │ │ └── TransactionNameWithSource.java │ │ │ └── webflux │ │ │ ├── AbstractSentryWebFilter.java │ │ │ ├── SentryRequestResolver.java │ │ │ ├── SentryScheduleHook.java │ │ │ ├── SentryWebExceptionHandler.java │ │ │ ├── SentryWebFilter.java │ │ │ ├── SentryWebFilterWithThreadLocalAccessor.java │ │ │ ├── TransactionNameProvider.java │ │ │ └── reactor │ │ │ └── ReactorUtils.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── jakarta.servlet.ServletContainerInitializer │ └── test │ └── kotlin │ └── io │ └── sentry │ └── spring │ └── jakarta │ ├── ContextTagsEventProcessorTest.kt │ ├── EnableSentryTest.kt │ ├── HttpServletRequestSentryUserProviderTest.kt │ ├── SentryCheckInAdviceTest.kt │ ├── SentryExceptionResolverTest.kt │ ├── SentryInitBeanPostProcessorTest.kt │ ├── SentryRequestHttpServletRequestProcessorTest.kt │ ├── SentrySpringFilterTest.kt │ ├── SentryTaskDecoratorTest.kt │ ├── SentryUserFilterTest.kt │ ├── SpringProfilesEventProcessorTest.kt │ ├── SpringSecuritySentryUserProviderTest.kt │ ├── exception │ └── SentryCaptureExceptionParameterAdviceTest.kt │ ├── graphql │ └── SentrySpringSubscriptionHandlerTest.kt │ ├── mvc │ └── SentrySpringIntegrationTest.kt │ ├── tracing │ ├── SentrySpanAdviceTest.kt │ ├── SentryTracingFilterTest.kt │ └── SentryTransactionAdviceTest.kt │ └── webflux │ ├── SentryScheduleHookTest.kt │ ├── SentryWebFluxTracingFilterTest.kt │ └── SentryWebfluxIntegrationTest.kt ├── sentry-spring ├── api │ └── sentry-spring.api ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ └── spring │ │ │ ├── ContextTagsEventProcessor.java │ │ │ ├── EnableSentry.java │ │ │ ├── HttpServletRequestSentryUserProvider.java │ │ │ ├── RequestPayloadExtractor.java │ │ │ ├── SentryExceptionResolver.java │ │ │ ├── SentryHubRegistrar.java │ │ │ ├── SentryInitBeanPostProcessor.java │ │ │ ├── SentryRequestHttpServletRequestProcessor.java │ │ │ ├── SentryRequestResolver.java │ │ │ ├── SentrySpringFilter.java │ │ │ ├── SentrySpringServletContainerInitializer.java │ │ │ ├── SentryTaskDecorator.java │ │ │ ├── SentryUserFilter.java │ │ │ ├── SentryUserProvider.java │ │ │ ├── SentryWebConfiguration.java │ │ │ ├── SpringProfilesEventProcessor.java │ │ │ ├── SpringSecuritySentryUserProvider.java │ │ │ ├── checkin │ │ │ ├── SentryCheckIn.java │ │ │ ├── SentryCheckInAdvice.java │ │ │ ├── SentryCheckInAdviceConfiguration.java │ │ │ ├── SentryCheckInPointcutConfiguration.java │ │ │ ├── SentryQuartzConfiguration.java │ │ │ └── SentrySchedulerFactoryBeanCustomizer.java │ │ │ ├── exception │ │ │ ├── SentryCaptureExceptionParameter.java │ │ │ ├── SentryCaptureExceptionParameterAdvice.java │ │ │ ├── SentryCaptureExceptionParameterConfiguration.java │ │ │ ├── SentryCaptureExceptionParameterPointcutConfiguration.java │ │ │ └── SentryExceptionParameterAdviceConfiguration.java │ │ │ ├── graphql │ │ │ ├── SentryBatchLoaderRegistry.java │ │ │ ├── SentryDataFetcherExceptionResolverAdapter.java │ │ │ ├── SentryDgsSubscriptionHandler.java │ │ │ ├── SentryGraphqlBeanPostProcessor.java │ │ │ ├── SentryGraphqlConfiguration.java │ │ │ └── SentrySpringSubscriptionHandler.java │ │ │ ├── opentelemetry │ │ │ ├── SentryOpenTelemetryAgentWithoutAutoInitConfiguration.java │ │ │ └── SentryOpenTelemetryNoAgentConfiguration.java │ │ │ ├── tracing │ │ │ ├── CombinedTransactionNameProvider.java │ │ │ ├── SentryAdviceConfiguration.java │ │ │ ├── SentrySpan.java │ │ │ ├── SentrySpanAdvice.java │ │ │ ├── SentrySpanClientHttpRequestInterceptor.java │ │ │ ├── SentrySpanClientWebRequestFilter.java │ │ │ ├── SentrySpanPointcutConfiguration.java │ │ │ ├── SentryTracingConfiguration.java │ │ │ ├── SentryTracingFilter.java │ │ │ ├── SentryTransaction.java │ │ │ ├── SentryTransactionAdvice.java │ │ │ ├── SentryTransactionPointcutConfiguration.java │ │ │ ├── SpringMvcTransactionNameProvider.java │ │ │ ├── SpringServletTransactionNameProvider.java │ │ │ ├── TransactionNameProvider.java │ │ │ └── TransactionNameWithSource.java │ │ │ └── webflux │ │ │ ├── SentryRequestResolver.java │ │ │ ├── SentryScheduleHook.java │ │ │ ├── SentryWebExceptionHandler.java │ │ │ ├── SentryWebFilter.java │ │ │ └── TransactionNameProvider.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── javax.servlet.ServletContainerInitializer │ └── test │ ├── kotlin │ └── io │ │ └── sentry │ │ └── spring │ │ ├── ContextTagsEventProcessorTest.kt │ │ ├── EnableSentryTest.kt │ │ ├── HttpServletRequestSentryUserProviderTest.kt │ │ ├── SentryCheckInAdviceTest.kt │ │ ├── SentryExceptionResolverTest.kt │ │ ├── SentryInitBeanPostProcessorTest.kt │ │ ├── SentryRequestHttpServletRequestProcessorTest.kt │ │ ├── SentrySpringFilterTest.kt │ │ ├── SentryTaskDecoratorTest.kt │ │ ├── SentryUserFilterTest.kt │ │ ├── SpringProfilesEventProcessorTest.kt │ │ ├── SpringSecuritySentryUserProviderTest.kt │ │ ├── exception │ │ └── SentryCaptureExceptionParameterAdviceTest.kt │ │ ├── graphql │ │ └── SentrySpringSubscriptionHandlerTest.kt │ │ ├── mvc │ │ └── SentrySpringIntegrationTest.kt │ │ ├── tracing │ │ ├── SentrySpanAdviceTest.kt │ │ ├── SentryTracingFilterTest.kt │ │ └── SentryTransactionAdviceTest.kt │ │ └── webflux │ │ ├── SentryScheduleHookTest.kt │ │ ├── SentryWebFluxTracingFilterTest.kt │ │ └── SentryWebfluxIntegrationTest.kt │ └── resources │ └── mockito-extensions │ └── org.mockito.plugins.MockMaker ├── sentry-system-test-support ├── api │ └── sentry-system-test-support.api ├── build.gradle.kts └── src │ └── main │ ├── graphql │ ├── greeting.graphql │ ├── project.graphql │ ├── schema.graphqls │ └── task.graphql │ └── kotlin │ └── io │ └── sentry │ └── systemtest │ ├── ResponseTypes.kt │ ├── graphql │ └── GraphqlTestClient.kt │ └── util │ ├── LoggingInsecureRestClient.kt │ ├── RestTestClient.kt │ ├── SentryMockServerClient.kt │ └── TestHelper.kt ├── sentry-test-support ├── api │ └── sentry-test-support.api ├── build.gradle.kts └── src │ └── main │ └── kotlin │ └── io │ └── sentry │ ├── Assertions.kt │ └── test │ ├── Init.kt │ ├── Mocks.kt │ └── Reflection.kt ├── sentry.properties ├── sentry ├── api │ └── sentry.api ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── io │ │ │ └── sentry │ │ │ ├── AsyncHttpTransportFactory.java │ │ │ ├── Attachment.java │ │ │ ├── BackfillingEventProcessor.java │ │ │ ├── Baggage.java │ │ │ ├── BaggageHeader.java │ │ │ ├── Breadcrumb.java │ │ │ ├── CheckIn.java │ │ │ ├── CheckInStatus.java │ │ │ ├── CircularFifoQueue.java │ │ │ ├── CombinedContextsView.java │ │ │ ├── CombinedScopeView.java │ │ │ ├── CompositePerformanceCollector.java │ │ │ ├── CustomSamplingContext.java │ │ │ ├── DataCategory.java │ │ │ ├── DateUtils.java │ │ │ ├── DeduplicateMultithreadedEventProcessor.java │ │ │ ├── DefaultCompositePerformanceCollector.java │ │ │ ├── DefaultScopesStorage.java │ │ │ ├── DefaultSpanFactory.java │ │ │ ├── DefaultVersionDetector.java │ │ │ ├── DiagnosticLogger.java │ │ │ ├── DirectoryProcessor.java │ │ │ ├── DisabledQueue.java │ │ │ ├── Dsn.java │ │ │ ├── DsnUtil.java │ │ │ ├── DuplicateEventDetectionEventProcessor.java │ │ │ ├── EnvelopeReader.java │ │ │ ├── EnvelopeSender.java │ │ │ ├── EventProcessor.java │ │ │ ├── ExperimentalOptions.java │ │ │ ├── ExternalOptions.java │ │ │ ├── FilterString.java │ │ │ ├── FullyDisplayedReporter.java │ │ │ ├── Hint.java │ │ │ ├── HostnameCache.java │ │ │ ├── HttpStatusCodeRange.java │ │ │ ├── HubAdapter.java │ │ │ ├── HubScopesWrapper.java │ │ │ ├── IConnectionStatusProvider.java │ │ │ ├── IContinuousProfiler.java │ │ │ ├── IEnvelopeReader.java │ │ │ ├── IEnvelopeSender.java │ │ │ ├── IHub.java │ │ │ ├── ILogger.java │ │ │ ├── IOptionsObserver.java │ │ │ ├── IPerformanceCollector.java │ │ │ ├── IPerformanceContinuousCollector.java │ │ │ ├── IPerformanceSnapshotCollector.java │ │ │ ├── IReplayApi.java │ │ │ ├── IScope.java │ │ │ ├── IScopeObserver.java │ │ │ ├── IScopes.java │ │ │ ├── IScopesStorage.java │ │ │ ├── ISentryClient.java │ │ │ ├── ISentryExecutorService.java │ │ │ ├── ISentryLifecycleToken.java │ │ │ ├── ISerializer.java │ │ │ ├── ISocketTagger.java │ │ │ ├── ISpan.java │ │ │ ├── ISpanFactory.java │ │ │ ├── ITransaction.java │ │ │ ├── ITransactionProfiler.java │ │ │ ├── ITransportFactory.java │ │ │ ├── IVersionDetector.java │ │ │ ├── InitPriority.java │ │ │ ├── Instrumenter.java │ │ │ ├── Integration.java │ │ │ ├── IpAddressUtils.java │ │ │ ├── JavaMemoryCollector.java │ │ │ ├── JsonDeserializer.java │ │ │ ├── JsonObjectDeserializer.java │ │ │ ├── JsonObjectReader.java │ │ │ ├── JsonObjectSerializer.java │ │ │ ├── JsonObjectWriter.java │ │ │ ├── JsonReflectionObjectSerializer.java │ │ │ ├── JsonSerializable.java │ │ │ ├── JsonSerializer.java │ │ │ ├── JsonUnknown.java │ │ │ ├── MainEventProcessor.java │ │ │ ├── ManifestVersionDetector.java │ │ │ ├── MeasurementUnit.java │ │ │ ├── MonitorConfig.java │ │ │ ├── MonitorContexts.java │ │ │ ├── MonitorSchedule.java │ │ │ ├── MonitorScheduleType.java │ │ │ ├── MonitorScheduleUnit.java │ │ │ ├── NoOpCompositePerformanceCollector.java │ │ │ ├── NoOpConnectionStatusProvider.java │ │ │ ├── NoOpContinuousProfiler.java │ │ │ ├── NoOpEnvelopeReader.java │ │ │ ├── NoOpHub.java │ │ │ ├── NoOpLogger.java │ │ │ ├── NoOpReplayBreadcrumbConverter.java │ │ │ ├── NoOpReplayController.java │ │ │ ├── NoOpScope.java │ │ │ ├── NoOpScopes.java │ │ │ ├── NoOpScopesLifecycleToken.java │ │ │ ├── NoOpScopesStorage.java │ │ │ ├── NoOpSentryClient.java │ │ │ ├── NoOpSentryExecutorService.java │ │ │ ├── NoOpSerializer.java │ │ │ ├── NoOpSocketTagger.java │ │ │ ├── NoOpSpan.java │ │ │ ├── NoOpSpanFactory.java │ │ │ ├── NoOpTransaction.java │ │ │ ├── NoOpTransactionProfiler.java │ │ │ ├── NoOpTransportFactory.java │ │ │ ├── NoopVersionDetector.java │ │ │ ├── ObjectReader.java │ │ │ ├── ObjectWriter.java │ │ │ ├── OptionsContainer.java │ │ │ ├── OutboxSender.java │ │ │ ├── PerformanceCollectionData.java │ │ │ ├── PreviousSessionFinalizer.java │ │ │ ├── ProfileChunk.java │ │ │ ├── ProfileContext.java │ │ │ ├── ProfileLifecycle.java │ │ │ ├── ProfilingTraceData.java │ │ │ ├── ProfilingTransactionData.java │ │ │ ├── PropagationContext.java │ │ │ ├── ReplayBreadcrumbConverter.java │ │ │ ├── ReplayController.java │ │ │ ├── ReplayRecording.java │ │ │ ├── RequestDetails.java │ │ │ ├── RequestDetailsResolver.java │ │ │ ├── SamplingContext.java │ │ │ ├── Scope.java │ │ │ ├── ScopeBindingMode.java │ │ │ ├── ScopeCallback.java │ │ │ ├── ScopeObserverAdapter.java │ │ │ ├── ScopeType.java │ │ │ ├── Scopes.java │ │ │ ├── ScopesAdapter.java │ │ │ ├── ScopesStorageFactory.java │ │ │ ├── SendCachedEnvelopeFireAndForgetIntegration.java │ │ │ ├── SendFireAndForgetEnvelopeSender.java │ │ │ ├── SendFireAndForgetOutboxSender.java │ │ │ ├── Sentry.java │ │ │ ├── SentryAppStartProfilingOptions.java │ │ │ ├── SentryAttribute.java │ │ │ ├── SentryAttributeType.java │ │ │ ├── SentryAttributes.java │ │ │ ├── SentryAutoDateProvider.java │ │ │ ├── SentryBaseEvent.java │ │ │ ├── SentryClient.java │ │ │ ├── SentryCrashLastRunState.java │ │ │ ├── SentryDate.java │ │ │ ├── SentryDateProvider.java │ │ │ ├── SentryEnvelope.java │ │ │ ├── SentryEnvelopeHeader.java │ │ │ ├── SentryEnvelopeItem.java │ │ │ ├── SentryEnvelopeItemHeader.java │ │ │ ├── SentryEvent.java │ │ │ ├── SentryExceptionFactory.java │ │ │ ├── SentryExecutorService.java │ │ │ ├── SentryFeedbackOptions.java │ │ │ ├── SentryInstantDate.java │ │ │ ├── SentryInstantDateProvider.java │ │ │ ├── SentryIntegrationPackageStorage.java │ │ │ ├── SentryItemType.java │ │ │ ├── SentryLevel.java │ │ │ ├── SentryLockReason.java │ │ │ ├── SentryLogEvent.java │ │ │ ├── SentryLogEventAttributeValue.java │ │ │ ├── SentryLogEvents.java │ │ │ ├── SentryLogLevel.java │ │ │ ├── SentryLongDate.java │ │ │ ├── SentryNanotimeDate.java │ │ │ ├── SentryNanotimeDateProvider.java │ │ │ ├── SentryOpenTelemetryMode.java │ │ │ ├── SentryOptions.java │ │ │ ├── SentryReplayEvent.java │ │ │ ├── SentryReplayOptions.java │ │ │ ├── SentryRuntimeEventProcessor.java │ │ │ ├── SentrySpanStorage.java │ │ │ ├── SentryStackTraceFactory.java │ │ │ ├── SentryThreadFactory.java │ │ │ ├── SentryTraceHeader.java │ │ │ ├── SentryTracer.java │ │ │ ├── SentryUUID.java │ │ │ ├── SentryValues.java │ │ │ ├── SentryWrapper.java │ │ │ ├── Session.java │ │ │ ├── ShutdownHookIntegration.java │ │ │ ├── Span.java │ │ │ ├── SpanContext.java │ │ │ ├── SpanDataConvention.java │ │ │ ├── SpanFactoryFactory.java │ │ │ ├── SpanFinishedCallback.java │ │ │ ├── SpanId.java │ │ │ ├── SpanOptions.java │ │ │ ├── SpanStatus.java │ │ │ ├── SpotlightIntegration.java │ │ │ ├── Stack.java │ │ │ ├── SynchronizedCollection.java │ │ │ ├── SynchronizedQueue.java │ │ │ ├── SystemOutLogger.java │ │ │ ├── TraceContext.java │ │ │ ├── TracesSampler.java │ │ │ ├── TracesSamplingDecision.java │ │ │ ├── TransactionContext.java │ │ │ ├── TransactionFinishedCallback.java │ │ │ ├── TransactionOptions.java │ │ │ ├── TypeCheckHint.java │ │ │ ├── UncaughtExceptionHandler.java │ │ │ ├── UncaughtExceptionHandlerIntegration.java │ │ │ ├── UserFeedback.java │ │ │ ├── backpressure │ │ │ ├── BackpressureMonitor.java │ │ │ ├── IBackpressureMonitor.java │ │ │ └── NoOpBackpressureMonitor.java │ │ │ ├── cache │ │ │ ├── CacheStrategy.java │ │ │ ├── CacheUtils.java │ │ │ ├── EnvelopeCache.java │ │ │ ├── IEnvelopeCache.java │ │ │ ├── PersistingOptionsObserver.java │ │ │ ├── PersistingScopeObserver.java │ │ │ └── tape │ │ │ │ ├── EmptyObjectQueue.java │ │ │ │ ├── FileObjectQueue.java │ │ │ │ ├── ObjectQueue.java │ │ │ │ └── QueueFile.java │ │ │ ├── clientreport │ │ │ ├── AtomicClientReportStorage.java │ │ │ ├── ClientReport.java │ │ │ ├── ClientReportKey.java │ │ │ ├── ClientReportRecorder.java │ │ │ ├── DiscardReason.java │ │ │ ├── DiscardedEvent.java │ │ │ ├── IClientReportRecorder.java │ │ │ ├── IClientReportStorage.java │ │ │ └── NoOpClientReportRecorder.java │ │ │ ├── config │ │ │ ├── AbstractPropertiesProvider.java │ │ │ ├── ClasspathPropertiesLoader.java │ │ │ ├── CompositePropertiesProvider.java │ │ │ ├── EnvironmentVariablePropertiesProvider.java │ │ │ ├── FilesystemPropertiesLoader.java │ │ │ ├── PropertiesLoader.java │ │ │ ├── PropertiesProvider.java │ │ │ ├── PropertiesProviderFactory.java │ │ │ ├── SimplePropertiesProvider.java │ │ │ └── SystemPropertyPropertiesProvider.java │ │ │ ├── exception │ │ │ ├── ExceptionMechanismException.java │ │ │ ├── InvalidSentryTraceHeaderException.java │ │ │ ├── SentryEnvelopeException.java │ │ │ └── SentryHttpClientException.java │ │ │ ├── hints │ │ │ ├── AbnormalExit.java │ │ │ ├── ApplyScopeData.java │ │ │ ├── Backfillable.java │ │ │ ├── BlockingFlushHint.java │ │ │ ├── Cached.java │ │ │ ├── DiskFlushNotification.java │ │ │ ├── Enqueable.java │ │ │ ├── EventDropReason.java │ │ │ ├── Flushable.java │ │ │ ├── Resettable.java │ │ │ ├── Retryable.java │ │ │ ├── SessionEnd.java │ │ │ ├── SessionEndHint.java │ │ │ ├── SessionStart.java │ │ │ ├── SessionStartHint.java │ │ │ ├── SubmissionResult.java │ │ │ └── TransactionEnd.java │ │ │ ├── instrumentation │ │ │ └── file │ │ │ │ ├── FileIOSpanManager.java │ │ │ │ ├── FileInputStreamInitData.java │ │ │ │ ├── FileOutputStreamInitData.java │ │ │ │ ├── SentryFileInputStream.java │ │ │ │ ├── SentryFileOutputStream.java │ │ │ │ ├── SentryFileReader.java │ │ │ │ └── SentryFileWriter.java │ │ │ ├── internal │ │ │ ├── ManifestVersionReader.java │ │ │ ├── debugmeta │ │ │ │ ├── IDebugMetaLoader.java │ │ │ │ ├── NoOpDebugMetaLoader.java │ │ │ │ └── ResourcesDebugMetaLoader.java │ │ │ ├── eventprocessor │ │ │ │ └── EventProcessorAndOrder.java │ │ │ ├── gestures │ │ │ │ ├── GestureTargetLocator.java │ │ │ │ └── UiElement.java │ │ │ ├── modules │ │ │ │ ├── CompositeModulesLoader.java │ │ │ │ ├── IModulesLoader.java │ │ │ │ ├── ManifestModulesLoader.java │ │ │ │ ├── ModulesLoader.java │ │ │ │ ├── NoOpModulesLoader.java │ │ │ │ └── ResourcesModulesLoader.java │ │ │ └── viewhierarchy │ │ │ │ └── ViewHierarchyExporter.java │ │ │ ├── logger │ │ │ ├── ILoggerApi.java │ │ │ ├── ILoggerBatchProcessor.java │ │ │ ├── LoggerApi.java │ │ │ ├── LoggerBatchProcessor.java │ │ │ ├── NoOpLoggerApi.java │ │ │ ├── NoOpLoggerBatchProcessor.java │ │ │ └── SentryLogParameters.java │ │ │ ├── opentelemetry │ │ │ └── OpenTelemetryUtil.java │ │ │ ├── profilemeasurements │ │ │ ├── ProfileMeasurement.java │ │ │ └── ProfileMeasurementValue.java │ │ │ ├── protocol │ │ │ ├── App.java │ │ │ ├── Browser.java │ │ │ ├── Contexts.java │ │ │ ├── DebugImage.java │ │ │ ├── DebugMeta.java │ │ │ ├── Device.java │ │ │ ├── Feedback.java │ │ │ ├── Geo.java │ │ │ ├── Gpu.java │ │ │ ├── MeasurementValue.java │ │ │ ├── Mechanism.java │ │ │ ├── Message.java │ │ │ ├── MetricSummary.java │ │ │ ├── OperatingSystem.java │ │ │ ├── Request.java │ │ │ ├── Response.java │ │ │ ├── SdkInfo.java │ │ │ ├── SdkVersion.java │ │ │ ├── SentryException.java │ │ │ ├── SentryId.java │ │ │ ├── SentryPackage.java │ │ │ ├── SentryRuntime.java │ │ │ ├── SentrySpan.java │ │ │ ├── SentryStackFrame.java │ │ │ ├── SentryStackTrace.java │ │ │ ├── SentryThread.java │ │ │ ├── SentryTransaction.java │ │ │ ├── Spring.java │ │ │ ├── TransactionInfo.java │ │ │ ├── TransactionNameSource.java │ │ │ ├── User.java │ │ │ ├── ViewHierarchy.java │ │ │ └── ViewHierarchyNode.java │ │ │ ├── rrweb │ │ │ ├── RRWebBreadcrumbEvent.java │ │ │ ├── RRWebEvent.java │ │ │ ├── RRWebEventType.java │ │ │ ├── RRWebIncrementalSnapshotEvent.java │ │ │ ├── RRWebInteractionEvent.java │ │ │ ├── RRWebInteractionMoveEvent.java │ │ │ ├── RRWebMetaEvent.java │ │ │ ├── RRWebOptionsEvent.java │ │ │ ├── RRWebSpanEvent.java │ │ │ └── RRWebVideoEvent.java │ │ │ ├── transport │ │ │ ├── AsyncHttpTransport.java │ │ │ ├── AuthenticatorWrapper.java │ │ │ ├── CurrentDateProvider.java │ │ │ ├── HttpConnection.java │ │ │ ├── ICurrentDateProvider.java │ │ │ ├── ITransport.java │ │ │ ├── ITransportGate.java │ │ │ ├── NoOpEnvelopeCache.java │ │ │ ├── NoOpTransport.java │ │ │ ├── NoOpTransportGate.java │ │ │ ├── ProxyAuthenticator.java │ │ │ ├── QueuedThreadPoolExecutor.java │ │ │ ├── RateLimiter.java │ │ │ ├── ReusableCountLatch.java │ │ │ ├── StdoutTransport.java │ │ │ └── TransportResult.java │ │ │ ├── util │ │ │ ├── AutoClosableReentrantLock.java │ │ │ ├── CheckInUtils.java │ │ │ ├── ClassLoaderUtils.java │ │ │ ├── CollectionUtils.java │ │ │ ├── DebugMetaPropertiesApplier.java │ │ │ ├── ErrorUtils.java │ │ │ ├── EventProcessorUtils.java │ │ │ ├── ExceptionUtils.java │ │ │ ├── FileUtils.java │ │ │ ├── HintUtils.java │ │ │ ├── HttpUtils.java │ │ │ ├── InitUtil.java │ │ │ ├── IntegrationUtils.java │ │ │ ├── JsonSerializationUtils.java │ │ │ ├── LazyEvaluator.java │ │ │ ├── LifecycleHelper.java │ │ │ ├── LoadClass.java │ │ │ ├── LogUtils.java │ │ │ ├── MapObjectReader.java │ │ │ ├── MapObjectWriter.java │ │ │ ├── Objects.java │ │ │ ├── Pair.java │ │ │ ├── Platform.java │ │ │ ├── PropagationTargetsUtils.java │ │ │ ├── Random.java │ │ │ ├── SampleRateUtils.java │ │ │ ├── ScopesUtil.java │ │ │ ├── SentryRandom.java │ │ │ ├── SpanUtils.java │ │ │ ├── StringUtils.java │ │ │ ├── TracingUtils.java │ │ │ ├── UUIDGenerator.java │ │ │ ├── UUIDStringUtils.java │ │ │ ├── UrlUtils.java │ │ │ └── thread │ │ │ │ ├── IThreadChecker.java │ │ │ │ ├── NoOpThreadChecker.java │ │ │ │ └── ThreadChecker.java │ │ │ └── vendor │ │ │ ├── Base64.java │ │ │ └── gson │ │ │ ├── LICENSE │ │ │ ├── internal │ │ │ └── bind │ │ │ │ └── util │ │ │ │ └── ISO8601Utils.java │ │ │ └── stream │ │ │ ├── JsonReader.java │ │ │ ├── JsonScope.java │ │ │ ├── JsonToken.java │ │ │ ├── JsonWriter.java │ │ │ └── MalformedJsonException.java │ └── resources │ │ └── META-INF │ │ └── native-image │ │ └── io.sentry │ │ └── sentry │ │ └── native-image.properties │ └── test │ ├── java │ └── io │ │ └── sentry │ │ ├── AttachmentTest.kt │ │ ├── BaggageTest.kt │ │ ├── BreadcrumbTest.kt │ │ ├── CachedEvent.kt │ │ ├── CheckInSerializationTest.kt │ │ ├── CombinedContextsViewTest.kt │ │ ├── CombinedScopeViewTest.kt │ │ ├── CustomCachedApplyScopeDataHint.kt │ │ ├── CustomEventProcessor.kt │ │ ├── DateUtilsTest.kt │ │ ├── DeduplicateMultithreadedEventProcessorTest.kt │ │ ├── DefaultCompositePerformanceCollectorTest.kt │ │ ├── DenyReadFileSecurityManager.java │ │ ├── DiagnosticLoggerTest.kt │ │ ├── DirectoryProcessorTest.kt │ │ ├── DisabledQueueTest.kt │ │ ├── DsnTest.kt │ │ ├── DsnUtilTest.kt │ │ ├── DuplicateEventDetectionEventProcessorTest.kt │ │ ├── EnvelopeSenderTest.kt │ │ ├── ExternalOptionsTest.kt │ │ ├── FileFromResources.kt │ │ ├── FilterStringTest.kt │ │ ├── FullyDisplayedReporterTest.kt │ │ ├── HttpStatusCodeRangeTest.kt │ │ ├── HubAdapterTest.kt │ │ ├── InstrumenterTest.kt │ │ ├── IpAddressUtilsTest.kt │ │ ├── JavaMemoryCollectorTest.kt │ │ ├── JsonObjectDeserializerTest.kt │ │ ├── JsonObjectReaderTest.kt │ │ ├── JsonObjectSerializerTest.kt │ │ ├── JsonReflectionObjectSerializerTest.kt │ │ ├── JsonSerializerBenchmarkTests.kt │ │ ├── JsonSerializerTest.kt │ │ ├── JsonUnknownSerializationTest.kt │ │ ├── MainEventProcessorTest.kt │ │ ├── MeasurementUnitTest.kt │ │ ├── NoOpConnectionStatusProviderTest.kt │ │ ├── NoOpContinuousProfilerTest.kt │ │ ├── NoOpHubTest.kt │ │ ├── NoOpScopeTest.kt │ │ ├── NoOpSentryClientTest.kt │ │ ├── NoOpSentryExecutorServiceTest.kt │ │ ├── NoOpSerializerTest.kt │ │ ├── NoOpSpanTest.kt │ │ ├── NoOpTransactionProfilerTest.kt │ │ ├── NoOpTransactionTest.kt │ │ ├── OptionsContainerTest.kt │ │ ├── OutboxSenderTest.kt │ │ ├── PreviousSessionFinalizerTest.kt │ │ ├── PropagationContextTest.kt │ │ ├── RequestDetailsResolverTest.kt │ │ ├── SampleDsn.kt │ │ ├── ScopeTest.kt │ │ ├── ScopesAdapterTest.kt │ │ ├── ScopesTest.kt │ │ ├── SendCachedEnvelopeFireAndForgetIntegrationTest.kt │ │ ├── SentryAutoDateProviderTest.kt │ │ ├── SentryBaseEventTypeTest.kt │ │ ├── SentryClientTest.kt │ │ ├── SentryCrashLastRunStateTest.kt │ │ ├── SentryEnvelopeItemTest.kt │ │ ├── SentryEnvelopeTest.kt │ │ ├── SentryEventTest.kt │ │ ├── SentryExceptionFactoryTest.kt │ │ ├── SentryExecutorServiceTest.kt │ │ ├── SentryFeedbackOptionsTest.kt │ │ ├── SentryInstantDateTest.kt │ │ ├── SentryIntegrationPackageStorageTest.kt │ │ ├── SentryLongDateTest.kt │ │ ├── SentryNanotimeDateTest.kt │ │ ├── SentryOptionsManipulator.kt │ │ ├── SentryOptionsTest.kt │ │ ├── SentryOptionsTracingTest.kt │ │ ├── SentryReplayOptionsTest.kt │ │ ├── SentryRuntimeEventProcessorTest.kt │ │ ├── SentryStackTraceFactoryTest.kt │ │ ├── SentryTest.kt │ │ ├── SentryThreadFactoryTest.kt │ │ ├── SentryTraceHeaderTest.kt │ │ ├── SentryTracerTest.kt │ │ ├── SentryUUIDTest.kt │ │ ├── SentryValuesTest.kt │ │ ├── SentryWrapperTest.kt │ │ ├── SessionAdapterTest.kt │ │ ├── ShutdownHookIntegrationTest.kt │ │ ├── SpanContextTest.kt │ │ ├── SpanStatusTest.kt │ │ ├── SpanTest.kt │ │ ├── StackTest.kt │ │ ├── StringExtensions.kt │ │ ├── TraceContextSerializationTest.kt │ │ ├── TracePropagationTargetsTest.kt │ │ ├── TracesSamplerTest.kt │ │ ├── TransactionContextTest.kt │ │ ├── UUIDStringUtilsTest.kt │ │ ├── UncaughtExceptionHandlerIntegrationTest.kt │ │ ├── UrlDetailsTest.kt │ │ ├── UserFeedbackSerializationTest.kt │ │ ├── backpressure │ │ └── BackpressureMonitorTest.kt │ │ ├── cache │ │ ├── CacheStrategyTest.kt │ │ ├── CacheUtilsTest.kt │ │ ├── EnvelopeCacheTest.kt │ │ ├── PersistingOptionsObserverTest.kt │ │ ├── PersistingScopeObserverTest.kt │ │ └── tape │ │ │ ├── CorruptQueueFileTest.kt │ │ │ ├── ObjectQueueTest.kt │ │ │ └── QueueFileTest.kt │ │ ├── clientreport │ │ ├── AtomicClientReportStorageTest.kt │ │ ├── ClientReportMultiThreadingTest.kt │ │ └── ClientReportTest.kt │ │ ├── config │ │ ├── ClasspathPropertiesLoaderTest.kt │ │ ├── CompositePropertiesProviderTest.kt │ │ ├── EnvironmentVariablePropertiesProviderTest.kt │ │ ├── FilesystemPropertiesLoaderTest.kt │ │ ├── PropertiesProviderTest.kt │ │ ├── SimplePropertiesProviderTest.kt │ │ └── SystemPropertyPropertiesProviderTest.kt │ │ ├── hints │ │ └── HintTest.kt │ │ ├── instrumentation │ │ └── file │ │ │ ├── FileIOSpanManagerTest.kt │ │ │ ├── SentryFileInputStreamTest.kt │ │ │ ├── SentryFileOutputStreamTest.kt │ │ │ ├── SentryFileReaderTest.kt │ │ │ └── SentryFileWriterTest.kt │ │ ├── internal │ │ ├── SpotlightIntegrationTest.kt │ │ ├── debugmeta │ │ │ └── ResourcesDebugMetaLoaderTest.kt │ │ └── modules │ │ │ ├── CompositeModulesLoaderTest.kt │ │ │ ├── ManifestModulesLoaderTest.kt │ │ │ └── ResourcesModulesLoaderTest.kt │ │ ├── protocol │ │ ├── AppSerializationTest.kt │ │ ├── AppTest.kt │ │ ├── BreadcrumbSerializationTest.kt │ │ ├── BrowserSerializationTest.kt │ │ ├── BrowserTest.kt │ │ ├── CombinedContextsViewSerializationTest.kt │ │ ├── ContextsSerializationTest.kt │ │ ├── ContextsTest.kt │ │ ├── DebugImageSerializationTest.kt │ │ ├── DebugMetaSerializationTest.kt │ │ ├── DebugMetaTest.kt │ │ ├── DeviceSerializationTest.kt │ │ ├── DeviceTest.kt │ │ ├── FeedbackTest.kt │ │ ├── GpuSerializationTest.kt │ │ ├── GpuTest.kt │ │ ├── MeasurementValueSerializationTest.kt │ │ ├── MechanismSerializationTest.kt │ │ ├── MechanismTest.kt │ │ ├── MessageSerializationTest.kt │ │ ├── MessageTest.kt │ │ ├── OperatingSystemSerializationTest.kt │ │ ├── OperatingSystemTest.kt │ │ ├── ReplayRecordingSerializationTest.kt │ │ ├── RequestSerializationTest.kt │ │ ├── RequestTest.kt │ │ ├── ResponseSerializationTest.kt │ │ ├── SdkInfoSerializationTest.kt │ │ ├── SdkVersionSerializationTest.kt │ │ ├── SentryBaseEventSerializationTest.kt │ │ ├── SentryEnvelopeHeaderSerializationTest.kt │ │ ├── SentryEnvelopeItemHeaderSerializationTest.kt │ │ ├── SentryEventSerializationTest.kt │ │ ├── SentryExceptionSerializationTest.kt │ │ ├── SentryIdSerializationTest.kt │ │ ├── SentryIdTest.kt │ │ ├── SentryItemTypeSerializationTest.kt │ │ ├── SentryLockReasonSerializationTest.kt │ │ ├── SentryLogsSerializationTest.kt │ │ ├── SentryPackageSerializationTest.kt │ │ ├── SentryReplayEventSerializationTest.kt │ │ ├── SentryRuntimeSerializationTest.kt │ │ ├── SentryRuntimeTest.kt │ │ ├── SentrySpanSerializationTest.kt │ │ ├── SentrySpanTest.kt │ │ ├── SentryStackFrameSerializationTest.kt │ │ ├── SentryStackTraceSerializationTest.kt │ │ ├── SentryThreadSerializationTest.kt │ │ ├── SentryTransactionSerializationTest.kt │ │ ├── SerializationUtils.kt │ │ ├── SessionSerializationTest.kt │ │ ├── SpanContextSerializationTest.kt │ │ ├── SpanIdSerializationTest.kt │ │ ├── SpanIdTest.kt │ │ ├── SpringSerializationTest.kt │ │ ├── UserSerializationTest.kt │ │ ├── UserTest.kt │ │ ├── ViewHierarchyNodeSerializationTest.kt │ │ └── ViewHierarchySerializationTest.kt │ │ ├── rrweb │ │ ├── RRWebBreadcrumbEventSerializationTest.kt │ │ ├── RRWebEventSerializationTest.kt │ │ ├── RRWebInteractionEventSerializationTest.kt │ │ ├── RRWebInteractionMoveEventSerializationTest.kt │ │ ├── RRWebMetaEventSerializationTest.kt │ │ ├── RRWebOptionsEventSerializationTest.kt │ │ ├── RRWebSpanEventSerializationTest.kt │ │ └── RRWebVideoEventSerializationTest.kt │ │ ├── transport │ │ ├── AsyncHttpTransportClientReportTest.kt │ │ ├── AsyncHttpTransportTest.kt │ │ ├── HttpConnectionTest.kt │ │ ├── QueuedThreadPoolExecutorTest.kt │ │ ├── RateLimiterTest.kt │ │ ├── ReusableCountLatchTest.kt │ │ └── StdoutTransportTest.kt │ │ ├── util │ │ ├── AutoClosableReentrantLockTest.kt │ │ ├── CheckInUtilsTest.kt │ │ ├── CollectionUtilsTest.kt │ │ ├── ExceptionUtilsTest.kt │ │ ├── Extensions.kt │ │ ├── FileUtilsTest.kt │ │ ├── HintUtilsTest.kt │ │ ├── HttpUtilsTest.kt │ │ ├── InitUtilTest.kt │ │ ├── JsonSerializationUtilsTest.kt │ │ ├── LazyEvaluatorTest.kt │ │ ├── MapObjectReaderTest.kt │ │ ├── MapObjectWriterTest.kt │ │ ├── PlatformTestManipulator.kt │ │ ├── SampleRateUtilTest.kt │ │ ├── SentryRandomTest.kt │ │ ├── SpanUtilsTest.kt │ │ ├── StringUtilsTest.kt │ │ ├── TracingUtilsTest.kt │ │ ├── UrlUtilsTest.kt │ │ └── thread │ │ │ └── ThreadCheckerTest.kt │ │ └── vendor │ │ └── gson │ │ ├── internal │ │ └── bind │ │ │ └── util │ │ │ └── ISO8601UtilsTest.java │ │ └── stream │ │ ├── JsonReaderTest.java │ │ └── JsonWriterTest.java │ └── resources │ ├── Tongariro.jpg │ ├── corrupt_queue_file.txt │ ├── envelope-event-attachment.txt │ ├── envelope-feedback.txt │ ├── envelope-session-start.txt │ ├── envelope-transaction-with-sample-rand.txt │ ├── envelope-transaction-with-sample-rate.txt │ ├── envelope-transaction.txt │ ├── envelope_attachment.txt │ ├── envelope_session.txt │ ├── envelope_session_sdkversion.txt │ ├── event.json │ ├── event_breadcrumb_data.json │ ├── event_with_contexts.json │ ├── json │ ├── app.json │ ├── breadcrumb.json │ ├── browser.json │ ├── checkin_crontab.json │ ├── checkin_interval.json │ ├── contexts.json │ ├── debug_image.json │ ├── debug_meta.json │ ├── device.json │ ├── gpu.json │ ├── measurement_value_double.json │ ├── measurement_value_int.json │ ├── measurement_value_missing.json │ ├── mechanism.json │ ├── message.json │ ├── operating_system.json │ ├── replay_recording.json │ ├── request.json │ ├── response.json │ ├── rrweb_breadcrumb_event.json │ ├── rrweb_event.json │ ├── rrweb_interaction_event.json │ ├── rrweb_interaction_move_event.json │ ├── rrweb_meta_event.json │ ├── rrweb_options_event.json │ ├── rrweb_span_event.json │ ├── rrweb_video_event.json │ ├── sdk_info.json │ ├── sdk_version.json │ ├── sentry_base_event.json │ ├── sentry_base_event_with_null_extra.json │ ├── sentry_envelope_header.json │ ├── sentry_envelope_item_header.json │ ├── sentry_event.json │ ├── sentry_exception.json │ ├── sentry_id.json │ ├── sentry_lock_reason.json │ ├── sentry_logs.json │ ├── sentry_package.json │ ├── sentry_replay_event.json │ ├── sentry_runtime.json │ ├── sentry_span.json │ ├── sentry_span_legacy_date_format.json │ ├── sentry_stack_frame.json │ ├── sentry_stack_trace.json │ ├── sentry_thread.json │ ├── sentry_transaction.json │ ├── sentry_transaction_legacy_date_format.json │ ├── sentry_transaction_no_measurement_unit.json │ ├── session.json │ ├── span_context.json │ ├── span_context_null_op.json │ ├── span_id.json │ ├── spring.json │ ├── trace_state.json │ ├── trace_state_no_sample_rate.json │ ├── user.json │ ├── view_hierarchy.json │ └── view_hierarchy_node.json │ ├── mockito-extensions │ └── org.mockito.plugins.MockMaker │ └── session.json ├── settings.gradle.kts └── test ├── system-test-runner.py └── system-test-sentry-server.py /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | trim_trailing_whitespace = true 7 | insert_final_newline = true 8 | max_line_length = 140 9 | ij_java_names_count_to_use_import_on_demand = 9999 10 | ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | 15 | [*.java] 16 | charset = utf-8 17 | 18 | [*.{kt,kts}] 19 | charset = utf-8 20 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | export VIRTUAL_ENV=".venv" 2 | layout python3 3 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # Reformat codebase with Ktfmt and more accurate spotless configuration: #4499 2 | 8b8369f06cbc5a9738de7810b1df5863b3ac6bcb 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text eol=lf 2 | *.png binary 3 | *.jpg binary 4 | 5 | # These are explicitly windows files and should use crlf 6 | *.bat text eol=crlf 7 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @adinauer @romtsn @stefanosiano @markushi @lcian 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Join Sentry Discord 4 | url: https://discord.com/invite/sentry 5 | about: A place to talk about SDK development and other Sentry related topics. It's not meant as a support channel. 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/maintainer-blank.yml: -------------------------------------------------------------------------------- 1 | name: Blank Issue 2 | description: Blank Issue. Reserved for maintainers. 3 | labels: ["Java"] 4 | body: 5 | - type: textarea 6 | id: description 7 | attributes: 8 | label: Description 9 | description: Please describe the issue. 10 | validations: 11 | required: true 12 | 13 | - type: markdown 14 | attributes: 15 | value: |- 16 | ## Thanks 🙏 17 | Check our [triage docs](https://open.sentry.io/triage/) for what to expect next. 18 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: weekly 7 | -------------------------------------------------------------------------------- /.github/file-filters.yml: -------------------------------------------------------------------------------- 1 | # This is used by the action https://github.com/dorny/paths-filter 2 | 3 | high_risk_code: &high_risk_code 4 | # Transport classes 5 | - "sentry/src/main/java/io/sentry/transport/AsyncHttpTransport.java" 6 | - "sentry/src/main/java/io/sentry/transport/HttpConnection.java" 7 | - "sentry/src/main/java/io/sentry/transport/QueuedThreadPoolExecutor.java" 8 | - "sentry/src/main/java/io/sentry/transport/RateLimiter.java" 9 | - "sentry-apache-http-client-5/src/main/java/io/sentry/transport/apache/ApacheHttpClientTransport.java" 10 | 11 | # Class used by hybrid SDKs 12 | - "sentry-android-core/src/main/java/io/sentry/android/core/InternalSentrySdk.java" 13 | -------------------------------------------------------------------------------- /.github/workflows/add-platform-label.yml: -------------------------------------------------------------------------------- 1 | name: Add Platform Label 2 | on: 3 | issues: 4 | types: [opened] 5 | pull_request: 6 | types: [opened] 7 | 8 | jobs: 9 | add_label: 10 | runs-on: ubuntu-latest 11 | permissions: 12 | issues: write 13 | steps: 14 | - uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90 # pin@1.0.4 15 | with: 16 | add-labels: 'Platform: Java' 17 | repo-token: ${{ secrets.GITHUB_TOKEN }} 18 | -------------------------------------------------------------------------------- /.github/workflows/danger.yml: -------------------------------------------------------------------------------- 1 | name: Danger 2 | 3 | on: 4 | pull_request: 5 | types: [opened, synchronize, reopened, edited, ready_for_review] 6 | 7 | jobs: 8 | danger: 9 | uses: getsentry/github-workflows/.github/workflows/danger.yml@v2 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea/ 3 | .gradle/ 4 | .run/ 5 | build/ 6 | artifacts/ 7 | out/ 8 | local.properties 9 | **.iml 10 | *.hprof 11 | .cxx 12 | **/sentry-native-local 13 | target/ 14 | .classpath 15 | .project 16 | .settings/ 17 | bin/ 18 | distributions/ 19 | /Sentry/A1F16C4F5D23B2A1D281EE471D6F836BDEA23CB4/ 20 | *.vscode/ 21 | sentry-spring-boot-starter-jakarta/src/main/resources/META-INF/spring.factories 22 | sentry-samples/sentry-samples-spring-boot-jakarta/spy.log 23 | sentry-mock-server.txt 24 | spring-server.txt 25 | spy.log 26 | .kotlin 27 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/.gitmodules -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /build-logic/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `kotlin-dsl` 3 | } 4 | 5 | repositories { 6 | gradlePluginPortal() 7 | } 8 | 9 | dependencies { 10 | implementation(libs.spotlessLib) 11 | } 12 | -------------------------------------------------------------------------------- /build-logic/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | dependencyResolutionManagement { 2 | versionCatalogs { 3 | create("libs") { 4 | from(files("../gradle/libs.versions.toml")) 5 | } 6 | } 7 | } 8 | 9 | rootProject.name = "build-logic" 10 | -------------------------------------------------------------------------------- /buildSrc/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.jetbrains.kotlin.gradle.tasks.KotlinCompile 2 | 3 | plugins { 4 | `kotlin-dsl` 5 | } 6 | 7 | repositories { 8 | mavenCentral() 9 | } 10 | 11 | tasks.withType().configureEach { 12 | kotlinOptions.jvmTarget = JavaVersion.VERSION_17.toString() 13 | } 14 | -------------------------------------------------------------------------------- /buildSrc/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "sentry-buildSrc" 2 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | comment: no 2 | codecov: 3 | require_ci_to_pass: no 4 | max_report_age: off 5 | 6 | coverage: 7 | status: 8 | project: 9 | default: 10 | target: 78% 11 | threshold: 3% 12 | patch: off 13 | range: 78...100 14 | precision: 3 15 | round: down 16 | 17 | ignore: 18 | - "**/src/test/*" 19 | - "sentry-android-integration-tests/*" 20 | - "sentry-system-test-support/*" 21 | - "sentry-test-support/*" 22 | - "sentry-samples/*" 23 | -------------------------------------------------------------------------------- /debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/debug.keystore -------------------------------------------------------------------------------- /detekt.yml: -------------------------------------------------------------------------------- 1 | style: 2 | ReturnCount: 3 | max: 3 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /hooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # From gist at https://gist.github.com/chadmaughan/5889802 3 | 4 | echo '[git hook] executing gradle spotless check before commit' 5 | 6 | # run the spotlessCheck with the gradle wrapper 7 | make checkFormat 8 | 9 | # store the last exit code in a variable 10 | RESULT=$? 11 | 12 | # return the './gradlew spotlessCheck' exit code 13 | exit $RESULT 14 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | certifi==2025.7.14 2 | charset-normalizer==3.4.2 3 | idna==3.10 4 | requests==2.32.4 5 | urllib3==2.5.0 6 | -------------------------------------------------------------------------------- /scripts/bump-version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ./scripts/bump-version.sh 4 | # eg ./scripts/bump-version.sh "6.0.0-alpha.1" "6.0.0-alpha.2" 5 | 6 | set -eux 7 | 8 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 9 | cd $SCRIPT_DIR/.. 10 | 11 | OLD_VERSION="$1" 12 | NEW_VERSION="$2" 13 | 14 | GRADLE_FILEPATH="gradle.properties" 15 | 16 | # Replace `versionName` with the given version 17 | VERSION_NAME_PATTERN="versionName" 18 | perl -pi -e "s/$VERSION_NAME_PATTERN=.*$/$VERSION_NAME_PATTERN=$NEW_VERSION/g" $GRADLE_FILEPATH 19 | -------------------------------------------------------------------------------- /scripts/commit-formatted-code.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | GITHUB_BRANCH="${1}" 5 | 6 | if [[ $(git status) == *"nothing to commit"* ]]; then 7 | echo "Nothing to commit. All code formatted correctly." 8 | else 9 | echo "Formatted some code. Going to push the changes." 10 | git config --global user.name 'Sentry Github Bot' 11 | git config --global user.email 'bot+github-bot@sentry.io' 12 | git fetch 13 | git checkout ${GITHUB_BRANCH} 14 | git commit -am "Format code" 15 | git push --set-upstream origin ${GITHUB_BRANCH} 16 | fi 17 | -------------------------------------------------------------------------------- /scripts/settings.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | ossrh-staging-api 8 | ${env.OSSRH_USERNAME} 9 | ${env.OSSRH_PASSWORD} 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /sentry-android-core/.gitignore: -------------------------------------------------------------------------------- 1 | INSTALLATION 2 | last_crash 3 | .options-cache/ 4 | .scope-cache/ 5 | /sentry 6 | -------------------------------------------------------------------------------- /sentry-android-core/src/main/java/io/sentry/android/core/IDebugImagesLoader.java: -------------------------------------------------------------------------------- 1 | package io.sentry.android.core; 2 | 3 | import io.sentry.protocol.DebugImage; 4 | import java.util.List; 5 | import java.util.Set; 6 | import org.jetbrains.annotations.ApiStatus; 7 | import org.jetbrains.annotations.Nullable; 8 | 9 | /** Used for loading the list of debug images from sentry-native. */ 10 | @ApiStatus.Internal 11 | public interface IDebugImagesLoader { 12 | @Nullable 13 | List loadDebugImages(); 14 | 15 | @Nullable 16 | Set loadDebugImagesForAddresses(Set addresses); 17 | 18 | void clearDebugImages(); 19 | } 20 | -------------------------------------------------------------------------------- /sentry-android-core/src/main/java/io/sentry/android/core/NdkHandlerStrategy.java: -------------------------------------------------------------------------------- 1 | package io.sentry.android.core; 2 | 3 | import org.jetbrains.annotations.ApiStatus; 4 | 5 | @ApiStatus.Internal 6 | public enum NdkHandlerStrategy { 7 | SENTRY_HANDLER_STRATEGY_DEFAULT(0), 8 | SENTRY_HANDLER_STRATEGY_CHAIN_AT_START(1); 9 | 10 | private final int value; 11 | 12 | NdkHandlerStrategy(final int value) { 13 | this.value = value; 14 | } 15 | 16 | public int getValue() { 17 | return value; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /sentry-android-core/src/main/java/io/sentry/android/core/internal/util/ClassUtil.java: -------------------------------------------------------------------------------- 1 | package io.sentry.android.core.internal.util; 2 | 3 | import org.jetbrains.annotations.ApiStatus; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | @ApiStatus.Internal 7 | public class ClassUtil { 8 | 9 | public static @Nullable String getClassName(final @Nullable Object object) { 10 | if (object == null) { 11 | return null; 12 | } 13 | final @Nullable String canonicalName = object.getClass().getCanonicalName(); 14 | if (canonicalName != null) { 15 | return canonicalName; 16 | } 17 | return object.getClass().getSimpleName(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /sentry-android-core/src/main/res/drawable/sentry_edit_text_border.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /sentry-android-core/src/main/res/drawable/sentry_oval_button_ripple_background.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /sentry-android-core/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /sentry-android-core/src/main/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-core/src/test/assets/sentry-debug-meta.properties: -------------------------------------------------------------------------------- 1 | io.sentry.ProguardUuids=test 2 | -------------------------------------------------------------------------------- /sentry-android-core/src/test/java/io/sentry/android/core/ApplicationStub.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.core 2 | 3 | import android.app.Application 4 | 5 | class ApplicationStub : Application() 6 | -------------------------------------------------------------------------------- /sentry-android-core/src/test/java/io/sentry/android/core/CachedEvent.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.core 2 | 3 | import io.sentry.hints.Cached 4 | 5 | class CachedEvent : Cached 6 | -------------------------------------------------------------------------------- /sentry-android-core/src/test/java/io/sentry/android/core/CustomCachedApplyScopeDataHint.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.core 2 | 3 | import io.sentry.hints.ApplyScopeData 4 | import io.sentry.hints.Cached 5 | 6 | class CustomCachedApplyScopeDataHint : Cached, ApplyScopeData 7 | -------------------------------------------------------------------------------- /sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidDateProviderTest.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.core 2 | 3 | import io.sentry.SentryNanotimeDate 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class SentryAndroidDateProviderTest { 8 | @Test 9 | fun `provides SentryInstantDate on newer Android API levels`() { 10 | val date = SentryAndroidDateProvider().now() 11 | assertTrue(date is SentryNanotimeDate) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /sentry-android-core/src/test/java/io/sentry/android/core/SentryNdk.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.core 2 | 3 | class SentryNdk { 4 | companion object { 5 | @JvmStatic fun init(options: SentryAndroidOptions) {} 6 | 7 | @JvmStatic fun close() {} 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sentry-android-core/src/test/java/io/sentry/android/core/SentryShadowProcess.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.core 2 | 3 | import org.robolectric.annotation.Implementation 4 | import org.robolectric.annotation.Implements 5 | 6 | @Implements(android.os.Process::class) 7 | class SentryShadowProcess { 8 | companion object { 9 | private var startupTimeMillis: Long = 0 10 | 11 | fun setStartUptimeMillis(value: Long) { 12 | startupTimeMillis = value 13 | } 14 | 15 | @Suppress("unused") 16 | @Implementation 17 | @JvmStatic 18 | fun getStartUptimeMillis(): Long = startupTimeMillis 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /sentry-android-core/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-android-core/src/test/resources/robolectric.properties: -------------------------------------------------------------------------------- 1 | sdk=21 2 | application=io.sentry.android.core.ApplicationStub 3 | -------------------------------------------------------------------------------- /sentry-android-fragment/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | last_crash 3 | /sentry 4 | -------------------------------------------------------------------------------- /sentry-android-fragment/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | ##---------------Begin: proguard configuration for Fragment ---------- 2 | 3 | # The Android SDK checks at runtime if these classes are available via Class.forName 4 | -keep class io.sentry.android.fragment.FragmentLifecycleIntegration { (...); } 5 | -keepnames class androidx.fragment.app.FragmentManager$FragmentLifecycleCallbacks 6 | 7 | # To ensure that stack traces is unambiguous 8 | # https://developer.android.com/studio/build/shrink-code#decode-stack-trace 9 | -keepattributes LineNumberTable,SourceFile 10 | 11 | ##---------------End: proguard configuration for Fragment ---------- 12 | -------------------------------------------------------------------------------- /sentry-android-fragment/src/main/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-fragment/src/test/java/io/sentry/android/fragment/FragmentLifecycleStateTest.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.fragment 2 | 3 | import kotlin.test.Test 4 | import kotlin.test.assertEquals 5 | 6 | class FragmentLifecycleStateTest { 7 | @Test 8 | fun `states contains all states`() { 9 | assertEquals(FragmentLifecycleState.states, FragmentLifecycleState.values().toSet()) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/README.md: -------------------------------------------------------------------------------- 1 | # Android performance-impact and integration tests 2 | 3 | * [Sample app without sentry](./test-app-plain) created with Android Studio -> New Project -> Basic Activity 4 | * [Same app, but with Sentry included](./test-app-sentry) - made part of the root project 5 | * [App metrics test specification (yaml)](./metrics-test.yml) 6 | * [Espresso-based benchmarks](./sentry-uitest-android-benchmark) - run within SauceLabs (see /.sauce/*.yml) 7 | * [Espresso-based UI tests](./sentry-uitest-android) - run within SauceLabs (see /.sauce/*.yml) 8 | * Also used for compatibility test matrix against new AGP versions 9 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/metrics-test.yml: -------------------------------------------------------------------------------- 1 | apps: 2 | - name: io.sentry.java.tests.perf.appplain 3 | activity: MainActivity 4 | path: ./test-app-plain/build/outputs/apk/release/test-app-plain-release.apk 5 | - name: io.sentry.java.tests.perf.appsentry 6 | activity: MainActivity 7 | path: ./test-app-sentry/build/outputs/apk/release/test-app-sentry-release.apk 8 | 9 | startupTimeTest: 10 | runs: 50 11 | diffMin: 0 12 | diffMax: 150 13 | 14 | binarySizeTest: 15 | diffMin: 500 KiB 16 | diffMax: 700 KiB 17 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/sentry-uitest-android-benchmark/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/sentry-uitest-android-critical/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /maestro-logs 3 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/sentry-uitest-android-critical/maestro/corruptEnvelope.yaml: -------------------------------------------------------------------------------- 1 | appId: io.sentry.uitest.android.critical 2 | --- 3 | - launchApp 4 | - tapOn: "Write Corrupted Envelope" 5 | # The close here ensures the next corrupted envelope 6 | # will be present on the next app launch 7 | - tapOn: "Close SDK" 8 | - tapOn: "Write Corrupted Envelope" 9 | - stopApp 10 | - launchApp 11 | - assertVisible: "Welcome!" 12 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/sentry-uitest-android-critical/maestro/crash.yaml: -------------------------------------------------------------------------------- 1 | appId: io.sentry.uitest.android.critical 2 | --- 3 | - launchApp 4 | - tapOn: "Crash" 5 | - launchApp 6 | - assertVisible: "Welcome!" 7 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/sentry-uitest-android/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/sentry-uitest-android/src/main/java/io/sentry/uitest/android/EmptyActivity.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.uitest.android 2 | 3 | import android.os.Bundle 4 | import androidx.appcompat.app.AppCompatActivity 5 | 6 | class EmptyActivity : AppCompatActivity() { 7 | override fun onCreate(savedInstanceState: Bundle?) { 8 | super.onCreate(savedInstanceState) 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/sentry-uitest-android/src/main/res/layout/activity_profiling_sample.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-plain/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/values-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 48dp 3 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/values-w1240dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 200dp 3 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/values-w600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 48dp 3 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | TestAppPlain 3 | Settings 4 | 5 | First Fragment 6 | Second Fragment 7 | Next 8 | Previous 9 | 10 | Hello first fragment 11 | Hello second fragment. Arg: %1$s 12 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-plain/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-integration-tests/test-app-sentry/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/values-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 48dp 3 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/values-w1240dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 200dp 3 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/values-w600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 48dp 3 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | TestAppSentry 3 | Settings 4 | 5 | First Fragment 6 | Second Fragment 7 | Next 8 | Previous 9 | 10 | Hello first fragment 11 | Hello second fragment. Arg: %1$s 12 | 13 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /sentry-android-integration-tests/test-app-sentry/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /sentry-android-navigation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /sentry-android-navigation/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | ##---------------Begin: proguard configuration for Compose ---------- 2 | 3 | # To ensure that stack traces is unambiguous 4 | # https://developer.android.com/studio/build/shrink-code#decode-stack-trace 5 | -keepattributes LineNumberTable,SourceFile 6 | 7 | ##---------------End: proguard configuration for Compose ---------- 8 | -------------------------------------------------------------------------------- /sentry-android-navigation/src/main/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-ndk/src/main/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-ndk/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | 3 | -------------------------------------------------------------------------------- /sentry-android-replay/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /sentry-android-replay/src/main/java/io/sentry/android/replay/ViewExtensions.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.replay 2 | 3 | import android.view.View 4 | 5 | /** Marks this view to be masked in session replay. */ 6 | public fun View.sentryReplayMask() { 7 | setTag(R.id.sentry_privacy, "mask") 8 | } 9 | 10 | /** 11 | * Marks this view to be unmasked in session replay. All its content will be visible in the replay, 12 | * use with caution. 13 | */ 14 | public fun View.sentryReplayUnmask() { 15 | setTag(R.id.sentry_privacy, "unmask") 16 | } 17 | -------------------------------------------------------------------------------- /sentry-android-replay/src/main/java/io/sentry/android/replay/util/Context.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.replay.util 2 | 3 | import android.content.Context 4 | 5 | internal fun Context.appContext() = this.applicationContext ?: this 6 | -------------------------------------------------------------------------------- /sentry-android-replay/src/main/java/io/sentry/android/replay/util/MainLooperHandler.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.replay.util 2 | 3 | import android.os.Handler 4 | import android.os.Looper 5 | 6 | internal class MainLooperHandler(looper: Looper = Looper.getMainLooper()) { 7 | val handler = Handler(looper) 8 | 9 | fun post(runnable: Runnable) { 10 | handler.post(runnable) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sentry-android-replay/src/main/java/io/sentry/android/replay/util/Sampling.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.replay.util 2 | 3 | import io.sentry.util.Random 4 | 5 | internal fun Random.sample(rate: Double?): Boolean { 6 | if (rate != null) { 7 | return !(rate < this.nextDouble()) // bad luck 8 | } 9 | return false 10 | } 11 | -------------------------------------------------------------------------------- /sentry-android-replay/src/main/java/io/sentry/android/replay/util/SystemProperties.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.android.replay.util 2 | 3 | import android.os.Build 4 | 5 | internal object SystemProperties { 6 | enum class Property { 7 | SOC_MODEL, 8 | SOC_MANUFACTURER, 9 | } 10 | 11 | fun get(key: Property, defaultValue: String = ""): String = 12 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { 13 | when (key) { 14 | Property.SOC_MODEL -> Build.SOC_MODEL 15 | Property.SOC_MANUFACTURER -> Build.SOC_MANUFACTURER 16 | } 17 | } else { 18 | defaultValue 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /sentry-android-replay/src/main/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sentry-android-replay/src/main/resources/META-INF/io/sentry/sentry-android-replay/verification.properties: -------------------------------------------------------------------------------- 1 | #This is the verification token for the io.sentry:sentry-android-replay SDK. 2 | #Tue Aug 20 03:48:30 PDT 2024 3 | token=MNMM3TDLWFC5DOCIOFYQJO7JWI 4 | -------------------------------------------------------------------------------- /sentry-android-replay/src/test/resources/Tongariro.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android-replay/src/test/resources/Tongariro.jpg -------------------------------------------------------------------------------- /sentry-android-sqlite/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | ##---------------Begin: proguard configuration for SQLite ---------- 2 | 3 | # To ensure that stack traces is unambiguous 4 | # https://developer.android.com/studio/build/shrink-code#decode-stack-trace 5 | -keepattributes LineNumberTable,SourceFile 6 | 7 | ##---------------End: proguard configuration for SQLite ---------- 8 | -------------------------------------------------------------------------------- /sentry-android-sqlite/src/main/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-sqlite/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-android-timber/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | ##---------------Begin: proguard configuration for Timber ---------- 2 | 3 | # The Android SDK checks at runtime if these classes are available via Class.forName 4 | -keep class io.sentry.android.timber.SentryTimberIntegration { (...); } 5 | -keepnames class timber.log.Timber 6 | 7 | # To ensure that stack traces is unambiguous 8 | # https://developer.android.com/studio/build/shrink-code#decode-stack-trace 9 | -keepattributes LineNumberTable,SourceFile 10 | 11 | ##---------------End: proguard configuration for Timber ---------- 12 | -------------------------------------------------------------------------------- /sentry-android-timber/src/main/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-android-timber/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-android/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-android/proguard-rules.pro -------------------------------------------------------------------------------- /sentry-android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /sentry-android/src/main/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-apache-http-client-5/src/test/kotlin/io/sentry/SentryOptionsManipulator.kt: -------------------------------------------------------------------------------- 1 | package io.sentry 2 | 3 | import io.sentry.clientreport.IClientReportRecorder 4 | 5 | class SentryOptionsManipulator { 6 | companion object { 7 | fun setClientReportRecorder( 8 | options: SentryOptions, 9 | clientReportRecorder: IClientReportRecorder, 10 | ) { 11 | options.clientReportRecorder = clientReportRecorder 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-apache-http-client-5/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-apollo-3/src/main/java/io/sentry/apollo3/SentryApollo3ClientException.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.apollo3 2 | 3 | /** 4 | * Used for holding an Apollo3 client error, for example. An integration that does not throw when 5 | * API returns 4xx, 5xx or the `errors` field. 6 | */ 7 | class SentryApollo3ClientException(message: String?) : Exception(message) { 8 | companion object { 9 | private const val serialVersionUID = 4312120066430858144L 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sentry-apollo-3/src/test/java/io/sentry/apollo3/type/GraphQLBoolean.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo3.type 7 | 8 | import com.apollographql.apollo3.api.CustomScalarType 9 | 10 | /** The `Boolean` scalar type represents `true` or `false`. */ 11 | public class GraphQLBoolean { 12 | public companion object { 13 | public val type: CustomScalarType = CustomScalarType("Boolean", "kotlin.Boolean") 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /sentry-apollo-3/src/test/java/io/sentry/apollo3/type/GraphQLString.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo3.type 7 | 8 | import com.apollographql.apollo3.api.CustomScalarType 9 | 10 | /** 11 | * The `String` scalar type represents textual data, represented as UTF-8 character sequences. The 12 | * String type is most often used by GraphQL to represent free-form human-readable text. 13 | */ 14 | public class GraphQLString { 15 | public companion object { 16 | public val type: CustomScalarType = CustomScalarType("String", "kotlin.String") 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sentry-apollo-3/src/test/java/io/sentry/apollo3/type/Launch.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo3.type 7 | 8 | import com.apollographql.apollo3.api.ObjectType 9 | 10 | public class Launch { 11 | public companion object { 12 | public val type: ObjectType = ObjectType(name = "Launch") 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-apollo-3/src/test/java/io/sentry/apollo3/type/Mission.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo3.type 7 | 8 | import com.apollographql.apollo3.api.ObjectType 9 | 10 | public class Mission { 11 | public companion object { 12 | public val type: ObjectType = ObjectType(name = "Mission") 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-apollo-3/src/test/java/io/sentry/apollo3/type/Query.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo3.type 7 | 8 | import com.apollographql.apollo3.api.ObjectType 9 | 10 | public class Query { 11 | public companion object { 12 | public val type: ObjectType = ObjectType(name = "Query") 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-apollo-3/src/test/java/io/sentry/apollo3/type/Rocket.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo3.type 7 | 8 | import com.apollographql.apollo3.api.ObjectType 9 | 10 | public class Rocket { 11 | public companion object { 12 | public val type: ObjectType = ObjectType(name = "Rocket") 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-apollo-3/src/test/java/io/sentry/util/Apollo3PlatformTestManipulator.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.util 2 | 3 | object Apollo3PlatformTestManipulator { 4 | fun pretendIsAndroid(isAndroid: Boolean) { 5 | Platform.isAndroid = isAndroid 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sentry-apollo-3/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-apollo-4/README.md: -------------------------------------------------------------------------------- 1 | # sentry-apollo-4 2 | 3 | This module provides an integration for [Apollo Kotlin 4](https://www.apollographql.com/docs/kotlin/v4). 4 | 5 | Please consult the documentation on how to install and use this integration in the Sentry Docs for [Android](https://docs.sentry.io/platforms/android/integrations/apollo4/) or [Java](https://docs.sentry.io/platforms/java/tracing/instrumentation/apollo4/). 6 | -------------------------------------------------------------------------------- /sentry-apollo-4/src/main/java/io/sentry/apollo4/SentryApollo4.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.apollo4 2 | 3 | /** Common constants used across the module */ 4 | internal const val OPERATION_ID_HEADER_NAME = "SENTRY-APOLLO-4-OPERATION-ID" 5 | internal const val OPERATION_NAME_HEADER_NAME = "SENTRY-APOLLO-4-OPERATION-NAME" 6 | internal const val OPERATION_TYPE_HEADER_NAME = "SENTRY-APOLLO-4-OPERATION-TYPE" 7 | internal const val VARIABLES_HEADER_NAME = "SENTRY-APOLLO-4-VARIABLES" 8 | internal val INTERNAL_HEADER_NAMES by lazy { 9 | listOf( 10 | OPERATION_ID_HEADER_NAME, 11 | OPERATION_NAME_HEADER_NAME, 12 | OPERATION_TYPE_HEADER_NAME, 13 | VARIABLES_HEADER_NAME, 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /sentry-apollo-4/src/main/java/io/sentry/apollo4/SentryApollo4ClientException.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.apollo4 2 | 3 | /** 4 | * Used for holding an Apollo4 client error, for example. An integration that does not throw when 5 | * API returns 4xx, 5xx or the `errors` field. 6 | */ 7 | class SentryApollo4ClientException(message: String?) : Exception(message) { 8 | companion object { 9 | private const val serialVersionUID = 4312160066430858144L 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sentry-apollo-4/src/test/java/io/sentry/apollo4/generated/type/GraphQLBoolean.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo4.generated.type 7 | 8 | import com.apollographql.apollo.api.CustomScalarType 9 | 10 | /** 11 | * The `Boolean` scalar type represents `true` or `false`. 12 | */ 13 | public class GraphQLBoolean { 14 | public companion object { 15 | public val type: CustomScalarType = CustomScalarType("Boolean", "kotlin.Boolean") 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /sentry-apollo-4/src/test/java/io/sentry/apollo4/generated/type/Launch.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo4.generated.type 7 | 8 | import com.apollographql.apollo.api.ObjectType 9 | 10 | public class Launch { 11 | public companion object { 12 | public val type: ObjectType = ObjectType.Builder(name = "Launch").build() 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-apollo-4/src/test/java/io/sentry/apollo4/generated/type/Mission.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo4.generated.type 7 | 8 | import com.apollographql.apollo.api.ObjectType 9 | 10 | public class Mission { 11 | public companion object { 12 | public val type: ObjectType = ObjectType.Builder(name = "Mission").build() 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-apollo-4/src/test/java/io/sentry/apollo4/generated/type/Query.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo4.generated.type 7 | 8 | import com.apollographql.apollo.api.ObjectType 9 | 10 | public class Query { 11 | public companion object { 12 | public val type: ObjectType = ObjectType.Builder(name = "Query").build() 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-apollo-4/src/test/java/io/sentry/apollo4/generated/type/Rocket.kt: -------------------------------------------------------------------------------- 1 | // 2 | // AUTO-GENERATED FILE. DO NOT MODIFY. 3 | // 4 | // This class was automatically generated by Apollo GraphQL version '3.3.0'. 5 | // 6 | package io.sentry.apollo4.generated.type 7 | 8 | import com.apollographql.apollo.api.ObjectType 9 | 10 | public class Rocket { 11 | public companion object { 12 | public val type: ObjectType = ObjectType.Builder(name = "Rocket").build() 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-apollo-4/src/test/java/io/sentry/util/Apollo4PlatformTestManipulator.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.util 2 | 3 | object Apollo4PlatformTestManipulator { 4 | fun pretendIsAndroid(isAndroid: Boolean) { 5 | Platform.isAndroid = isAndroid 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sentry-apollo-4/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-apollo/src/test/java/io/sentry/apollo/type/CustomType.java: -------------------------------------------------------------------------------- 1 | // AUTO-GENERATED FILE. DO NOT MODIFY. 2 | // 3 | // This class was automatically generated by Apollo GraphQL plugin from the GraphQL queries it 4 | // found. 5 | // It should not be modified by hand. 6 | // 7 | package io.sentry.apollo.type; 8 | 9 | import com.apollographql.apollo.api.ScalarType; 10 | 11 | public enum CustomType implements ScalarType { 12 | ID { 13 | @Override 14 | public String typeName() { 15 | return "ID"; 16 | } 17 | 18 | @Override 19 | public String className() { 20 | return "java.lang.String"; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /sentry-apollo/src/test/java/io/sentry/util/ApolloPlatformTestManipulator.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.util 2 | 3 | object ApolloPlatformTestManipulator { 4 | fun pretendIsAndroid(isAndroid: Boolean) { 5 | Platform.isAndroid = isAndroid 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sentry-apollo/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-compose/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /sentry-compose/README.md: -------------------------------------------------------------------------------- 1 | Building this module outputs: 2 | 3 | 1. sentry-compose-android 4 | 2. sentry-compose-desktop 5 | 3. sentry-compose 6 | 7 | 8 | First two (Android and Desktop) depend on `sentry-compose`. 9 | -------------------------------------------------------------------------------- /sentry-compose/api/desktop/sentry-compose.api: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getsentry/sentry-java/485c1a6bfa003d560b8274a6db61e4010017d711/sentry-compose/api/desktop/sentry-compose.api -------------------------------------------------------------------------------- /sentry-compose/gradle.properties: -------------------------------------------------------------------------------- 1 | kotlin.mpp.stability.nowarn=true 2 | kotlin.mpp.androidSourceSetLayoutVersion=2 3 | 4 | # Don't show Dokka plugin's long message on every build 5 | kotlin.mpp.androidGradlePluginCompatibility.nowarn=true 6 | org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true 7 | -------------------------------------------------------------------------------- /sentry-compose/src/androidMain/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sentry-graphql-core/src/main/java/io/sentry/graphql/SentrySubscriptionHandler.java: -------------------------------------------------------------------------------- 1 | package io.sentry.graphql; 2 | 3 | import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; 4 | import io.sentry.IScopes; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public interface SentrySubscriptionHandler { 8 | @NotNull 9 | Object onSubscriptionResult( 10 | @NotNull Object result, 11 | @NotNull IScopes scopes, 12 | @NotNull ExceptionReporter exceptionReporter, 13 | @NotNull InstrumentationFieldFetchParameters parameters); 14 | } 15 | -------------------------------------------------------------------------------- /sentry-jdbc/src/main/resources/META-INF/services/com.p6spy.engine.event.JdbcEventListener: -------------------------------------------------------------------------------- 1 | io.sentry.jdbc.SentryJdbcEventListener 2 | -------------------------------------------------------------------------------- /sentry-jul/src/test/resources/logging.properties: -------------------------------------------------------------------------------- 1 | io.sentry.jul.SentryHandler.level=ALL 2 | io.sentry.jul.SentryHandler.minimumEventLevel=WARNING 3 | io.sentry.jul.SentryHandler.minimumBreadcrumbLevel=CONFIG 4 | io.sentry.jul.SentryHandler.minimumLevel=CONFIG 5 | io.sentry.jul.SentryHandler.printfStyle=true 6 | 7 | jul.SentryHandlerTest.handlers=java.util.logging.ConsoleHandler, io.sentry.jul.SentryHandler 8 | -------------------------------------------------------------------------------- /sentry-jul/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-jul/src/test/resources/sentry.properties: -------------------------------------------------------------------------------- 1 | release=release from sentry.properties 2 | logs.enabled=true 3 | -------------------------------------------------------------------------------- /sentry-log4j2/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-log4j2/src/test/resources/sentry.properties: -------------------------------------------------------------------------------- 1 | release=release from sentry.properties 2 | logs.enabled=true 3 | -------------------------------------------------------------------------------- /sentry-logback/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-logback/src/test/resources/sentry.properties: -------------------------------------------------------------------------------- 1 | release=release from sentry.properties 2 | -------------------------------------------------------------------------------- /sentry-okhttp/src/test/resources/mockito-extensions/org.mockito.plugin.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-openfeign/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | mock-maker-inline 2 | -------------------------------------------------------------------------------- /sentry-opentelemetry/sentry-opentelemetry-agent/src/main/java/io/sentry/opentelemetry/agent/AgentMarker.java: -------------------------------------------------------------------------------- 1 | package io.sentry.opentelemetry.agent; 2 | 3 | /** 4 | * Marker class used to check if the Sentry Java Agent is active. If so, this class should be on the 5 | * classpath. 6 | */ 7 | public final class AgentMarker {} 8 | -------------------------------------------------------------------------------- /sentry-opentelemetry/sentry-opentelemetry-agentcustomization/src/main/java/io/sentry/opentelemetry/SentryPropagatorProvider.java: -------------------------------------------------------------------------------- 1 | package io.sentry.opentelemetry; 2 | 3 | import io.opentelemetry.context.propagation.TextMapPropagator; 4 | import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; 5 | import io.opentelemetry.sdk.autoconfigure.spi.ConfigurablePropagatorProvider; 6 | 7 | public final class SentryPropagatorProvider implements ConfigurablePropagatorProvider { 8 | @Override 9 | public TextMapPropagator getPropagator(ConfigProperties config) { 10 | return new OtelSentryPropagator(); 11 | } 12 | 13 | @Override 14 | public String getName() { 15 | return "sentry"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /sentry-opentelemetry/sentry-opentelemetry-agentcustomization/src/main/resources/META-INF/services/io.opentelemetry.javaagent.tooling.bootstrap.BootstrapPackagesConfigurer: -------------------------------------------------------------------------------- 1 | io.sentry.opentelemetry.SentryBootstrapPackagesProvider 2 | -------------------------------------------------------------------------------- /sentry-opentelemetry/sentry-opentelemetry-agentcustomization/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider: -------------------------------------------------------------------------------- 1 | io.sentry.opentelemetry.SentryAutoConfigurationCustomizerProvider 2 | -------------------------------------------------------------------------------- /sentry-opentelemetry/sentry-opentelemetry-agentcustomization/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ConfigurablePropagatorProvider: -------------------------------------------------------------------------------- 1 | io.sentry.opentelemetry.SentryPropagatorProvider 2 | -------------------------------------------------------------------------------- /sentry-opentelemetry/sentry-opentelemetry-agentless-spring/src/main/java/io/sentry/opentelemetry/agent/AgentlessSpringMarker.java: -------------------------------------------------------------------------------- 1 | package io.sentry.opentelemetry.agent; 2 | 3 | import io.sentry.SentryIntegrationPackageStorage; 4 | import io.sentry.opentelemetry.agentless.spring.BuildConfig; 5 | 6 | public final class AgentlessSpringMarker { 7 | static { 8 | SentryIntegrationPackageStorage.getInstance() 9 | .addPackage( 10 | "maven:io.sentry:sentry-opentelemetry-agentless-spring", BuildConfig.VERSION_NAME); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sentry-opentelemetry/sentry-opentelemetry-agentless/src/main/java/io/sentry/opentelemetry/agent/AgentlessMarker.java: -------------------------------------------------------------------------------- 1 | package io.sentry.opentelemetry.agent; 2 | 3 | import io.sentry.SentryIntegrationPackageStorage; 4 | import io.sentry.opentelemetry.agentless.BuildConfig; 5 | 6 | public final class AgentlessMarker { 7 | static { 8 | SentryIntegrationPackageStorage.getInstance() 9 | .addPackage("maven:io.sentry:sentry-opentelemetry-agentless", BuildConfig.VERSION_NAME); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/OtelStorageToken.java: -------------------------------------------------------------------------------- 1 | package io.sentry.opentelemetry; 2 | 3 | import io.opentelemetry.context.Scope; 4 | import io.sentry.ISentryLifecycleToken; 5 | import org.jetbrains.annotations.ApiStatus; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | @ApiStatus.Internal 9 | final class OtelStorageToken implements ISentryLifecycleToken { 10 | 11 | private final @NotNull Scope otelScope; 12 | 13 | OtelStorageToken(final @NotNull Scope otelScope) { 14 | this.otelScope = otelScope; 15 | } 16 | 17 | @Override 18 | public void close() { 19 | otelScope.close(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/resources/META-INF/services/io.opentelemetry.context.ContextStorageProvider: -------------------------------------------------------------------------------- 1 | io.sentry.opentelemetry.SentryContextStorageProvider 2 | -------------------------------------------------------------------------------- /sentry-reactor/src/main/resources/META-INF/services/io.micrometer.context.ThreadLocalAccessor: -------------------------------------------------------------------------------- 1 | io.sentry.reactor.SentryReactorThreadLocalAccessor 2 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.10) 2 | project(Sentry-Sample LANGUAGES C CXX) 3 | 4 | add_library(native-sample SHARED src/main/cpp/native-sample.cpp) 5 | 6 | find_package(sentry-native-ndk REQUIRED CONFIG) 7 | 8 | find_library(LOG_LIB log) 9 | 10 | target_link_libraries(native-sample PRIVATE 11 | ${LOG_LIB} 12 | sentry-native-ndk::sentry-android 13 | sentry-native-ndk::sentry 14 | ) 15 | 16 | # Android 15: Support 16KB page sizes 17 | # see https://developer.android.com/guide/practices/page-sizes 18 | target_link_options(native-sample PRIVATE "-Wl,-z,max-page-size=16384") 19 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/CoroutinesUtil.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.samples.android 2 | 3 | import io.sentry.kotlin.SentryContext 4 | import io.sentry.kotlin.SentryCoroutineExceptionHandler 5 | import java.lang.RuntimeException 6 | import kotlinx.coroutines.GlobalScope 7 | import kotlinx.coroutines.launch 8 | 9 | object CoroutinesUtil { 10 | fun throwInCoroutine() { 11 | GlobalScope.launch(SentryContext() + SentryCoroutineExceptionHandler()) { 12 | throw RuntimeException("Exception in coroutine") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/GitHubService.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.samples.android 2 | 3 | import retrofit2.Call 4 | import retrofit2.http.GET 5 | import retrofit2.http.Path 6 | import retrofit2.http.Query 7 | 8 | interface GitHubService { 9 | 10 | @GET("users/{user}/repos") fun listRepos(@Path("user") user: String): Call> 11 | 12 | @GET("users/{user}/repos") 13 | suspend fun listReposAsync( 14 | @Path("user") user: String, 15 | @Query("per_page") perPage: Int, 16 | ): List 17 | } 18 | 19 | class Repo { 20 | val full_name: String = "" 21 | } 22 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/NativeSample.java: -------------------------------------------------------------------------------- 1 | package io.sentry.samples.android; 2 | 3 | public class NativeSample { 4 | public static native void crash(); 5 | 6 | public static native void message(); 7 | 8 | // Named to demonstrate the value of native stack frames during ANR 9 | public static native void freezeMysteriously(Object obj); 10 | 11 | static { 12 | System.loadLibrary("native-sample"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/SharedState.kt: -------------------------------------------------------------------------------- 1 | package io.sentry.samples.android 2 | 3 | object SharedState { 4 | @Volatile var isOrientationChange: Boolean = false 5 | } 6 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/src/main/res/layout/activity_third_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/src/main/res/layout/fragment_recycler.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/src/main/res/layout/fragment_sample.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /sentry-samples/sentry-samples-android/src/main/res/layout/fragment_sample_inner.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 |