diff --git a/app-common-io/src/main/java/eu/darken/sdmse/common/files/local/LocalPath.kt b/app-common-io/src/main/java/eu/darken/sdmse/common/files/local/LocalPath.kt index 0eacb2f3f..f1a4bc7fe 100644 --- a/app-common-io/src/main/java/eu/darken/sdmse/common/files/local/LocalPath.kt +++ b/app-common-io/src/main/java/eu/darken/sdmse/common/files/local/LocalPath.kt @@ -32,7 +32,7 @@ data class LocalPath( @IgnoredOnParcel override val name: String get() = file.name - @IgnoredOnParcel internal var segmentsCache: Segments? = null + @IgnoredOnParcel @Transient internal var segmentsCache: Segments? = null @IgnoredOnParcel override val segments: Segments diff --git a/app-common-io/src/test/java/eu/darken/sdmse/common/files/local/LocalPathTest.kt b/app-common-io/src/test/java/eu/darken/sdmse/common/files/local/LocalPathTest.kt index d163fca18..c984a041f 100644 --- a/app-common-io/src/test/java/eu/darken/sdmse/common/files/local/LocalPathTest.kt +++ b/app-common-io/src/test/java/eu/darken/sdmse/common/files/local/LocalPathTest.kt @@ -27,12 +27,15 @@ class LocalPathTest : BaseTest() { } @Test - fun `test direct serialization`() { + fun `direct serialization with transient fields`() { testFile.tryMkFile() val original = LocalPath.build(file = testFile) val adapter = moshi.adapter(LocalPath::class.java) + // segmentsCache needs to be ignored during serialization + println(original.segments.toString()) + val json = adapter.toJson(original) json.toComparableJson() shouldBe """ { @@ -44,6 +47,27 @@ class LocalPathTest : BaseTest() { adapter.fromJson(json) shouldBe original } + @Test + fun `deserialization needs to respect transient fields`() { + testFile.tryMkFile() + val original = LocalPath.build(file = testFile) + + val adapter = moshi.adapter(LocalPath::class.java) + + val json = """ + { + "file": "${testFile.path}", + "pathType":"LOCAL", + "segmentsCache": [ + ".", + "testfile" + ] + } + """.toComparableJson() + + adapter.fromJson(json) shouldBe original + } + @Test fun `test polymorph serialization`() { testFile.tryMkFile()