fun registerBsonModule(module: Module): Unit
(source)
Register a jackson Module for the two bson mappers, bsonMapper and bsonMapperCopy.
For example, if you need to manage DBRefs autoloading, you can write this kind of module:
class KMongoBeanDeserializer(deserializer:BeanDeserializer) : ThrowableDeserializer(deserializer) {
override fun deserializeFromObject(jp: JsonParser, ctxt: DeserializationContext): Any? {
if(jp.currentName == "\$ref") {
val ref = jp.nextTextValue()
jp.nextValue()
val id = jp.getValueAsString()
while(jp.currentToken != JsonToken.END_OBJECT) jp.nextToken()
return database.getCollection(ref).withDocumentClass(_beanType.rawClass).findOneById(id)
} else {
return super.deserializeFromObject(jp, ctxt)
}
}
}
class KMongoBeanDeserializerModifier : BeanDeserializerModifier() {
override fun modifyDeserializer(config: DeserializationConfig, beanDesc: BeanDescription, deserializer: JsonDeserializer<*>): JsonDeserializer<*> {
return if(deserializer is BeanDeserializer) {
KMongoBeanDeserializer( deserializer)
} else {
deserializer
}
}
}
KMongoConfiguration.registerBsonModule(SimpleModule().setDeserializerModifier(KMongoBeanDeserializerModifier()))