Handler factory.
Handler factory.
import reactivemongo.api.bson.{ BSONHandler, BSONString } case class Foo(value: String) val foo: BSONHandler[Foo] = BSONHandler( { _ => Foo("value") }, { f: Foo => BSONString(f.value) } )
Creates a BSONHandler based on the given read
and write
functions.
Creates a BSONHandler based on the given read
and write
functions.
import reactivemongo.api.bson.{ BSONHandler, BSONInteger } val intToStrCodeHandler = BSONHandler.collect[String]( read = { case BSONInteger(0) => "zero" case BSONInteger(1) => "one" }, write = { case "zero" => BSONInteger(0) case "one" => BSONInteger(1) }) intToStrCodeHandler.readTry(BSONInteger(0)) // Success("zero") intToStrCodeHandler.readOpt(BSONInteger(3)) // None (as failed) intToStrCodeHandler.writeTry("one") // Success(BSONInteger(1)) intToStrCodeHandler.writeOpt("3") // None (as failed)
Returns a BSON handler for a type T
,
from the given safe read
and write
functions.
Returns a BSON handler for a type T
,
from the given safe read
and write
functions.
import scala.util.{ Failure, Success } import reactivemongo.api.bson.{ BSONHandler, BSONInteger } case class Foo(age: Int) val handler: BSONHandler[Foo] = BSONHandler.from[Foo]( read = { case BSONInteger(age) => Success(Foo(age)) case _ => Failure(new IllegalArgumentException()) }, write = { foo => Success(BSONInteger(foo.age)) })
Creates a BSONHandler based on the given read
and write
functions.
Creates a BSONHandler based on the given read
and write
functions.
import reactivemongo.api.bson.{ BSONHandler, BSONInteger } val intToStrCodeHandler = BSONHandler.option[String]( read = { case BSONInteger(0) => Some("zero") case BSONInteger(1) => Some("one") case _ => None }, write = { case "zero" => Some(BSONInteger(0)) case "one" => Some(BSONInteger(1)) case _ => None }) intToStrCodeHandler.readTry(BSONInteger(0)) // Success("zero") intToStrCodeHandler.readOpt(BSONInteger(3)) // None (as failed) intToStrCodeHandler.writeTry("one") // Success(BSONInteger(1)) intToStrCodeHandler.writeOpt("3") // None (as failed)
Returns a BSON handler for a type T
,
provided there are a writer and a reader for it.
Returns a BSON handler for a type T
,
provided there are a writer and a reader for it.
import reactivemongo.api.bson.{ BSONHandler, BSONReader, BSONWriter } def foo[T]( implicit r: BSONReader[T], w: BSONWriter[T]): BSONHandler[T] = BSONHandler.provided[T]
BSONHandler factories