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()
- Alphabetic
- By Inheritance
- Codec
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
Concrete 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(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- def decode(l: L): DecodeResult[H]
- calls
rawDecode
- catches any exceptions that might occur, converting them to decode failures
- validates the result
- calls
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def map[HH](f: (H) => HH)(g: (HH) => H): Codec[L, HH, CF]
- def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
- def mapDecode[HH](f: (H) => DecodeResult[HH])(g: (HH) => H): Codec[L, HH, CF]
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def schema(modify: (Schema[H]) => Schema[H]): Codec[L, H, CF]
- def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
- def schema(s2: Schema[H]): Codec[L, H, CF]
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def validate(v: Validator[H]): Codec[L, H, CF]
- def validateIterable[C[X] <: Iterable[X], U](v: Validator[U])(implicit hIsCU: =:=[H, C[U]]): Codec[L, H, CF]
- def validateOption[U](v: Validator[U])(implicit hIsOptionU: =:=[H, Option[U]]): Codec[L, H, CF]
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated