33
33
import io .sentry .SentryEvent ;
34
34
import io .sentry .SentryExceptionFactory ;
35
35
import io .sentry .SentryLevel ;
36
+ import io .sentry .SentryOptions ;
36
37
import io .sentry .SentryStackTraceFactory ;
37
38
import io .sentry .SpanContext ;
38
39
import io .sentry .android .core .internal .util .CpuInfoUtils ;
@@ -83,13 +84,16 @@ public final class AnrV2EventProcessor implements BackfillingEventProcessor {
83
84
84
85
private final @ NotNull SentryExceptionFactory sentryExceptionFactory ;
85
86
87
+ private final @ Nullable PersistingScopeObserver persistingScopeObserver ;
88
+
86
89
public AnrV2EventProcessor (
87
90
final @ NotNull Context context ,
88
91
final @ NotNull SentryAndroidOptions options ,
89
92
final @ NotNull BuildInfoProvider buildInfoProvider ) {
90
93
this .context = ContextUtils .getApplicationContext (context );
91
94
this .options = options ;
92
95
this .buildInfoProvider = buildInfoProvider ;
96
+ this .persistingScopeObserver = options .findPersistingScopeObserver ();
93
97
94
98
final SentryStackTraceFactory sentryStackTraceFactory =
95
99
new SentryStackTraceFactory (this .options );
@@ -188,8 +192,7 @@ private boolean sampleReplay(final @NotNull SentryEvent event) {
188
192
}
189
193
190
194
private void setReplayId (final @ NotNull SentryEvent event ) {
191
- @ Nullable
192
- String persistedReplayId = PersistingScopeObserver .read (options , REPLAY_FILENAME , String .class );
195
+ @ Nullable String persistedReplayId = readFromDisk (options , REPLAY_FILENAME , String .class );
193
196
final @ NotNull File replayFolder =
194
197
new File (options .getCacheDirPath (), "replay_" + persistedReplayId );
195
198
if (!replayFolder .exists ()) {
@@ -224,8 +227,7 @@ private void setReplayId(final @NotNull SentryEvent event) {
224
227
}
225
228
226
229
private void setTrace (final @ NotNull SentryEvent event ) {
227
- final SpanContext spanContext =
228
- PersistingScopeObserver .read (options , TRACE_FILENAME , SpanContext .class );
230
+ final SpanContext spanContext = readFromDisk (options , TRACE_FILENAME , SpanContext .class );
229
231
if (event .getContexts ().getTrace () == null ) {
230
232
if (spanContext != null
231
233
&& spanContext .getSpanId () != null
@@ -236,8 +238,7 @@ private void setTrace(final @NotNull SentryEvent event) {
236
238
}
237
239
238
240
private void setLevel (final @ NotNull SentryEvent event ) {
239
- final SentryLevel level =
240
- PersistingScopeObserver .read (options , LEVEL_FILENAME , SentryLevel .class );
241
+ final SentryLevel level = readFromDisk (options , LEVEL_FILENAME , SentryLevel .class );
241
242
if (event .getLevel () == null ) {
242
243
event .setLevel (level );
243
244
}
@@ -246,7 +247,7 @@ private void setLevel(final @NotNull SentryEvent event) {
246
247
@ SuppressWarnings ("unchecked" )
247
248
private void setFingerprints (final @ NotNull SentryEvent event , final @ NotNull Object hint ) {
248
249
final List <String > fingerprint =
249
- (List <String >) PersistingScopeObserver . read (options , FINGERPRINT_FILENAME , List .class );
250
+ (List <String >) readFromDisk (options , FINGERPRINT_FILENAME , List .class );
250
251
if (event .getFingerprints () == null ) {
251
252
event .setFingerprints (fingerprint );
252
253
}
@@ -262,16 +263,14 @@ private void setFingerprints(final @NotNull SentryEvent event, final @NotNull Ob
262
263
}
263
264
264
265
private void setTransaction (final @ NotNull SentryEvent event ) {
265
- final String transaction =
266
- PersistingScopeObserver .read (options , TRANSACTION_FILENAME , String .class );
266
+ final String transaction = readFromDisk (options , TRANSACTION_FILENAME , String .class );
267
267
if (event .getTransaction () == null ) {
268
268
event .setTransaction (transaction );
269
269
}
270
270
}
271
271
272
272
private void setContexts (final @ NotNull SentryBaseEvent event ) {
273
- final Contexts persistedContexts =
274
- PersistingScopeObserver .read (options , CONTEXTS_FILENAME , Contexts .class );
273
+ final Contexts persistedContexts = readFromDisk (options , CONTEXTS_FILENAME , Contexts .class );
275
274
if (persistedContexts == null ) {
276
275
return ;
277
276
}
@@ -291,7 +290,7 @@ private void setContexts(final @NotNull SentryBaseEvent event) {
291
290
@ SuppressWarnings ("unchecked" )
292
291
private void setExtras (final @ NotNull SentryBaseEvent event ) {
293
292
final Map <String , Object > extras =
294
- (Map <String , Object >) PersistingScopeObserver . read (options , EXTRAS_FILENAME , Map .class );
293
+ (Map <String , Object >) readFromDisk (options , EXTRAS_FILENAME , Map .class );
295
294
if (extras == null ) {
296
295
return ;
297
296
}
@@ -309,14 +308,12 @@ private void setExtras(final @NotNull SentryBaseEvent event) {
309
308
@ SuppressWarnings ("unchecked" )
310
309
private void setBreadcrumbs (final @ NotNull SentryBaseEvent event ) {
311
310
final List <Breadcrumb > breadcrumbs =
312
- (List <Breadcrumb >)
313
- PersistingScopeObserver .read (
314
- options , BREADCRUMBS_FILENAME , List .class , new Breadcrumb .Deserializer ());
311
+ (List <Breadcrumb >) readFromDisk (options , BREADCRUMBS_FILENAME , List .class );
315
312
if (breadcrumbs == null ) {
316
313
return ;
317
314
}
318
315
if (event .getBreadcrumbs () == null ) {
319
- event .setBreadcrumbs (new ArrayList <>( breadcrumbs ) );
316
+ event .setBreadcrumbs (breadcrumbs );
320
317
} else {
321
318
event .getBreadcrumbs ().addAll (breadcrumbs );
322
319
}
@@ -326,7 +323,7 @@ private void setBreadcrumbs(final @NotNull SentryBaseEvent event) {
326
323
private void setScopeTags (final @ NotNull SentryBaseEvent event ) {
327
324
final Map <String , String > tags =
328
325
(Map <String , String >)
329
- PersistingScopeObserver . read (options , PersistingScopeObserver .TAGS_FILENAME , Map .class );
326
+ readFromDisk (options , PersistingScopeObserver .TAGS_FILENAME , Map .class );
330
327
if (tags == null ) {
331
328
return ;
332
329
}
@@ -343,19 +340,29 @@ private void setScopeTags(final @NotNull SentryBaseEvent event) {
343
340
344
341
private void setUser (final @ NotNull SentryBaseEvent event ) {
345
342
if (event .getUser () == null ) {
346
- final User user = PersistingScopeObserver . read (options , USER_FILENAME , User .class );
343
+ final User user = readFromDisk (options , USER_FILENAME , User .class );
347
344
event .setUser (user );
348
345
}
349
346
}
350
347
351
348
private void setRequest (final @ NotNull SentryBaseEvent event ) {
352
349
if (event .getRequest () == null ) {
353
- final Request request =
354
- PersistingScopeObserver .read (options , REQUEST_FILENAME , Request .class );
350
+ final Request request = readFromDisk (options , REQUEST_FILENAME , Request .class );
355
351
event .setRequest (request );
356
352
}
357
353
}
358
354
355
+ private <T > @ Nullable T readFromDisk (
356
+ final @ NotNull SentryOptions options ,
357
+ final @ NotNull String fileName ,
358
+ final @ NotNull Class <T > clazz ) {
359
+ if (persistingScopeObserver == null ) {
360
+ return null ;
361
+ }
362
+
363
+ return persistingScopeObserver .read (options , fileName , clazz );
364
+ }
365
+
359
366
// endregion
360
367
361
368
// region options persisted values
0 commit comments