Skip to content

Commit 22931bb

Browse files
Improve the error messaging when an enum is not parsed correctly (#4730)
1 parent 359dedc commit 22931bb

File tree

20 files changed

+59
-28
lines changed

20 files changed

+59
-28
lines changed

app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/AuthRequestTypeJson.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,7 @@ enum class AuthRequestTypeJson {
2121
}
2222

2323
@Keep
24-
private class AuthRequestTypeSerializer :
25-
BaseEnumeratedIntSerializer<AuthRequestTypeJson>(AuthRequestTypeJson.entries.toTypedArray())
24+
private class AuthRequestTypeSerializer : BaseEnumeratedIntSerializer<AuthRequestTypeJson>(
25+
className = "AuthRequestTypeJson",
26+
values = AuthRequestTypeJson.entries.toTypedArray(),
27+
)

app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/KdfTypeJson.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@ enum class KdfTypeJson {
1818
}
1919

2020
@Keep
21-
private class KdfTypeSerializer :
22-
BaseEnumeratedIntSerializer<KdfTypeJson>(KdfTypeJson.entries.toTypedArray())
21+
private class KdfTypeSerializer : BaseEnumeratedIntSerializer<KdfTypeJson>(
22+
className = "KdfTypeJson",
23+
values = KdfTypeJson.entries.toTypedArray(),
24+
)

app/src/main/java/com/x8bit/bitwarden/data/auth/datasource/network/model/TwoFactorAuthMethod.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,7 @@ enum class TwoFactorAuthMethod(val value: UInt) {
3939
}
4040

4141
@Keep
42-
private class TwoFactorAuthMethodSerializer :
43-
BaseEnumeratedIntSerializer<TwoFactorAuthMethod>(TwoFactorAuthMethod.entries.toTypedArray())
42+
private class TwoFactorAuthMethodSerializer : BaseEnumeratedIntSerializer<TwoFactorAuthMethod>(
43+
className = "TwoFactorAuthMethod",
44+
values = TwoFactorAuthMethod.entries.toTypedArray(),
45+
)

app/src/main/java/com/x8bit/bitwarden/data/platform/datasource/network/serializer/BaseEnumeratedIntSerializer.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import kotlinx.serialization.encoding.Encoder
1515
*/
1616
@Suppress("UnnecessaryAbstractClass")
1717
abstract class BaseEnumeratedIntSerializer<T : Enum<T>>(
18+
private val className: String,
1819
private val values: Array<T>,
1920
private val default: T? = null,
2021
) : KSerializer<T> {
@@ -29,7 +30,7 @@ abstract class BaseEnumeratedIntSerializer<T : Enum<T>>(
2930
val decodedValue = decoder.decodeInt().toString()
3031
return values.firstOrNull { it.serialNameAnnotation?.value == decodedValue }
3132
?: default
32-
?: throw IllegalArgumentException("Unknown value $decodedValue")
33+
?: throw IllegalArgumentException("Unknown value $decodedValue for $className")
3334
}
3435

3536
override fun serialize(encoder: Encoder, value: T) {

app/src/main/java/com/x8bit/bitwarden/data/platform/manager/model/NotificationType.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,7 @@ enum class NotificationType {
6363
}
6464

6565
@Keep
66-
private class NotificationTypeSerializer :
67-
BaseEnumeratedIntSerializer<NotificationType>(NotificationType.entries.toTypedArray())
66+
private class NotificationTypeSerializer : BaseEnumeratedIntSerializer<NotificationType>(
67+
className = "NotificationType",
68+
values = NotificationType.entries.toTypedArray(),
69+
)

app/src/main/java/com/x8bit/bitwarden/data/platform/manager/model/OrganizationEventType.kt

+1
Original file line numberDiff line numberDiff line change
@@ -130,5 +130,6 @@ enum class OrganizationEventType {
130130

131131
@Keep
132132
private class OrganizationEventTypeSerializer : BaseEnumeratedIntSerializer<OrganizationEventType>(
133+
className = "OrganizationEventType",
133134
values = OrganizationEventType.entries.toTypedArray(),
134135
)

app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/PasscodeGenerationOptions.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -91,5 +91,6 @@ data class PasscodeGenerationOptions(
9191
@Keep
9292
private class PasscodeTypeSerializer :
9393
BaseEnumeratedIntSerializer<PasscodeGenerationOptions.PasscodeType>(
94-
PasscodeGenerationOptions.PasscodeType.entries.toTypedArray(),
94+
className = "PasscodeGenerationOptions.PasscodeType",
95+
values = PasscodeGenerationOptions.PasscodeType.entries.toTypedArray(),
9596
)

app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/UsernameGenerationOptions.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,13 @@ data class UsernameGenerationOptions(
122122
@Keep
123123
private class UsernameTypeSerializer :
124124
BaseEnumeratedIntSerializer<UsernameGenerationOptions.UsernameType>(
125-
UsernameGenerationOptions.UsernameType.entries.toTypedArray(),
125+
className = "UsernameGenerationOptions.UsernameType",
126+
values = UsernameGenerationOptions.UsernameType.entries.toTypedArray(),
126127
)
127128

128129
@Keep
129130
private class ForwardedEmailServiceTypeSerializer :
130131
BaseEnumeratedIntSerializer<UsernameGenerationOptions.ForwardedEmailServiceType>(
131-
UsernameGenerationOptions.ForwardedEmailServiceType.entries.toTypedArray(),
132+
className = "UsernameGenerationOptions.ForwardedEmailServiceType",
133+
values = UsernameGenerationOptions.ForwardedEmailServiceType.entries.toTypedArray(),
132134
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/CipherRepromptTypeJson.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ enum class CipherRepromptTypeJson {
2525

2626
@Keep
2727
private class CipherRepromptTypeSerializer : BaseEnumeratedIntSerializer<CipherRepromptTypeJson>(
28-
CipherRepromptTypeJson.entries.toTypedArray(),
28+
className = "CipherRepromptTypeJson",
29+
values = CipherRepromptTypeJson.entries.toTypedArray(),
2930
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/CipherTypeJson.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,7 @@ enum class CipherTypeJson {
4242
}
4343

4444
@Keep
45-
private class CipherTypeSerializer :
46-
BaseEnumeratedIntSerializer<CipherTypeJson>(CipherTypeJson.entries.toTypedArray())
45+
private class CipherTypeSerializer : BaseEnumeratedIntSerializer<CipherTypeJson>(
46+
className = "CipherTypeJson",
47+
values = CipherTypeJson.entries.toTypedArray(),
48+
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/FieldTypeJson.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,7 @@ enum class FieldTypeJson {
3636
}
3737

3838
@Keep
39-
private class FieldTypeSerializer :
40-
BaseEnumeratedIntSerializer<FieldTypeJson>(FieldTypeJson.entries.toTypedArray())
39+
private class FieldTypeSerializer : BaseEnumeratedIntSerializer<FieldTypeJson>(
40+
className = "FieldTypeJson",
41+
values = FieldTypeJson.entries.toTypedArray(),
42+
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/FileUploadType.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@ enum class FileUploadType {
1919

2020
@Keep
2121
private class FileUploadTypeSerializer : BaseEnumeratedIntSerializer<FileUploadType>(
22-
FileUploadType.entries.toTypedArray(),
22+
className = "FileUploadType",
23+
values = FileUploadType.entries.toTypedArray(),
2324
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/LinkedIdTypeJson.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -180,5 +180,7 @@ enum class LinkedIdTypeJson(val value: UInt) {
180180
}
181181

182182
@Keep
183-
private class LinkedIdTypeSerializer :
184-
BaseEnumeratedIntSerializer<LinkedIdTypeJson>(LinkedIdTypeJson.entries.toTypedArray())
183+
private class LinkedIdTypeSerializer : BaseEnumeratedIntSerializer<LinkedIdTypeJson>(
184+
className = "LinkedIdTypeJson",
185+
values = LinkedIdTypeJson.entries.toTypedArray(),
186+
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/OrganizationStatusType.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,6 @@ enum class OrganizationStatusType {
3232
@Keep
3333
private class OrganizationStatusTypeSerializer :
3434
BaseEnumeratedIntSerializer<OrganizationStatusType>(
35-
OrganizationStatusType.entries.toTypedArray(),
35+
className = "OrganizationStatusType",
36+
values = OrganizationStatusType.entries.toTypedArray(),
3637
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/OrganizationType.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,6 @@ enum class OrganizationType {
4343

4444
@Keep
4545
private class OrganizationTypeSerializer : BaseEnumeratedIntSerializer<OrganizationType>(
46-
OrganizationType.entries.toTypedArray(),
46+
className = "OrganizationType",
47+
values = OrganizationType.entries.toTypedArray(),
4748
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/PolicyTypeJson.kt

+1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ enum class PolicyTypeJson {
100100

101101
@Keep
102102
private class PolicyTypeSerializer : BaseEnumeratedIntSerializer<PolicyTypeJson>(
103+
className = "PolicyTypeJson",
103104
values = PolicyTypeJson.entries.toTypedArray(),
104105
default = PolicyTypeJson.UNKNOWN,
105106
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/SecureNoteTypeJson.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@ enum class SecureNoteTypeJson {
1818
}
1919

2020
@Keep
21-
private class SecureNoteTypeSerializer :
22-
BaseEnumeratedIntSerializer<SecureNoteTypeJson>(SecureNoteTypeJson.entries.toTypedArray())
21+
private class SecureNoteTypeSerializer : BaseEnumeratedIntSerializer<SecureNoteTypeJson>(
22+
className = "SecureNoteTypeJson",
23+
values = SecureNoteTypeJson.entries.toTypedArray(),
24+
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/SendTypeJson.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,7 @@ enum class SendTypeJson {
2424
}
2525

2626
@Keep
27-
private class SendTypeSerializer :
28-
BaseEnumeratedIntSerializer<SendTypeJson>(SendTypeJson.entries.toTypedArray())
27+
private class SendTypeSerializer : BaseEnumeratedIntSerializer<SendTypeJson>(
28+
className = "SendTypeJson",
29+
values = SendTypeJson.entries.toTypedArray(),
30+
)

app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/model/UriMatchTypeJson.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,7 @@ enum class UriMatchTypeJson {
4848
}
4949

5050
@Keep
51-
private class UriMatchTypeSerializer :
52-
BaseEnumeratedIntSerializer<UriMatchTypeJson>(UriMatchTypeJson.entries.toTypedArray())
51+
private class UriMatchTypeSerializer : BaseEnumeratedIntSerializer<UriMatchTypeJson>(
52+
className = "UriMatchTypeJson",
53+
values = UriMatchTypeJson.entries.toTypedArray(),
54+
)

app/src/test/java/com/x8bit/bitwarden/data/platform/datasource/network/serializer/BaseEnumeratedIntSerializerTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ private enum class TestEnum {
6262
}
6363

6464
private class TestEnumSerializer : BaseEnumeratedIntSerializer<TestEnum>(
65+
className = "TestEnum",
6566
values = TestEnum.entries.toTypedArray(),
6667
default = TestEnum.UNKNOWN,
6768
)

0 commit comments

Comments
 (0)