Status Update
Comments
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
Author: Marcello Galhardo <
Link:
Add ClassDiscriminator support for SavedState Serialization
Expand for full commit details
Add ClassDiscriminator support for SavedState Serialization
- Introduces `ClassDiscriminatorMode`, allowing the `Encoder` to add a `type` class discriminator entry during serialization.
- The `ClassDiscriminatorMode` does not affect `Polymorphic` serialization; that is handled by `kotlinx.serialization.PolymorphicSerializer`.
- The serialized structure includes:
1. A class discriminator string (`[type=serialName]`).
2. The serialized value of type `[T]`.
RelNote: "Include support for `classDiscriminator` and `classDiscriminatorMode` on `SavedStateConfig`."
Bug: 395104517
Test: N/A
Change-Id: I69b66678ccae14507e0a6d1b8d7d11c5b564ba9f
Files:
- M
savedstate/savedstate/api/current.txt
- M
savedstate/savedstate/api/restricted_current.txt
- M
savedstate/savedstate/bcv/native/current.txt
- A
savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/ClassDiscriminatorMode.kt
- M
savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateCodecUtils.kt
- M
savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateConfig.kt
- M
savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateEncoder.kt
Hash: f37eca7880a2b1732842bbe2e02d3e8fdeda34e4
Date: Fri Feb 07 16:56:00 2025
ap...@google.com <ap...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
Author: Marcello Galhardo <
Link:
Add tests for ClassDiscriminatorMode
Expand for full commit details
Add tests for `ClassDiscriminatorMode`
- Added a base testing class for easier serialization testing across scenarios.
- Included tests for all `ClassDiscriminatorMode`: `ALL_OBJECTS` and `POLYMORPHIC`.
Bug: 395104517
Test: SavedStateCodecClassDiscriminatorAllObjectsTest
Test: SavedStateCodecClassDiscriminatorPolymorphicTest
Change-Id: I431760be230f93f6f95a26c943f077ac54bd851e
Files:
- M
savedstate/savedstate/src/commonTest/kotlin/androidx/savedstate/SavedStateCodecTestUtils.kt
- A
savedstate/savedstate/src/commonTest/kotlin/androidx/savedstate/serialization/SavedStateCodecClassDiscriminatorAllObjectsTest.kt
- A
savedstate/savedstate/src/commonTest/kotlin/androidx/savedstate/serialization/SavedStateCodecClassDiscriminatorPolymorphicTest.kt
- A
savedstate/savedstate/src/commonTest/kotlin/androidx/savedstate/serialization/utils/SavedStateContextualClasses.kt
- A
savedstate/savedstate/src/commonTest/kotlin/androidx/savedstate/serialization/utils/SavedStatePolymorphicClasses.kt
- A
savedstate/savedstate/src/commonTest/kotlin/androidx/savedstate/serialization/utils/SavedStateSerializableClasses.kt
- A
savedstate/savedstate/src/commonTest/kotlin/androidx/savedstate/serialization/utils/SavedStateSerializableCollections.kt
- A
savedstate/savedstate/src/commonTest/kotlin/androidx/savedstate/serialization/utils/SavedStateSerializationBaseTest.kt
Hash: 4e000288e65fe7713c755432551eb8a77b4bb569
Date: Fri Feb 14 14:44:08 2025
mg...@google.com <mg...@google.com>
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
Author: Marcello Galhardo <
Link:
Add encodeDefaults
to SavedStateConfig
Expand for full commit details
Add `encodeDefaults` to `SavedStateConfig`
- Allows customization of whether properties with default values should be encoded, defaulting to false.
- `encodeDefaults = true` ensures all default properties are encoded. It’s useful in specific environments, like debug builds for easier debugging of SavedState or during testing for simpler verification — while skipping encoding in production (`encodeDefaults = false`).
RelNote: "Add `encodeDefaults` to `SavedStateConfig`, allowing customizing whether properties with default values should be encoded."
Bug: 395104517
Test: SavedStateCodecTest
Change-Id: I893cc44c323c972d388476bb7593259d595517af
Files:
- M
savedstate/savedstate/api/current.txt
- M
savedstate/savedstate/api/restricted_current.txt
- M
savedstate/savedstate/bcv/native/current.txt
- M
savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateConfig.kt
- M
savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateEncoder.kt
- A
savedstate/savedstate/src/commonTest/kotlin/androidx/savedstate/serialization/SavedStateCodecEncodeDefaultsTest.kt
Hash: 86936cf1545742a5cd3d90d721b2cd29751770d3
Date: Fri Feb 14 23:42:05 2025
na...@google.com <na...@google.com> #5
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.savedstate:savedstate:1.3.0-alpha10
androidx.savedstate:savedstate-android:1.3.0-alpha10
androidx.savedstate:savedstate-desktop:1.3.0-alpha10
androidx.savedstate:savedstate-iosx64:1.3.0-alpha10
androidx.savedstate:savedstate-linuxarm64:1.3.0-alpha10
androidx.savedstate:savedstate-linuxx64:1.3.0-alpha10
androidx.savedstate:savedstate-macosarm64:1.3.0-alpha10
androidx.savedstate:savedstate-macosx64:1.3.0-alpha10
Description
We will introduce class discriminator, useful when writing your own custom polymorphic serialization logic. We will follow the convention stablished by KTX Serialization JSON.
go/savedstate-class-discriminator