Package

com.sksamuel

avro4s

Permalink

package avro4s

Visibility
  1. Public
  2. All

Type Members

  1. case class Anno(className: String, args: Seq[Any]) extends Product with Serializable

    Permalink
  2. class AnnotationExtractors extends AnyRef

    Permalink
  3. case class AvroAlias(alias: String) extends Annotation with StaticAnnotation with Product with Serializable

    Permalink
  4. case class AvroDoc(doc: String) extends Annotation with StaticAnnotation with Product with Serializable

    Permalink
  5. class AvroErasedName extends Annotation with StaticAnnotation

    Permalink

    This annotation is used to disable generics in the encoding of a record's name.

    This annotation is used to disable generics in the encoding of a record's name.

    Normally, the record name for a generic type is the name of the raw type, plus the actual type parameters. For example, a class Foo with type parameters Int and Boolean, would have a generated name of FooInt_Boolean

    When this annotation is present on a type, the name used in the schema will simply be the raw type, eg Foo.

  6. case class AvroFixed(size: Int) extends Annotation with StaticAnnotation with Product with Serializable

    Permalink

    AvroFixed overrides the schema type for a field or a value class so that the schema is set to org.apache.avro.Schema.Type.FIXED rather than whatever the default would be.

    AvroFixed overrides the schema type for a field or a value class so that the schema is set to org.apache.avro.Schema.Type.FIXED rather than whatever the default would be.

    This annotation can be used in the following ways:

    - On a field, eg case class Foo(@AvroField(10) name: String) which results in the field name having schema type FIXED with a size of 10.

    - On a value type, eg @AvroField(7) case class Foo(name: String) extends AnyVal which results in all usages of the value type having schema FIXED with a size of 7 rather than the default.

  7. case class AvroName(name: String) extends Annotation with StaticAnnotation with Product with Serializable

    Permalink

    AvroName allows the name used by Avro to be different from what is defined in code.

    AvroName allows the name used by Avro to be different from what is defined in code.

    For example, if a case class defines a field z, such as case class Foo(z: String) then normally this will be serialized as an entry 'z' in the Avro Record.

    However, if the field is annotated such as case class Foo(@AvroName("x") z: String) then the entry in the Avro Record will be for 'x'.

    Similarly for deserialization, if a field is annotated then the name that is looked up in the avro record will be the annotated name and not the field name in Scala.

    The second example is with classes. If a class is annotated with @AvroName then the name used in the record schema will not be the classname but the annotated value.

    This will also have an effect on serialization. For example, when decoding records into an Either, the decoder must decide if the value is a Left or a Right. It usually does this by comparing the name in the record to the classnames of the either types, but when annotated, it will compare the name in the record to the annotated value.

  8. case class AvroNamespace(namespace: String) extends Annotation with StaticAnnotation with Product with Serializable

    Permalink
  9. case class AvroProp(name: String, value: String) extends Annotation with StaticAnnotation with Product with Serializable

    Permalink
  10. trait CoproductDecoders extends AnyRef

    Permalink
  11. trait CoproductEncoders extends AnyRef

    Permalink
  12. trait CoproductSchemaFor extends AnyRef

    Permalink
  13. trait Decoder[T] extends Serializable

    Permalink

    A Decoder is used to convert an Avro value, such as a GenericRecord, SpecificRecord, GenericFixed, EnumSymbol, or a basic JVM type, into a target Scala type.

    A Decoder is used to convert an Avro value, such as a GenericRecord, SpecificRecord, GenericFixed, EnumSymbol, or a basic JVM type, into a target Scala type.

    For example, a Decoder[String] would convert an input of type Utf8 - which is one of the ways Avro can encode strings - into a plain Java String.

    Another example, a decoder for Option[String] would handle inputs of null by emitting a None, and a non-null input by wrapping the decoded value in a Some.

    A final example is converting a GenericData.Array or a Java collection type into a Scala collection type.

  14. sealed trait Default extends AnyRef

    Permalink
  15. trait Encoder[T] extends Serializable

    Permalink

    An Encoder encodes a Scala value of type T into a compatible Avro value based on the given schema.

    An Encoder encodes a Scala value of type T into a compatible Avro value based on the given schema.

    For example, given a string, and a schema of type Schema.Type.STRING then the string would be encoded as an instance of Utf8, whereas the same string and a Schema.Type.FIXED would be encoded as an instance of GenericData.Fixed.

    Another example is given a Scala enumeration value, and a schema of type Schema.Type.ENUM, the value would be encoded as an instance of GenericData.EnumSymbol.

  16. final case class Exported[A](instance: A) extends AnyVal with Product with Serializable

    Permalink
  17. case class ImmutableRecord(schema: Schema, values: Vector[AnyRef]) extends Record with Product with Serializable

    Permalink
  18. case class MethodDefault(value: AnyRef) extends Default with Product with Serializable

    Permalink
  19. case class NameResolution(erasedName: String, genericName: String, defaultNamespace: String, annos: Seq[Anno]) extends Product with Serializable

    Permalink

    Implements methods to retrieve a suitable record name and namespace for a given Scala type, taking into account type parameters and annotations.

    Implements methods to retrieve a suitable record name and namespace for a given Scala type, taking into account type parameters and annotations.

    erasedName

    the name of the scala class without type parameters. Eg, List[Int] would be List.

    genericName

    the name of the scala class with type parameters encoded, Eg, List[Int] would be ListInt

    defaultNamespace

    usually the package name, or if the class is nested, then the package name + outer class

  20. sealed trait NamingStrategy extends AnyRef

    Permalink
  21. trait Record extends GenericRecord with SpecificRecord

    Permalink

    An implementation of org.apache.avro.generic.GenericContainer that is both a GenericRecord and a SpecificRecord.

  22. class ReflectHelper[C <: Context] extends AnyRef

    Permalink
  23. case class ScalePrecisionRoundingMode(scale: Int, precision: Int, roundingMode: RoundingMode) extends Product with Serializable

    Permalink
  24. trait SchemaFor[T] extends Serializable

    Permalink

    A SchemaFor generates an Avro Schema for a Scala or Java type.

    A SchemaFor generates an Avro Schema for a Scala or Java type.

    For example, a String SchemaFor could return an instance of Schema.Type.STRING or Schema.Type.FIXED depending on the type required for Strings.

  25. trait TupleDecoders extends AnyRef

    Permalink
  26. trait TupleEncoders extends AnyRef

    Permalink
  27. trait TupleSchemaFor extends AnyRef

    Permalink

Value Members

  1. object AvroNameResolver

    Permalink
  2. object AvroSchema

    Permalink
  3. object Decoder extends CoproductDecoders with TupleDecoders with Serializable

    Permalink
  4. object Default

    Permalink
  5. object DefaultNamingStrategy extends NamingStrategy with Product with Serializable

    Permalink
  6. object DefaultResolver

    Permalink

    When we set a default on an avro field, the type must match the schema definition.

    When we set a default on an avro field, the type must match the schema definition. For example, if our field has a schema of type Long, then the default must be a number value.

    This class will accept an Avro encoded value and convert it to a suitable default type.

  7. object Encoder extends CoproductEncoders with TupleEncoders with Serializable

    Permalink
  8. object GenericNameEncoder

    Permalink
  9. object LispCase extends NamingStrategy with Product with Serializable

    Permalink
  10. object NameResolution extends Serializable

    Permalink
  11. object NoDefault extends Default with Product with Serializable

    Permalink
  12. object NullDefault extends Default with Product with Serializable

    Permalink
  13. object PascalCase extends NamingStrategy with Product with Serializable

    Permalink
  14. object ReflectHelper

    Permalink
  15. object ScalePrecisionRoundingMode extends Serializable

    Permalink
  16. object SchemaFor extends TupleSchemaFor with CoproductSchemaFor with Serializable

    Permalink
  17. object SchemaHelper

    Permalink
  18. object SnakeCase extends NamingStrategy with Product with Serializable

    Permalink

Ungrouped