Package

com.avsystem.commons

serialization

Permalink

package serialization

Visibility
  1. Public
  2. All

Type Members

  1. abstract class ApplyUnapplyCodec[T] extends OOOFieldsObjectCodec[T] with ErrorReportingCodec[T]

    Permalink
  2. final class DefaultCaseObjectInput extends ObjectInput

    Permalink
  3. trait ErrorReportingCodec[T] extends GenCodec[T]

    Permalink
  4. 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.

  5. trait FieldInput extends Input

    Permalink

    An Input representing an object field.

    An Input representing an object field. The same as Input but also provides field name.

  6. final class FieldValues extends AnyRef

    Permalink
  7. abstract class FlatSealedHierarchyCodec[T] extends SealedHierarchyCodec[T]

    Permalink
  8. 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}" )
  9. trait GenKeyCodec[T] extends AnyRef

    Permalink

    Typeclass which implements two-directional conversion between values of some type and field names used in ObjectOutput.writeField and ObjectInput.nextField (FieldInput.fieldName).

    Typeclass which implements two-directional conversion between values of some type and field names used in ObjectOutput.writeField and ObjectInput.nextField (FieldInput.fieldName). Every type which has a natural, unambiguous string representation should have a GenKeyCodec.

    Annotations
    @implicitNotFound( ... )
  10. case class GenRef[-S, +T](fun: (S) ⇒ T, rawRef: RawRef) extends (S) ⇒ T with Product with Serializable

    Permalink
  11. abstract class HasGenCodec[T] extends AnyRef

    Permalink

    Convenience abstract class for companion objects of types that have a GenCodec.

    Convenience abstract class for companion objects of types that have a GenCodec. Unfortunately, due to compiler and language limitations this only works for non-generic case classes without default constructor arguments.

  12. 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 tries to read a value of specified type and may throw an exception (usually ReadFailure) when reading is not successful.

    An Input value should be assumed to be stateful. If any of the readX methods have already been called, the Input instance can no longer be used and MUST be discarded.

    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.

  13. sealed trait InputType extends AnyRef

    Permalink

    Represents the type of value inside and Input that can be read from it.

    Represents the type of value inside and Input that can be read from it.

    It is possible to distinguish only between four types (null, simple value, object and list) even though any of these types may have different representations. For example, InputType.Simple is returned for more than one actual value types (numbers, booleans, strings, timestamps, binary, etc.).

    It's not possible to distinguish between them based only on InputType because not every Input implementation is able to do that. For example, JSON must represent 64-bit integers as strings and therefore it can't distinguish between strings and numbers in general.

  14. 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.

  15. 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.

  16. final case class MacroCodec[T](codec: GenCodec[T]) extends AnyVal with Product with Serializable

    Permalink
  17. abstract class NestedSealedHierarchyCodec[T] extends SealedHierarchyCodec[T]

    Permalink
  18. 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.

  19. 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.

    ObjectOutput MUST preserve information about the order in which fields are written. ObjectInput is required to read fields in exactly the same order as ObjectOutput writes them.

  20. 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.

  21. abstract class ProductCodec[T <: Product] extends ApplyUnapplyCodec[T]

    Permalink
  22. sealed trait RawRef extends AnyRef

    Permalink
  23. trait RecursiveAutoCodecs extends AnyRef

    Permalink
  24. abstract class SealedHierarchyCodec[T] extends ObjectCodec[T] with ErrorReportingCodec[T]

    Permalink
  25. trait SequentialInput extends Any

    Permalink
  26. 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.

  27. sealed trait SimpleRawRef extends RawRef

    Permalink
  28. class SimpleValueFieldInput extends SimpleValueInput with FieldInput

    Permalink
  29. class SimpleValueInput extends Input

    Permalink

    An Input for GenCodec complementary to SimpleValueOutput.

  30. class SimpleValueOutput extends Output

    Permalink

    An Output for GenCodec which serializes data into plain Scala objects.

    An Output for GenCodec which serializes data into plain Scala objects.

    - "lists" are represented as Scala Lists - "objects" are represented as String-keyed Scala Maps - simple values (strings, numbers, booleans, byte arrays) are represented as themselves, unchanged

    In other words, serialized value yield by SimpleValueOutput is a Scala object guaranteed to be one of: - null - Int - Long - Double - Boolean - String - Array[Byte] - scala.collection.Seq[Any] where every element is also one of the listed types - scala.collection.Map[String,Any] where every value is also one of the listed types

    Such format is often useful as an intermediate representation. For example, it can be later safely passed to standard Java serialization. However, for performance reasons it's recommended to implement dedicated Input and Output for the final format (e.g. binary or JSON).

  31. class SingletonCodec[T <: Singleton] extends OOOFieldsObjectCodec[T] with ErrorReportingCodec[T]

    Permalink
  32. class StreamFieldInput extends StreamInput with FieldInput

    Permalink
  33. class StreamInput extends Input

    Permalink
  34. class StreamOutput extends Output

    Permalink
  35. abstract class StringWrapperCompanion[T] extends TransparentWrapperCompanion[String, T]

    Permalink
  36. abstract class TransparentCodec[T, U] extends NullSafeCodec[T] with ErrorReportingCodec[T]

    Permalink
  37. abstract class TransparentWrapperCompanion[R, T] extends AnyRef

    Permalink
  38. trait TupleGenCodecs extends AnyRef

    Permalink

Value Members

  1. object FieldValues

    Permalink
  2. object GenCodec extends FallbackMapCodecs with TupleGenCodecs

    Permalink
  3. object GenKeyCodec

    Permalink
  4. object GenRef extends Serializable

    Permalink
  5. object GenTupleDBCodecs

    Permalink
  6. object InputType

    Permalink
  7. object MacroCodec extends Serializable

    Permalink
  8. object RawRef

    Permalink
  9. object SimpleRawRef

    Permalink

Ungrouped