Skip to content

Commit

Permalink
fix(json): improve robustness of BugsnagEventMapper allowing `metaDat…
Browse files Browse the repository at this point in the history
…a`, `breadcrumbs`, and `featureFlags` to be missing from the marshalled JSON without causing a deserialization failure
  • Loading branch information
lemnik committed Dec 14, 2023
1 parent dbb037f commit 14a006d
Showing 1 changed file with 7 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,14 @@ internal class BugsnagEventMapper(
event.userImpl = convertUser(map.readEntry("user"))

// populate metadata
val metadataMap: Map<String, Map<String, Any?>> = map.readEntry("metaData")
val metadataMap: Map<String, Map<String, Any?>> =
(map["metaData"] as? Map<String, Map<String, Any?>>).orEmpty()
metadataMap.forEach { (key, value) ->
event.addMetadata(key, value)
}

val featureFlagsList: List<Map<String, Any?>> = map.readEntry("featureFlags")
val featureFlagsList: List<Map<String, Any?>> =
(map["featureFlags"] as? List<Map<String, Any?>>).orEmpty()
featureFlagsList.forEach { featureFlagMap ->
event.addFeatureFlag(
featureFlagMap.readEntry("featureFlag"),
Expand All @@ -43,7 +45,8 @@ internal class BugsnagEventMapper(
}

// populate breadcrumbs
val breadcrumbList: List<MutableMap<String, Any?>> = map.readEntry("breadcrumbs")
val breadcrumbList: List<MutableMap<String, Any?>> =
(map["breadcrumbs"] as? List<MutableMap<String, Any?>>).orEmpty()
breadcrumbList.mapTo(event.breadcrumbs) {
Breadcrumb(
convertBreadcrumbInternal(it),
Expand Down Expand Up @@ -226,8 +229,7 @@ internal class BugsnagEventMapper(
is T -> return value
null -> throw IllegalStateException("cannot find json property '$key'")
else -> throw IllegalArgumentException(
"json property '$key' not " +
"of expected type, found ${value.javaClass.name}"
"json property '$key' not of expected type, found ${value.javaClass.name}"
)
}
}
Expand Down

0 comments on commit 14a006d

Please sign in to comment.