CodecConfigurationException for data class's type parameter since Kotlin v2.3.0

    • 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

            Assignee:
            Ross Lawley
            Reporter:
            Kirill Gavrilov
            None
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: