Skip to content

Commit

Permalink
fix(Event) Event class converted to Kotlin
Browse files Browse the repository at this point in the history
  • Loading branch information
YYChen01988 committed Dec 4, 2023
1 parent ac426b0 commit b624222
Show file tree
Hide file tree
Showing 24 changed files with 992 additions and 832 deletions.
61 changes: 40 additions & 21 deletions bugsnag-android-core/api/bugsnag-android-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,9 @@ public final class com/bugsnag/android/ErrorTypes {
public final fun setUnhandledRejections (Z)V
}

public class com/bugsnag/android/Event : com/bugsnag/android/FeatureFlagAware, com/bugsnag/android/JsonStream$Streamable, com/bugsnag/android/MetadataAware, com/bugsnag/android/UserAware {
public final class com/bugsnag/android/Event : com/bugsnag/android/FeatureFlagAware, com/bugsnag/android/JsonStream$Streamable, com/bugsnag/android/MetadataAware, com/bugsnag/android/UserAware {
public field app Lcom/bugsnag/android/AppWithState;
public field device Lcom/bugsnag/android/DeviceWithState;
public fun addFeatureFlag (Ljava/lang/String;)V
public fun addFeatureFlag (Ljava/lang/String;Ljava/lang/String;)V
public fun addFeatureFlags (Ljava/lang/Iterable;)V
Expand All @@ -357,31 +359,48 @@ public class com/bugsnag/android/Event : com/bugsnag/android/FeatureFlagAware, c
public fun clearFeatureFlags ()V
public fun clearMetadata (Ljava/lang/String;)V
public fun clearMetadata (Ljava/lang/String;Ljava/lang/String;)V
public fun getApiKey ()Ljava/lang/String;
public fun getApp ()Lcom/bugsnag/android/AppWithState;
public fun getBreadcrumbs ()Ljava/util/List;
public fun getContext ()Ljava/lang/String;
public fun getDevice ()Lcom/bugsnag/android/DeviceWithState;
public fun getErrors ()Ljava/util/List;
public fun getFeatureFlags ()Ljava/util/List;
public fun getGroupingHash ()Ljava/lang/String;
public final fun getApiKey ()Ljava/lang/String;
public final fun getApp ()Lcom/bugsnag/android/AppWithState;
public final fun getBreadcrumbs ()Ljava/util/List;
public final fun getContext ()Ljava/lang/String;
public final fun getDevice ()Lcom/bugsnag/android/DeviceWithState;
public final fun getErrors ()Ljava/util/List;
public final fun getFeatureFlags ()Ljava/util/List;
public final fun getGroupingHash ()Ljava/lang/String;
public final fun getInternalMetrics ()Lcom/bugsnag/android/internal/InternalMetrics;
public final fun getLogger ()Lcom/bugsnag/android/Logger;
public fun getMetadata (Ljava/lang/String;)Ljava/util/Map;
public fun getMetadata (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
public fun getOriginalError ()Ljava/lang/Throwable;
public fun getSeverity ()Lcom/bugsnag/android/Severity;
public fun getThreads ()Ljava/util/List;
public final fun getOriginalError ()Ljava/lang/Throwable;
public final fun getOriginalUnhandled ()Z
public final fun getRedactedKeys ()Ljava/util/Collection;
public final fun getSession ()Lcom/bugsnag/android/Session;
public final fun getSeverity ()Lcom/bugsnag/android/Severity;
public final fun getSeverityReasonType ()Ljava/lang/String;
public final fun getThreads ()Ljava/util/List;
public final fun getUnhandledOverridden ()Z
public fun getUser ()Lcom/bugsnag/android/User;
public fun isUnhandled ()Z
public fun setApiKey (Ljava/lang/String;)V
public fun setContext (Ljava/lang/String;)V
public fun setGroupingHash (Ljava/lang/String;)V
public fun setSeverity (Lcom/bugsnag/android/Severity;)V
public fun setUnhandled (Z)V
public final fun getUserImpl ()Lcom/bugsnag/android/User;
public final fun isUnhandled ()Z
public final fun setApiKey (Ljava/lang/String;)V
public final fun setApp (Lcom/bugsnag/android/AppWithState;)V
public final fun setBreadcrumbs (Ljava/util/List;)V
public final fun setContext (Ljava/lang/String;)V
public final fun setDevice (Lcom/bugsnag/android/DeviceWithState;)V
public final fun setErrors (Ljava/util/List;)V
public final fun setGroupingHash (Ljava/lang/String;)V
public final fun setInternalMetrics (Lcom/bugsnag/android/internal/InternalMetrics;)V
public final fun setRedactedKeys (Ljava/util/Collection;)V
public final fun setSession (Lcom/bugsnag/android/Session;)V
public final fun setSeverity (Lcom/bugsnag/android/Severity;)V
public final fun setThreads (Ljava/util/List;)V
public final fun setUnhandled (Z)V
public fun setUser (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
protected fun shouldDiscardClass ()Z
public final fun setUserImpl (Lcom/bugsnag/android/User;)V
public final fun shouldDiscardClass ()Z
public fun toStream (Lcom/bugsnag/android/JsonStream;)V
protected fun updateSeverityInternal (Lcom/bugsnag/android/Severity;)V
protected fun updateSeverityReason (Ljava/lang/String;)V
public final fun updateSeverityInternal (Lcom/bugsnag/android/Severity;)V
public final fun updateSeverityReason (Ljava/lang/String;)V
}

public final class com/bugsnag/android/EventPayload : com/bugsnag/android/JsonStream$Streamable {
Expand Down
9 changes: 3 additions & 6 deletions bugsnag-android-core/detekt-baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
<ID>LongParameterList:DeviceDataCollector.kt$DeviceDataCollector$( private val connectivity: Connectivity, private val appContext: Context, resources: Resources, private val deviceId: String?, private val internalDeviceId: String?, private val buildInfo: DeviceBuildInfo, private val dataDirectory: File, rootDetector: RootDetector, private val bgTaskService: BackgroundTaskService, private val logger: Logger )</ID>
<ID>LongParameterList:DeviceIdStore.kt$DeviceIdStore$( context: Context, deviceIdfile: File = File(context.filesDir, "device-id"), deviceIdGenerator: () -> UUID = { UUID.randomUUID() }, internalDeviceIdfile: File = File(context.filesDir, "internal-device-id"), internalDeviceIdGenerator: () -> UUID = { UUID.randomUUID() }, private val sharedPrefMigrator: SharedPrefMigrator, logger: Logger )</ID>
<ID>LongParameterList:DeviceWithState.kt$DeviceWithState$( buildInfo: DeviceBuildInfo, jailbroken: Boolean?, id: String?, locale: String?, totalMemory: Long?, runtimeVersions: MutableMap&lt;String, Any>, /** * The number of free bytes of storage available on the device */ var freeDisk: Long?, /** * The number of free bytes of memory available on the device */ var freeMemory: Long?, /** * The orientation of the device when the event occurred: either portrait or landscape */ var orientation: String?, /** * The timestamp on the device when the event occurred */ var time: Date? )</ID>
<ID>LongParameterList:Event.kt$Event$( apiKey: String, logger: Logger, breadcrumbs: MutableList&lt;Breadcrumb> = mutableListOf(), discardClasses: Set&lt;Pattern> = setOf(), errors: MutableList&lt;Error> = mutableListOf(), metadata: Metadata = Metadata(), featureFlags: FeatureFlags = FeatureFlags(), originalError: Throwable? = null, projectPackages: Collection&lt;String> = setOf(), severityReason: SeverityReason = SeverityReason.newInstance(SeverityReason.REASON_HANDLED_EXCEPTION), threads: MutableList&lt;Thread> = mutableListOf(), user: User = User(), redactionKeys: Set&lt;Pattern>? = null )</ID>
<ID>LongParameterList:EventFilenameInfo.kt$EventFilenameInfo.Companion$( obj: Any, uuid: String = UUID.randomUUID().toString(), apiKey: String?, timestamp: Long = System.currentTimeMillis(), config: ImmutableConfig, isLaunching: Boolean? = null )</ID>
<ID>LongParameterList:EventInternal.kt$EventInternal$( apiKey: String, logger: Logger, breadcrumbs: MutableList&lt;Breadcrumb> = mutableListOf(), discardClasses: Set&lt;Pattern> = setOf(), errors: MutableList&lt;Error> = mutableListOf(), metadata: Metadata = Metadata(), featureFlags: FeatureFlags = FeatureFlags(), originalError: Throwable? = null, projectPackages: Collection&lt;String> = setOf(), severityReason: SeverityReason = SeverityReason.newInstance(SeverityReason.REASON_HANDLED_EXCEPTION), threads: MutableList&lt;Thread> = mutableListOf(), user: User = User(), redactionKeys: Set&lt;Pattern>? = null )</ID>
<ID>LongParameterList:EventStorageModule.kt$EventStorageModule$( contextModule: ContextModule, configModule: ConfigModule, dataCollectionModule: DataCollectionModule, bgTaskService: BackgroundTaskService, trackerModule: TrackerModule, systemServiceModule: SystemServiceModule, notifier: Notifier, callbackState: CallbackState )</ID>
<ID>LongParameterList:NativeStackframe.kt$NativeStackframe$( /** * The name of the method that was being executed */ var method: String?, /** * The location of the source file */ var file: String?, /** * The line number within the source file this stackframe refers to */ var lineNumber: Number?, /** * The address of the instruction where the event occurred. */ var frameAddress: Long?, /** * The address of the function where the event occurred. */ var symbolAddress: Long?, /** * The address of the library where the event occurred. */ var loadAddress: Long?, /** * Whether this frame identifies the program counter */ var isPC: Boolean?, /** * The type of the error */ var type: ErrorType? = null, /** * Identifies the exact build this frame originates from. */ var codeIdentifier: String? = null, )</ID>
<ID>LongParameterList:StateEvent.kt$StateEvent.Install$( @JvmField val apiKey: String, @JvmField val autoDetectNdkCrashes: Boolean, @JvmField val appVersion: String?, @JvmField val buildUuid: String?, @JvmField val releaseStage: String?, @JvmField val lastRunInfoPath: String, @JvmField val consecutiveLaunchCrashes: Int, @JvmField val sendThreads: ThreadSendPolicy )</ID>
Expand All @@ -40,10 +40,7 @@
<ID>NestedBlockDepth:FileStore.kt$FileStore$fun findStoredFiles(): MutableList&lt;File></ID>
<ID>NestedBlockDepth:JsonHelper.kt$JsonHelper$fun jsonToLong(value: Any?): Long?</ID>
<ID>ProtectedMemberInFinalClass:ConfigInternal.kt$ConfigInternal$protected val plugins = HashSet&lt;Plugin>()</ID>
<ID>ProtectedMemberInFinalClass:EventInternal.kt$EventInternal$protected fun isAnr(event: Event): Boolean</ID>
<ID>ProtectedMemberInFinalClass:EventInternal.kt$EventInternal$protected fun shouldDiscardClass(): Boolean</ID>
<ID>ProtectedMemberInFinalClass:EventInternal.kt$EventInternal$protected fun updateSeverityInternal(severity: Severity)</ID>
<ID>ProtectedMemberInFinalClass:EventInternal.kt$EventInternal$protected fun updateSeverityReason(@SeverityReason.SeverityReasonType reason: String)</ID>
<ID>ProtectedMemberInFinalClass:Event.kt$Event$protected fun isAnr(event: Event): Boolean</ID>
<ID>ReturnCount:DefaultDelivery.kt$DefaultDelivery$fun deliver( urlString: String, json: ByteArray, headers: Map&lt;String, String?> ): DeliveryStatus</ID>
<ID>SpreadOperator:FileStore.kt$FileStore$(*listFiles)</ID>
<ID>SwallowedException:AppDataCollector.kt$AppDataCollector$e: Exception</ID>
Expand All @@ -64,7 +61,7 @@
<ID>ThrowsCount:JsonHelper.kt$JsonHelper$fun jsonToLong(value: Any?): Long?</ID>
<ID>TooManyFunctions:ConfigInternal.kt$ConfigInternal : CallbackAwareMetadataAwareUserAwareFeatureFlagAware</ID>
<ID>TooManyFunctions:DeviceDataCollector.kt$DeviceDataCollector</ID>
<ID>TooManyFunctions:EventInternal.kt$EventInternal : FeatureFlagAwareStreamableMetadataAwareUserAware</ID>
<ID>TooManyFunctions:Event.kt$Event : StreamableMetadataAwareUserAwareFeatureFlagAware</ID>
<ID>UnusedPrivateProperty:ManifestConfigLoader.kt$ManifestConfigLoader.Companion$private const val LAUNCH_CRASH_THRESHOLD_MS = "$BUGSNAG_NS.LAUNCH_CRASH_THRESHOLD_MS"</ID>
<ID>UnusedPrivateProperty:ThreadStateTest.kt$ThreadStateTest$private val configuration = generateImmutableConfig()</ID>
<ID>UseCheckOrError:BackgroundTaskServiceTest.kt$BackgroundTaskServiceTest$throw IllegalStateException()</ID>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ internal class BugsnagEventMapper(
) {

internal fun convertToEvent(map: Map<in String, Any?>, apiKey: String): Event {
return Event(convertToEventImpl(map, apiKey), logger)
return convertToEventImpl(map, apiKey)
}

@Suppress("UNCHECKED_CAST")
internal fun convertToEventImpl(map: Map<in String, Any?>, apiKey: String): EventInternal {
val event = EventInternal(apiKey, logger)
internal fun convertToEventImpl(map: Map<in String, Any?>, apiKey: String): Event {
val event = Event(apiKey, logger)

// populate exceptions. check this early to avoid unnecessary serialization if
// no stacktrace was gathered.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ internal class DefaultDelivery(
payload.apiKey = apiKey
}

val (itemsTrimmed, dataTrimmed) = event.impl.trimMetadataStringsTo(maxStringValueLength)
event.impl.internalMetrics.setMetadataTrimMetrics(
val (itemsTrimmed, dataTrimmed) = event.trimMetadataStringsTo(maxStringValueLength)
event.internalMetrics.setMetadataTrimMetrics(
itemsTrimmed,
dataTrimmed
)
Expand All @@ -56,8 +56,8 @@ internal class DefaultDelivery(
}

val breadcrumbAndBytesRemovedCounts =
event.impl.trimBreadcrumbsBy(json.size - maxPayloadSize)
event.impl.internalMetrics.setBreadcrumbTrimMetrics(
event.trimBreadcrumbsBy(json.size - maxPayloadSize)
event.internalMetrics.setBreadcrumbTrimMetrics(
breadcrumbAndBytesRemovedCounts.itemsTrimmed,
breadcrumbAndBytesRemovedCounts.dataTrimmed
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@ void deliver(@NonNull Event event) {
}
}

if (event.getImpl().getOriginalUnhandled()) {
if (event.getOriginalUnhandled()) {
// should only send unhandled errors if they don't terminate the process (i.e. ANRs)
String severityReasonType = event.getImpl().getSeverityReasonType();
String severityReasonType = event.getSeverityReasonType();
boolean promiseRejection = REASON_PROMISE_REJECTION.equals(severityReasonType);
boolean anr = event.getImpl().isAnr(event);
boolean anr = event.isAnr(event);
if (anr || promiseRejection) {
cacheEvent(event, true);
} else if (immutableConfig.getAttemptDeliveryOnCrash()) {
Expand Down
Loading

0 comments on commit b624222

Please sign in to comment.