trait Codec[L, H, +CF <: CodecFormat] extends AnyRef

A bi-directional mapping between low-level values of type L and high-level values of type H. Low level values are formatted as CF.

The mapping consists of a pair of functions, one to decode (L => H), and one to encode (H => L) Decoding can fail, and this is represented as a result of type DecodeResult.

A codec also contains optional meta-data on the schema of the high-level value, as well as an instance of the format (which determines the media type of the low-level value).

Codec instances are used as implicit values, and are looked up when defining endpoint inputs/outputs. Depending on a particular endpoint input/output, it might require a codec which uses a specific format, or a specific low-level value.

Codec instances can be derived basing on other values (e.g. such as json encoders/decoders when integrating with json libraries). Or, they can be defined by hand for custom types, usually customising an existing, simpler codec.

Codecs can be chained with Mapping s using the map function.

L

The type of the low-level value.

H

The type of the high-level value.

CF

The format of encoded values. Corresponds to the media type.

Self Type
Codec[L, H, CF]
Annotations
@implicitNotFound( ... )
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Codec
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def encode(h: H): L
  2. abstract def format: CF
  3. abstract def rawDecode(l: L): DecodeResult[H]
  4. abstract def schema: Schema[H]

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @HotSpotIntrinsicCandidate()
  6. def decode(l: L): DecodeResult[H]

    • calls rawDecode
    • catches any exceptions that might occur, converting them to decode failures
    • validates the result
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. def map[HH](f: (H) ⇒ HH)(g: (HH) ⇒ H): Codec[L, HH, CF]
  14. def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
  15. def mapDecode[HH](f: (H) ⇒ DecodeResult[HH])(g: (HH) ⇒ H): Codec[L, HH, CF]
  16. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  18. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  19. def schema(modify: (Schema[H]) ⇒ Schema[H]): Codec[L, H, CF]
  20. def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
  21. def schema(s2: Schema[H]): Codec[L, H, CF]
  22. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  23. def toString(): String
    Definition Classes
    AnyRef → Any
  24. def validate(v: Validator[H]): Codec[L, H, CF]
  25. def validateIterable[C[X] <: Iterable[X], U](v: Validator[U])(implicit hIsCU: =:=[H, C[U]]): Codec[L, H, CF]
  26. def validateOption[U](v: Validator[U])(implicit hIsOptionU: =:=[H, Option[U]]): Codec[L, H, CF]
  27. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  29. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated
    Deprecated

Inherited from AnyRef

Inherited from Any

Ungrouped