mirror of
https://github.com/bitwarden/android.git
synced 2026-03-21 22:00:42 -05:00
Improve the error messaging when an enum is not parsed correctly (#4730)
This commit is contained in:
@@ -21,5 +21,7 @@ enum class AuthRequestTypeJson {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class AuthRequestTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<AuthRequestTypeJson>(AuthRequestTypeJson.entries.toTypedArray())
|
||||
private class AuthRequestTypeSerializer : BaseEnumeratedIntSerializer<AuthRequestTypeJson>(
|
||||
className = "AuthRequestTypeJson",
|
||||
values = AuthRequestTypeJson.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -18,5 +18,7 @@ enum class KdfTypeJson {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class KdfTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<KdfTypeJson>(KdfTypeJson.entries.toTypedArray())
|
||||
private class KdfTypeSerializer : BaseEnumeratedIntSerializer<KdfTypeJson>(
|
||||
className = "KdfTypeJson",
|
||||
values = KdfTypeJson.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -39,5 +39,7 @@ enum class TwoFactorAuthMethod(val value: UInt) {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class TwoFactorAuthMethodSerializer :
|
||||
BaseEnumeratedIntSerializer<TwoFactorAuthMethod>(TwoFactorAuthMethod.entries.toTypedArray())
|
||||
private class TwoFactorAuthMethodSerializer : BaseEnumeratedIntSerializer<TwoFactorAuthMethod>(
|
||||
className = "TwoFactorAuthMethod",
|
||||
values = TwoFactorAuthMethod.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -15,6 +15,7 @@ import kotlinx.serialization.encoding.Encoder
|
||||
*/
|
||||
@Suppress("UnnecessaryAbstractClass")
|
||||
abstract class BaseEnumeratedIntSerializer<T : Enum<T>>(
|
||||
private val className: String,
|
||||
private val values: Array<T>,
|
||||
private val default: T? = null,
|
||||
) : KSerializer<T> {
|
||||
@@ -29,7 +30,7 @@ abstract class BaseEnumeratedIntSerializer<T : Enum<T>>(
|
||||
val decodedValue = decoder.decodeInt().toString()
|
||||
return values.firstOrNull { it.serialNameAnnotation?.value == decodedValue }
|
||||
?: default
|
||||
?: throw IllegalArgumentException("Unknown value $decodedValue")
|
||||
?: throw IllegalArgumentException("Unknown value $decodedValue for $className")
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: T) {
|
||||
|
||||
@@ -63,5 +63,7 @@ enum class NotificationType {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class NotificationTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<NotificationType>(NotificationType.entries.toTypedArray())
|
||||
private class NotificationTypeSerializer : BaseEnumeratedIntSerializer<NotificationType>(
|
||||
className = "NotificationType",
|
||||
values = NotificationType.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -130,5 +130,6 @@ enum class OrganizationEventType {
|
||||
|
||||
@Keep
|
||||
private class OrganizationEventTypeSerializer : BaseEnumeratedIntSerializer<OrganizationEventType>(
|
||||
className = "OrganizationEventType",
|
||||
values = OrganizationEventType.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -91,5 +91,6 @@ data class PasscodeGenerationOptions(
|
||||
@Keep
|
||||
private class PasscodeTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<PasscodeGenerationOptions.PasscodeType>(
|
||||
PasscodeGenerationOptions.PasscodeType.entries.toTypedArray(),
|
||||
className = "PasscodeGenerationOptions.PasscodeType",
|
||||
values = PasscodeGenerationOptions.PasscodeType.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -122,11 +122,13 @@ data class UsernameGenerationOptions(
|
||||
@Keep
|
||||
private class UsernameTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<UsernameGenerationOptions.UsernameType>(
|
||||
UsernameGenerationOptions.UsernameType.entries.toTypedArray(),
|
||||
className = "UsernameGenerationOptions.UsernameType",
|
||||
values = UsernameGenerationOptions.UsernameType.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@Keep
|
||||
private class ForwardedEmailServiceTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<UsernameGenerationOptions.ForwardedEmailServiceType>(
|
||||
UsernameGenerationOptions.ForwardedEmailServiceType.entries.toTypedArray(),
|
||||
className = "UsernameGenerationOptions.ForwardedEmailServiceType",
|
||||
values = UsernameGenerationOptions.ForwardedEmailServiceType.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -25,5 +25,6 @@ enum class CipherRepromptTypeJson {
|
||||
|
||||
@Keep
|
||||
private class CipherRepromptTypeSerializer : BaseEnumeratedIntSerializer<CipherRepromptTypeJson>(
|
||||
CipherRepromptTypeJson.entries.toTypedArray(),
|
||||
className = "CipherRepromptTypeJson",
|
||||
values = CipherRepromptTypeJson.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -42,5 +42,7 @@ enum class CipherTypeJson {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class CipherTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<CipherTypeJson>(CipherTypeJson.entries.toTypedArray())
|
||||
private class CipherTypeSerializer : BaseEnumeratedIntSerializer<CipherTypeJson>(
|
||||
className = "CipherTypeJson",
|
||||
values = CipherTypeJson.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -36,5 +36,7 @@ enum class FieldTypeJson {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class FieldTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<FieldTypeJson>(FieldTypeJson.entries.toTypedArray())
|
||||
private class FieldTypeSerializer : BaseEnumeratedIntSerializer<FieldTypeJson>(
|
||||
className = "FieldTypeJson",
|
||||
values = FieldTypeJson.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -19,5 +19,6 @@ enum class FileUploadType {
|
||||
|
||||
@Keep
|
||||
private class FileUploadTypeSerializer : BaseEnumeratedIntSerializer<FileUploadType>(
|
||||
FileUploadType.entries.toTypedArray(),
|
||||
className = "FileUploadType",
|
||||
values = FileUploadType.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -180,5 +180,7 @@ enum class LinkedIdTypeJson(val value: UInt) {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class LinkedIdTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<LinkedIdTypeJson>(LinkedIdTypeJson.entries.toTypedArray())
|
||||
private class LinkedIdTypeSerializer : BaseEnumeratedIntSerializer<LinkedIdTypeJson>(
|
||||
className = "LinkedIdTypeJson",
|
||||
values = LinkedIdTypeJson.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -32,5 +32,6 @@ enum class OrganizationStatusType {
|
||||
@Keep
|
||||
private class OrganizationStatusTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<OrganizationStatusType>(
|
||||
OrganizationStatusType.entries.toTypedArray(),
|
||||
className = "OrganizationStatusType",
|
||||
values = OrganizationStatusType.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -43,5 +43,6 @@ enum class OrganizationType {
|
||||
|
||||
@Keep
|
||||
private class OrganizationTypeSerializer : BaseEnumeratedIntSerializer<OrganizationType>(
|
||||
OrganizationType.entries.toTypedArray(),
|
||||
className = "OrganizationType",
|
||||
values = OrganizationType.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -100,6 +100,7 @@ enum class PolicyTypeJson {
|
||||
|
||||
@Keep
|
||||
private class PolicyTypeSerializer : BaseEnumeratedIntSerializer<PolicyTypeJson>(
|
||||
className = "PolicyTypeJson",
|
||||
values = PolicyTypeJson.entries.toTypedArray(),
|
||||
default = PolicyTypeJson.UNKNOWN,
|
||||
)
|
||||
|
||||
@@ -18,5 +18,7 @@ enum class SecureNoteTypeJson {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class SecureNoteTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<SecureNoteTypeJson>(SecureNoteTypeJson.entries.toTypedArray())
|
||||
private class SecureNoteTypeSerializer : BaseEnumeratedIntSerializer<SecureNoteTypeJson>(
|
||||
className = "SecureNoteTypeJson",
|
||||
values = SecureNoteTypeJson.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -24,5 +24,7 @@ enum class SendTypeJson {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class SendTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<SendTypeJson>(SendTypeJson.entries.toTypedArray())
|
||||
private class SendTypeSerializer : BaseEnumeratedIntSerializer<SendTypeJson>(
|
||||
className = "SendTypeJson",
|
||||
values = SendTypeJson.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -48,5 +48,7 @@ enum class UriMatchTypeJson {
|
||||
}
|
||||
|
||||
@Keep
|
||||
private class UriMatchTypeSerializer :
|
||||
BaseEnumeratedIntSerializer<UriMatchTypeJson>(UriMatchTypeJson.entries.toTypedArray())
|
||||
private class UriMatchTypeSerializer : BaseEnumeratedIntSerializer<UriMatchTypeJson>(
|
||||
className = "UriMatchTypeJson",
|
||||
values = UriMatchTypeJson.entries.toTypedArray(),
|
||||
)
|
||||
|
||||
@@ -62,6 +62,7 @@ private enum class TestEnum {
|
||||
}
|
||||
|
||||
private class TestEnumSerializer : BaseEnumeratedIntSerializer<TestEnum>(
|
||||
className = "TestEnum",
|
||||
values = TestEnum.entries.toTypedArray(),
|
||||
default = TestEnum.UNKNOWN,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user