Skip to content

Register Moshi adapters for serialization and deserialization for KotlinModuleMetadata#1732

Closed
Goooler wants to merge 3 commits into
g/20250723/relocate-kotlin-metadatafrom
g/20250912/moshi-adapter
Closed

Register Moshi adapters for serialization and deserialization for KotlinModuleMetadata#1732
Goooler wants to merge 3 commits into
g/20250723/relocate-kotlin-metadatafrom
g/20250912/moshi-adapter

Conversation

@Goooler

@Goooler Goooler commented Sep 12, 2025

Copy link
Copy Markdown
Member

Refs #1539.

@Goooler Goooler force-pushed the g/20250912/moshi-adapter branch from 0849ee9 to 3689de4 Compare September 12, 2025 12:16
Comment on lines +17 to +18
val json = adapter.toJson(KotlinModuleMetadata.read(expected))
val actual = requireNotNull(adapter.fromJson(json)).write()

@Goooler Goooler Sep 12, 2025

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't and shouldn't use Gson instead; it works for toJson but using fromJson with errors like:

Abstract classes can't be instantiated! Adjust the R8 configuration or register an InstanceCreator or a TypeAdapter for this type. Class name: kotlin.metadata.KmClassifier
See https://github.com/google/gson/blob/main/Troubleshooting.md#r8-abstract-class
com.google.gson.JsonIOException: Abstract classes can't be instantiated! Adjust the R8 configuration or register an InstanceCreator or a TypeAdapter for this type. Class name: kotlin.metadata.KmClassifier
See https://github.com/google/gson/blob/main/Troubleshooting.md#r8-abstract-class
	at com.google.gson.internal.ConstructorConstructor.lambda$get$2(ConstructorConstructor.java:147)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.createAccumulator(ReflectiveTypeAdapterFactory.java:555)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:508)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(ReflectiveTypeAdapterFactory.java:271)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:561)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:519)
	at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:84)
	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:64)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(ReflectiveTypeAdapterFactory.java:271)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:561)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:519)
	at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:84)
	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:64)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(ReflectiveTypeAdapterFactory.java:271)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:561)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:519)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(ReflectiveTypeAdapterFactory.java:271)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:561)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:519)
	at com.google.gson.Gson.fromJson(Gson.java:1359)

@Goooler

Goooler commented Sep 12, 2025

Copy link
Copy Markdown
Member Author

Closed due to #1539 (comment).

@Goooler Goooler closed this Sep 12, 2025
@Goooler Goooler deleted the g/20250912/moshi-adapter branch September 12, 2025 13:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant