BSONHandler

BSONHandler factories

Companion:
class
class Object
trait Matchable
class Any

Value members

Concrete methods

def apply[T](read: BSONValue => T, write: T => BSONValue): BSONHandler[T]

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)
def from[T](read: BSONValue => Try[T], write: T => Try[BSONValue]): BSONHandler[T]

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)) })
def option[T](read: BSONValue => Option[T], write: T => Option[BSONValue]): BSONHandler[T]

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)

Givens

Inherited givens

Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
given localDateHandler: BSONHandler[LocalDate]
Inherited from:
BSONHandlerInstances
given localDateTimeHandler: BSONHandler[LocalDateTime]
Inherited from:
BSONHandlerInstances
given localTimeHandler: BSONHandler[LocalTime]
Inherited from:
BSONHandlerInstances
given localeHandler: BSONHandler[Locale]
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
given offsetDateTimeHandler: BSONHandler[OffsetDateTime]
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
Inherited from:
BSONHandlerInstances
given zonedDateTimeHandler: BSONHandler[ZonedDateTime]
Inherited from:
BSONHandlerInstances

Implicits

Implicits

implicit def provided[T](implicit reader: BSONReader[T], writer: BSONWriter[T]): BSONHandler[T]

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]

Inherited implicits

final implicit def BSONValueIdentity: BSONValueIdentity.type
Exported from package.BSONValueIdentity
Inherited from:
BSONHandlerInstances