it.agilelab.darwin.common

Connector

trait Connector extends Serializable

Generic abstraction of a component capable of reading and writing Schema entities in an external storage. The external storage should keep at least the ID (Long) and the schema (Schema) for each entry.

Linear Supertypes
Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Connector
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def createTable(): Unit

    Creates the configured table, if the table already exists, does nothing

  2. abstract def findSchema(id: Long): Option[Schema]

    Retrieves a single schema using its ID from the storage.

    Retrieves a single schema using its ID from the storage.

    id

    the ID of the schema

    returns

    an option that is empty if no schema was found for the ID or defined if a schema was found

  3. abstract def fullLoad(): Seq[(Long, Schema)]

    Loads all schemas found on the storage.

    Loads all schemas found on the storage. This method can be invoked multiple times: to initialize the initial values or to update the existing ones with the new data found on the storage.

    returns

    a sequence of all the pairs (ID, schema) found on the storage

  4. abstract def insert(schemas: Seq[(Long, Schema)]): Unit

    Inserts all the schema passed as parameters in the storage.

    Inserts all the schema passed as parameters in the storage. This method is called when new schemas should be registered in the storage (the test if a schema is already in the storage should be performed before the invocation of this method, e.g. by checking them against the pre-loaded cache).

    schemas

    a sequence of pairs (ID, schema) Schema entities to insert in the storage.

  5. abstract def retrieveLatestSchema(identifier: String): Option[(Long, Schema)]

    Retrieves the latest schema for a given string identifier (not to be confused with the fingerprint id).

    Retrieves the latest schema for a given string identifier (not to be confused with the fingerprint id). This API might not be implemented by all connectors, which should return None

  6. abstract def tableCreationHint(): String

    returns

    a message indicating the user what he/she should do to create the table him/herself

  7. abstract def tableExists(): Boolean

    Returns whether or not the configured table exists

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  10. def extractId(avroSingleObjectEncoded: ByteBuffer, endianness: ByteOrder): Long

    Extracts the schema ID from the avro single-object encoded ByteBuffer, the ByteBuffer position will be after the header when this method returns

    Extracts the schema ID from the avro single-object encoded ByteBuffer, the ByteBuffer position will be after the header when this method returns

    avroSingleObjectEncoded

    avro single-object encoded byte array

    endianness

    the endianness that will be used to read fingerprint bytes, it won't affect how avro payload is read, that is up to the darwin user

    returns

    the schema ID extracted from the input data

  11. def extractId(inputStream: InputStream, endianness: ByteOrder): Either[Array[Byte], Long]

    Extracts the schema ID from the avro single-object encoded at the head of this input stream.

    Extracts the schema ID from the avro single-object encoded at the head of this input stream. The input stream will have 10 bytes consumed if the first two bytes correspond to the single object encoded header, or zero bytes consumed if the InputStream supports marking; if it doesn't, the first bytes (up to 2) will be consumed and returned in the Left part of the Either.

    inputStream

    avro single-object encoded input stream

    endianness

    the endianness that will be used to read fingerprint bytes, it won't affect how avro payload is read, that is up to the darwin user

    returns

    the schema ID extracted from the input data

  12. def extractId(array: Array[Byte], endianness: ByteOrder): Long

    Extracts the schema ID from the avro single-object encoded byte array

    Extracts the schema ID from the avro single-object encoded byte array

    array

    avro single-object encoded byte array

    endianness

    the endianness that will be used to read fingerprint bytes, it won't affect how avro payload is read, that is up to the darwin user

    returns

    the schema ID extracted from the input data

  13. def extractSchema(array: Array[Byte], endianness: ByteOrder, getSchema: (Long) ⇒ Option[Schema]): Either[Exception, Schema]

    Extracts the schema from the avro single-object encoded in the input array.

    Extracts the schema from the avro single-object encoded in the input array.

    array

    avro single-object encoded array

    returns

    the schema ID extracted from the input data

  14. def extractSchema(inputStream: InputStream, endianness: ByteOrder, getSchema: (Long) ⇒ Option[Schema]): Either[Array[Byte], Schema]

    Extracts the schema from the avro single-object encoded at the head of this input stream.

    Extracts the schema from the avro single-object encoded at the head of this input stream. The input stream will have 10 bytes consumed if the first two bytes correspond to the single object encoded header, or zero bytes consumed if the InputStream supports marking; if it doesn't, the first bytes (up to 2) will be consumed and returned in the Left part of the Either

    inputStream

    avro single-object encoded input stream

    returns

    the schema ID extracted from the input data

  15. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  16. def fingerprint(schema: Schema): Long

    Generate a fingerprint for a schema, the default implementation is SchemaNormalization.

    Generate a fingerprint for a schema, the default implementation is SchemaNormalization.parsingFingerprint64

    schema

    the schema to fingerprint

    returns

    the schema id

  17. def generateAvroSingleObjectEncoded(byteStream: OutputStream, schemaId: Long, endianness: ByteOrder)(avroWriter: (OutputStream) ⇒ OutputStream): OutputStream

    Writes to the given OutputStream the Single Object Encoding header then calls the avroWriter function to possibly add data to the stream and finally returns the OutputStream

    Writes to the given OutputStream the Single Object Encoding header then calls the avroWriter function to possibly add data to the stream and finally returns the OutputStream

    byteStream

    the stream to write to

    schemaId

    id of the schema used to encode the payload

    avroWriter

    function that will be called to add user generated avro to the stream

    returns

    the input OutputStream

  18. def generateAvroSingleObjectEncoded(byteStream: OutputStream, avroValue: Array[Byte], schemaId: Long, endianness: ByteOrder): OutputStream

    Writes to the given OutputStream the Single Object Encoding header then the avroValue and returns the OutputStream

    Writes to the given OutputStream the Single Object Encoding header then the avroValue and returns the OutputStream

    byteStream

    the stream to write to

    avroValue

    the value to be written to the stream

    schemaId

    id of the schema used to encode the payload

    returns

    the input OutputStream

  19. def generateAvroSingleObjectEncoded(avroPayload: Array[Byte], schema: Schema, endianness: ByteOrder, getId: (Schema) ⇒ Long): Array[Byte]

    Create an array that creates a Single-Object encoded byte array.

    Create an array that creates a Single-Object encoded byte array. By specifications the encoded array is obtained concatenating the V1_HEADER, the schema id and the avro-encoded payload.

    avroPayload

    avro-serialized payload

    schema

    the schema used to encode the payload

    returns

    a Single-Object encoded byte array

  20. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  21. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  22. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  23. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  24. final def notify(): Unit

    Definition Classes
    AnyRef
  25. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  26. def retrieveSchemaAndAvroPayload(avroSingleObjectEncoded: ByteBuffer, endianness: ByteOrder, getSchema: (Long) ⇒ Option[Schema]): Schema

    Extracts the Schema from the ByteBuffer after the method call the ByteBuffer position will be right after the header.

    Extracts the Schema from the ByteBuffer after the method call the ByteBuffer position will be right after the header.

    avroSingleObjectEncoded

    a ByteBuffer of a Single-Object encoded payload

    returns

    the avro Schema

  27. def retrieveSchemaAndAvroPayload(avroSingleObjectEncoded: Array[Byte], endianness: ByteOrder, getSchema: (Long) ⇒ Option[Schema]): (Schema, Array[Byte])

    Extracts a Tuple2 that contains the Schema and the Avro-encoded payload

    Extracts a Tuple2 that contains the Schema and the Avro-encoded payload

    avroSingleObjectEncoded

    a byte array of a Single-Object encoded payload

    returns

    a pair containing the Schema and the payload of the input array

  28. def retrieveSchemaAndPayload(avroSingleObjectEncoded: Array[Byte], endianness: ByteOrder, getSchema: (Long) ⇒ Option[Schema]): SchemaPayloadPair

    Extracts a SchemaPayloadPair that contains the Schema and the Avro-encoded payload

    Extracts a SchemaPayloadPair that contains the Schema and the Avro-encoded payload

    avroSingleObjectEncoded

    a byte array of a Single-Object encoded payload

    returns

    a SchemaPayloadPair containing the Schema and the payload of the input array

  29. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  30. def toString(): String

    Definition Classes
    AnyRef → Any
  31. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  32. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  33. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  34. def writeHeaderToStream(byteStream: OutputStream, schemaId: Long, endianness: ByteOrder): OutputStream

    Writes to the given OutputStream the Single Object Encoding header and returns the OutputStream

    Writes to the given OutputStream the Single Object Encoding header and returns the OutputStream

    returns

    the input OutputStream

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped