-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Unknown
-
None
-
Affects Version/s: None
-
Component/s: Kotlin
-
None
-
None
-
Java Drivers
-
None
-
None
-
None
-
None
-
None
-
None
Consider the following MongoDb document represented with a Kotlin data class (DataDocument) with a field using generic (ResourceLink<String>):
@Serializable data class DataDocument( val parent: ResourceLink<String>, ) @Serializable data class ResourceLink<ID_TYPE>( val id: ID_TYPE, )
With kotlin-reflect v2.3.0 the following code:
val collection = db.getCollection<DataDocument>(collectionName)
collection.find().forEach { println(it) }
... will fail with the following exception:
Could not find codec for id with type ID_TYPE org.bson.codecs.configuration.CodecConfigurationException: Could not find codec for id with type ID_TYPE at org.bson.codecs.kotlin.DataClassCodec$Companion.getCodec(DataClassCodec.kt:224) at org.bson.codecs.kotlin.DataClassCodec$Companion.create$bson_kotlin(DataClassCodec.kt:152) at org.bson.codecs.kotlin.DataClassCodecProvider.get(DataClassCodecProvider.kt:28) at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:69) at com.mongodb.KotlinCodecProvider.get(KotlinCodecProvider.java:85) at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:69) at org.bson.codecs.configuration.OverridableUuidRepresentationCodecProvider.get(OverridableUuidRepresentationCodecProvider.java:46) at org.bson.internal.ProvidersCodecRegistry.lambda$get$0(ProvidersCodecRegistry.java:81) at java.base/java.util.Optional.orElseGet(Optional.java:364) at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:79) at org.bson.internal.ChildCodecRegistry.get(ChildCodecRegistry.java:81) at org.bson.codecs.kotlin.DataClassCodec$Companion.getCodec(DataClassCodec.kt:243) at org.bson.codecs.kotlin.DataClassCodec$Companion.getCodec(DataClassCodec.kt:203) at org.bson.codecs.kotlin.DataClassCodec$Companion.create$bson_kotlin(DataClassCodec.kt:152) at org.bson.codecs.kotlin.DataClassCodecProvider.get(DataClassCodecProvider.kt:28) at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:69) at com.mongodb.KotlinCodecProvider.get(KotlinCodecProvider.java:85) at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:69) at org.bson.codecs.configuration.OverridableUuidRepresentationCodecProvider.get(OverridableUuidRepresentationCodecProvider.java:46) at org.bson.internal.ProvidersCodecRegistry.lambda$get$0(ProvidersCodecRegistry.java:81) at java.base/java.util.Optional.orElseGet(Optional.java:364) at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:79) at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:49) at com.mongodb.internal.operation.Operations.createFindOperation(Operations.java:268) at com.mongodb.internal.operation.Operations.find(Operations.java:257) at com.mongodb.client.internal.FindIterableImpl.asReadOperation(FindIterableImpl.java:248) at com.mongodb.client.internal.FindIterableImpl.asReadOperation(FindIterableImpl.java:43) at com.mongodb.client.internal.MongoIterableImpl.execute(MongoIterableImpl.java:156) at com.mongodb.client.internal.MongoIterableImpl.iterator(MongoIterableImpl.java:116) at com.mongodb.client.internal.MongoIterableImpl.cursor(MongoIterableImpl.java:121) at com.mongodb.kotlin.client.MongoIterable.cursor(MongoIterable.kt:35) at com.mongodb.kotlin.client.MongoIterable.use(MongoIterable.kt:65) at com.mongodb.kotlin.client.MongoIterable.forEach(MongoIterable.kt:77) at MongoSerializationTest.throws CodecConfigurationExceptionWithKotlin v2-3-0(MongoSerializationTest.kt:20)
The previous version of Kotlin v2.2.21 works just fine