Package

com.avsystem.commons

serialization

Permalink

package serialization

Visibility
  1. Public
  2. All

Type Members

  1. trait FallbackMapCodecs extends RecursiveAutoCodecs

    Permalink

    Contains readers for maps where there is no DBKeyCodec for key type.

    Contains readers for maps where there is no DBKeyCodec for key type. In such case, we assume reading from a list of key-value pairs instead of JSON object.

  2. trait GenCodec[T] extends AnyRef

    Permalink

    Type class for types that can be serialized to Output (format-agnostic "output stream") and deserialized from Input (format-agnostic "input stream").

    Type class for types that can be serialized to Output (format-agnostic "output stream") and deserialized from Input (format-agnostic "input stream"). GenCodec is supposed to capture generic structure of serialized objects, without being bound to particular format like JSON. The actual format is determined by implementation of Input and Output.

    There are convenient macros for automatic derivation of GenCodec instances (materialize and materializeRecursively). However, GenCodec instances still need to be explicitly declared and won't be derived "automagically". If you want fully automatic derivation, use GenCodec.Auto.

    Annotations
    @implicitNotFound( "No GenCodec found for ${T}" )
  3. trait GenKeyCodec[T] extends AnyRef

    Permalink

    Typeclass which expresses ability to convert between MongoDB JSON object keys and values of some type.

    Typeclass which expresses ability to convert between MongoDB JSON object keys and values of some type. Every type which has a natural, unambiguous string representation should have a DBKeyCodec.

    Annotations
    @implicitNotFound( ... )
  4. trait Input extends Any

    Permalink

    Represents an abstract source from which a value may be deserialized (read).

    Represents an abstract source from which a value may be deserialized (read). Each of the read methods returns an instance of ValueRead which may contain either a successfully read value or an error message.

    An Input value should be assumed to be stateful. If any of the read methods have already been called AND returned successful result ((ReadSuccessful), the Input instance can no longer be used and MUST be discarded. On the other hand, when the read method returned a ReadFailed, its state should be unchanged and any read method may be called again.

    In order to ignore the value kept in this Input, skip() MUST be called.

    In summary: every Input MUST be fully exhausted by either calling one of the read methods which returns successful value or by calling skip(). Also, ListInput and ObjectInput instances returned from this Input must also be fully exhausted on their own.

  5. trait ListInput extends SequentialInput

    Permalink

    Represents an abstract source of sequence of values that can be deserialized.

    Represents an abstract source of sequence of values that can be deserialized. ListInput instance is stateful and MUST be read strictly sequentially. This means, you MUST fully exhaust an Input instance returned by nextElement() before calling nextElement() again. For this reason, ListInput is not an Iterator despite having similar interface (Iterator would easily allow e.g. conversion to List[Input] which would be illegal).

    ListInput MUST always be fully exhausted. In order to ignore any remaining elements, skipRemaining() may be used.

  6. trait ListOutput extends SequentialOutput

    Permalink

    Represents an abstract sink for serialization of sequences of values.

    Represents an abstract sink for serialization of sequences of values. Any ListOutput instance must be assumed to be stateful and used in strictly sequential manner. After all elements have been written, finish() must be called to explicitly mark that the list is complete.

  7. trait ObjectInput extends SequentialInput

    Permalink

    Represents an abstract source of key-value mappings that can be deserialized.

    Represents an abstract source of key-value mappings that can be deserialized. ObjectInput instance is stateful and MUST be read strictly sequentially. This means, you MUST fully exhaust any Input instance returned by nextField() before calling nextField() again. For this reason, ObjectInput is not an Iterator despite having similar interface (Iterator would easily allow e.g. conversion to List[(String, Input)] which would be illegal).

    ObjectInput MUST always be fully exhausted. In order to ignore any remaining key-value mappings, skipRemaining() may be used.

    NOTE: The order of keys returned by subsequent invocations of nextField() may be arbitrary and in particular may not match the order in which keys were written to corresponding ObjectOutput.

  8. trait ObjectOutput extends SequentialOutput

    Permalink

    Represents an abstract sink for serialization of string-to-value mappings.

    Represents an abstract sink for serialization of string-to-value mappings. Any ObjectOutput instance must be assumed to be stateful and used in strictly sequential manner. After all key-value pairs have been written, finish() must be called to explicitly mark that the object is complete.

  9. trait Output extends Any

    Permalink

    Represents an abstract sink to which a value may be serialized (written).

    Represents an abstract sink to which a value may be serialized (written). An Output instance should be assumed to be stateful. After calling any of the write methods, it MUST NOT be reused. This means that Output instance can be used only to write a single value. However, if the value to write is complex, one can use writeList/writeSet or writeObject/writeMap.

  10. final case class ReadFailed(reason: String) extends ValueRead[Nothing] with Product with Serializable

    Permalink
  11. final case class ReadSuccessful[+A](value: A) extends ValueRead[A] with Product with Serializable

    Permalink
  12. trait RecursiveAutoCodecs extends AnyRef

    Permalink
  13. trait SequentialInput extends Any

    Permalink
  14. trait SequentialOutput extends Any

    Permalink

    Base trait for outputs which allow writing of multiple values in sequence, i.e.

    Base trait for outputs which allow writing of multiple values in sequence, i.e. ListOutput and ObjectOutput.

  15. class SimpleValueInput extends Input

    Permalink
  16. class SimpleValueOutput extends Output

    Permalink
  17. trait TupleGenCodecs extends AnyRef

    Permalink

    Author: ghik Created: 19/11/15.

  18. sealed trait ValueRead[+A] extends AnyRef

    Permalink

    This is pretty much the same thing as Try but more lightweight - it simply holds an error message instead of a whole exception with stack trace etc.

Value Members

  1. object GenCodec extends FallbackMapCodecs with TupleGenCodecs

    Permalink
  2. object GenKeyCodec

    Permalink
  3. object GenTupleDBCodecs

    Permalink

Ungrouped