
com.avsystem.commons.mongo.MongoCodec.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of commons-mongo_2.13 Show documentation
Show all versions of commons-mongo_2.13 Show documentation
AVSystem commons library for Scala
The newest version!
package com.avsystem.commons
package mongo
import org.bson.codecs.configuration.CodecRegistry
import org.bson.codecs.{Codec, DecoderContext, EncoderContext}
import org.bson.{BsonReader, BsonValue, BsonWriter}
/**
* @author MKej
*/
class MongoCodec[A, BSON <: BsonValue](bsonCodec: BsonCodec[A, BSON], registry: CodecRegistry)
(implicit cta: ClassTag[A], ctbson: ClassTag[BSON])
extends Codec[A] {
val aClass = cta.runtimeClass.asInstanceOf[Class[A]]
val bsonClass = ctbson.runtimeClass.asInstanceOf[Class[BSON]]
def decode(reader: BsonReader, decoderContext: DecoderContext) =
bsonCodec.fromBson(registry.get(bsonClass).decode(reader, decoderContext))
def encode(writer: BsonWriter, value: A, encoderContext: EncoderContext) =
registry.get(bsonClass).encode(writer, bsonCodec.toBson(value), encoderContext)
def getEncoderClass = aClass
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy