Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert Event to Kotlin and remove EventInternal #1951

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 41 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,10 @@ 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 <init> (Ljava/lang/Throwable;Lcom/bugsnag/android/internal/ImmutableConfig;Ljava/lang/String;Lcom/bugsnag/android/Logger;)V
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 +360,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