object Annotations
Annotations to use on case classes that are being processed by macros.
- Alphabetic
- By Inheritance
- Annotations
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
final
class
DefaultValue[T] extends Annotation with StaticAnnotation
Indicates a default value for a class property, when there is no corresponding BSON value when reading.
Indicates a default value for a class property, when there is no corresponding BSON value when reading.
It enables a behaviour similar to MacroOptions.ReadDefaultValues, without requiring the define a global default value for the property.
import reactivemongo.api.bson.BSONDocument import reactivemongo.api.bson.Macros, Macros.Annotations.DefaultValue case class Foo( title: String, @DefaultValue(1.23D) score: Double) val reader = Macros.reader[Foo] reader.readTry(BSONDocument("title" -> "Bar")) // No BSON 'score' // Success: Foo(title = "Bar", score = 1.23D)
- Annotations
- @param()
-
final
class
Flatten extends Annotation with StaticAnnotation
Indicates that if a property is represented as a document itself, the document fields are directly included in top document, rather than nesting it.
Indicates that if a property is represented as a document itself, the document fields are directly included in top document, rather than nesting it.
import reactivemongo.api.bson.Macros.Annotations.Flatten case class Range(start: Int, end: Int) case class LabelledRange( name: String, @Flatten range: Range) val flattened = reactivemongo.api.bson.BSONDocument( "name" -> "foo", "start" -> 0, "end" -> 1) // Rather than: // BSONDocument("name" -> "foo", "range" -> BSONDocument( // "start" -> 0, "end" -> 1))
- Annotations
- @param()
-
final
class
Ignore extends Annotation with StaticAnnotation
Indicates that the annotated field must not be serialized to BSON.
Indicates that the annotated field must not be serialized to BSON. Annotation
@transient
can also be used to achieve the same purpose.If the annotate field must be read, a default value must be defined, either from the field default value, or using the annotation DefaultValue (specific to BSON).
- Annotations
- @param()
-
final
class
Key extends Annotation with StaticAnnotation
Specify a key different from field name in your case class.
Specify a key different from field name in your case class. Convenient to use when you'd like to leverage mongo's
_id
index but don't want to actually use_id
in your code.import reactivemongo.api.bson.Macros.Annotations.Key case class Website(@Key("_id") url: String)
Generated handler will map the
url
field in your code to_id
field in BSON- Annotations
- @param()
-
final
class
NoneAsNull extends Annotation with StaticAnnotation
Indicates that if an
Option
property is empty, it will be represented byBSONNull
rather than being omitted.Indicates that if an
Option
property is empty, it will be represented byBSONNull
rather than being omitted.import reactivemongo.api.bson.Macros.Annotations.NoneAsNull case class Foo( title: String, @NoneAsNull description: Option[String])
- Annotations
- @param()
-
final
class
Reader[T] extends Annotation with StaticAnnotation
Indicates a BSON reader to be used for a specific property, possibly overriding the default one from the implicit scope.
Indicates a BSON reader to be used for a specific property, possibly overriding the default one from the implicit scope.
import reactivemongo.api.bson.{ BSONDocument, BSONDouble, BSONString, BSONReader } import reactivemongo.api.bson.Macros, Macros.Annotations.Reader val scoreReader: BSONReader[Double] = BSONReader.collect[Double] { case BSONString(v) => v.toDouble case BSONDouble(b) => b } case class Foo( title: String, @Reader(scoreReader) score: Double) val reader = Macros.reader[Foo] reader.readTry(BSONDocument( "title" -> "Bar", "score" -> "1.23" // accepted by annotated scoreReader )) // Success: Foo(title = "Bar", score = 1.23D)
- Annotations
- @param()
-
final
class
Writer[T] extends Annotation with StaticAnnotation
Indicates a BSON writer to be used for a specific property, possibly overriding the default one from the implicit scope.
Indicates a BSON writer to be used for a specific property, possibly overriding the default one from the implicit scope.
import reactivemongo.api.bson.{ BSONString, BSONWriter } import reactivemongo.api.bson.Macros, Macros.Annotations.Writer val scoreWriter: BSONWriter[Double] = BSONWriter[Double] { d => BSONString(d.toString) // write double as string } case class Foo( title: String, @Writer(scoreWriter) score: Double) val writer = Macros.writer[Foo] writer.writeTry(Foo(title = "Bar", score = 1.23D)) // Success: BSONDocument("title" -> "Bar", "score" -> "1.23")
- Annotations
- @param()
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()