Class/Object

io.smartdatalake.workflow.dataobject

WebserviceFileDataObject

Related Docs: object WebserviceFileDataObject | package dataobject

Permalink

case class WebserviceFileDataObject(id: DataObjectId, webserviceOptions: WebserviceOptions, partitionDefs: Seq[WebservicePartitionDefinition] = Seq(), partitionLayout: Option[String] = None, metadata: Option[DataObjectMetadata] = None)(implicit instanceRegistry: InstanceRegistry) extends FileRefDataObject with CanCreateInputStream with SmartDataLakeLogger with Product with Serializable

DataObject to call webservice and return response as InputStream This is implemented as FileRefDataObject because the response is treated as some file content. FileRefDataObjects support partitioned data. For a WebserviceFileDataObject partitions are mapped as query parameters to create query string. All possible query parameter values must be given in configuration.

partitionDefs

list of partitions with list of possible values for every entry

partitionLayout

definition of partitions in query string. Use %<partitionColName>% as placeholder for partition column value in layout.

Linear Supertypes
Serializable, Serializable, Product, Equals, CanCreateInputStream, FileRefDataObject, FileDataObject, CanHandlePartitions, DataObject, SmartDataLakeLogger, ParsableFromConfig[DataObject], SdlConfigObject, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. WebserviceFileDataObject
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. CanCreateInputStream
  7. FileRefDataObject
  8. FileDataObject
  9. CanHandlePartitions
  10. DataObject
  11. SmartDataLakeLogger
  12. ParsableFromConfig
  13. SdlConfigObject
  14. AnyRef
  15. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new WebserviceFileDataObject(id: DataObjectId, webserviceOptions: WebserviceOptions, partitionDefs: Seq[WebservicePartitionDefinition] = Seq(), partitionLayout: Option[String] = None, metadata: Option[DataObjectMetadata] = None)(implicit instanceRegistry: InstanceRegistry)

    Permalink

    partitionDefs

    list of partitions with list of possible values for every entry

    partitionLayout

    definition of partitions in query string. Use %<partitionColName>% as placeholder for partition column value in layout.

Value Members

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

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

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

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. def createEmptyPartition(partitionValues: PartitionValues)(implicit session: SparkSession): Unit

    Permalink

    create empty partition

    create empty partition

    Definition Classes
    CanHandlePartitions
  7. def createInputStream(query: String)(implicit session: SparkSession): InputStream

    Permalink

    Same as getResponse, but returns response as InputStream

    Same as getResponse, but returns response as InputStream

    query

    it should be possible to define the partition to read as query string, but this is not yet implemented

    Definition Classes
    WebserviceFileDataObject → CanCreateInputStream
  8. final def createMissingPartitions(partitionValues: Seq[PartitionValues])(implicit session: SparkSession): Unit

    Permalink

    Create empty partitions for partition values not yet existing

    Create empty partitions for partition values not yet existing

    Definition Classes
    CanHandlePartitions
  9. def deleteAll(implicit session: SparkSession): Unit

    Permalink

    Delete all data.

    Delete all data. This is used to implement SaveMode.Overwrite.

    Definition Classes
    FileRefDataObject
  10. def deleteFileRefs(fileRefs: Seq[FileRef])(implicit session: SparkSession): Unit

    Permalink

    Delete given files.

    Delete given files. This is used to cleanup files after they are processed.

    Definition Classes
    FileRefDataObject
  11. def deletePartitions(partitionValues: Seq[PartitionValues])(implicit session: SparkSession): Unit

    Permalink

    Delete given partitions.

    Delete given partitions. This is used to cleanup partitions after they are processed.

    Definition Classes
    CanHandlePartitions
  12. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. def expectedPartitionsCondition: Option[String]

    Permalink

    Definition of partitions that are expected to exists.

    Definition of partitions that are expected to exists. This is used to validate that partitions being read exists and don't return no data. Define a Spark SQL expression that is evaluated against a PartitionValues instance and returns true or false example: "elements['yourColName'] > 2017"

    returns

    true if partition is expected to exist.

    Definition Classes
    WebserviceFileDataObject → CanHandlePartitions
  14. def extractPartitionValuesFromPath(filePath: String): PartitionValues

    Permalink

    Extract partition values from a given file path

    Extract partition values from a given file path

    Attributes
    protected
    Definition Classes
    FileRefDataObject
  15. def factory: FromConfigFactory[DataObject]

    Permalink

    Returns the factory that can parse this type (that is, type CO).

    Returns the factory that can parse this type (that is, type CO).

    Typically, implementations of this method should return the companion object of the implementing class. The companion object in turn should implement FromConfigFactory.

    returns

    the factory (object) for this class.

    Definition Classes
    WebserviceFileDataObject → ParsableFromConfig
  16. val fileName: String

    Permalink

    Definition of fileName.

    Definition of fileName. Default is an asterix to match everything. This is concatenated with the partition layout to search for files.

    Definition Classes
    FileRefDataObject
  17. final def filterExpectedPartitionValues(partitionValues: Seq[PartitionValues])(implicit session: SparkSession): Seq[PartitionValues]

    Permalink

    Filter list of partition values by expected partitions condition

    Filter list of partition values by expected partitions condition

    Definition Classes
    CanHandlePartitions
  18. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  19. def getAccessToken: Option[AccessTokenResponse]

    Permalink

    Get Access Token through Keycloak

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

    Permalink
    Definition Classes
    AnyRef → Any
  21. def getConnection[T <: Connection](connectionId: ConnectionId)(implicit registry: InstanceRegistry, ct: ClassTag[T], tt: scala.reflect.api.JavaUniverse.TypeTag[T]): T

    Permalink

    Handle class cast exception when getting objects from instance registry

    Handle class cast exception when getting objects from instance registry

    Attributes
    protected
    Definition Classes
    DataObject
  22. def getConnectionReg[T <: Connection](connectionId: ConnectionId, registry: InstanceRegistry)(implicit ct: ClassTag[T], tt: scala.reflect.api.JavaUniverse.TypeTag[T]): T

    Permalink
    Attributes
    protected
    Definition Classes
    DataObject
  23. def getFileRefs(partitionValues: Seq[PartitionValues])(implicit session: SparkSession): Seq[FileRef]

    Permalink

    For WebserviceFileDataObject, every partition is mapped to one FileRef

    For WebserviceFileDataObject, every partition is mapped to one FileRef

    partitionValues

    List of partition values to be filtered. If empty all files in root path of DataObject will be listed.

    returns

    List of FileRefs

    Definition Classes
    WebserviceFileDataObject → FileRefDataObject
  24. def getPartitionString(partitionValues: PartitionValues)(implicit session: SparkSession): Option[String]

    Permalink

    get partition values formatted by partition layout

    get partition values formatted by partition layout

    Definition Classes
    FileRefDataObject
  25. def getPath: String

    Permalink

    Method for subclasses to override the base path for this DataObject.

    Method for subclasses to override the base path for this DataObject. This is for instance needed if pathPrefix is defined in a connection.

    Definition Classes
    FileRefDataObject
  26. def getResponse(query: String): Array[Byte]

    Permalink

    Calls webservice and returns response as string Supports different methods client-id / client-secret --> Call with Bearer token incl.

    Calls webservice and returns response as string Supports different methods client-id / client-secret --> Call with Bearer token incl. automatic refresh of token if necessary Normal call with optional custom header and user/password

    returns

    Response as Array[Byte]

  27. def getSearchPaths(partitionValues: Seq[PartitionValues])(implicit session: SparkSession): Seq[(PartitionValues, String)]

    Permalink

    prepare paths to be searched

    prepare paths to be searched

    Attributes
    protected
    Definition Classes
    FileRefDataObject
  28. val id: DataObjectId

    Permalink

    A unique identifier for this instance.

    A unique identifier for this instance.

    Definition Classes
    WebserviceFileDataObject → DataObject → SdlConfigObject
  29. def initWebservice(url: String, connectionTimeoutMs: Option[Int], readTimeoutMs: Option[Int], authHeader: Option[String], clientId: Option[String], clientSecret: Option[String], user: Option[String], pwd: Option[String], token: Option[String] = None): Webservice

    Permalink

    Initializes the webservice according to given parameters

    Initializes the webservice according to given parameters

    url

    URL to call

    connectionTimeoutMs

    Connection timeout in milliseconds

    readTimeoutMs

    Read timeout in milliseconds

    authHeader

    custom authentication header

    clientId

    client-id for OAuth2

    clientSecret

    client-secret for OAuth2

    user

    user for basic authentication

    pwd

    password for basic authentication

    token

    token for direct call with token

  30. implicit val instanceRegistry: InstanceRegistry

    Permalink
  31. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  32. val keycloak: Option[Keycloak]

    Permalink
  33. def listPartitions(implicit session: SparkSession): Seq[PartitionValues]

    Permalink

    List partition values defined for this web service.

    List partition values defined for this web service. Note that this is a fixed list.

    Definition Classes
    WebserviceFileDataObject → CanHandlePartitions
  34. lazy val logger: Logger

    Permalink
    Attributes
    protected
    Definition Classes
    SmartDataLakeLogger
  35. val metadata: Option[DataObjectMetadata]

    Permalink

    Additional metadata for the DataObject

    Additional metadata for the DataObject

    Definition Classes
    WebserviceFileDataObject → DataObject
  36. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  37. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  38. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  39. val partitionDefs: Seq[WebservicePartitionDefinition]

    Permalink

    list of partitions with list of possible values for every entry

  40. val partitionLayout: Option[String]

    Permalink

    definition of partitions in query string.

    definition of partitions in query string. Use %<partitionColName>% as placeholder for partition column value in layout.

    Definition Classes
    WebserviceFileDataObject → FileRefDataObject
  41. def partitions: Seq[String]

    Permalink

    Definition of partition columns

    Definition of partition columns

    Definition Classes
    WebserviceFileDataObject → CanHandlePartitions
  42. def path: String

    Permalink

    No root path needed for Webservice.

    No root path needed for Webservice. It can be included in webserviceOptions.url.

    Definition Classes
    WebserviceFileDataObject → FileDataObject
  43. def postRead(partitionValues: Seq[PartitionValues])(implicit session: SparkSession, context: ActionPipelineContext): Unit

    Permalink

    Runs operations after reading from DataObject

    Runs operations after reading from DataObject

    Definition Classes
    DataObject
  44. def postWrite(partitionValues: Seq[PartitionValues])(implicit session: SparkSession, context: ActionPipelineContext): Unit

    Permalink

    Runs operations after writing to DataObject

    Runs operations after writing to DataObject

    Definition Classes
    DataObject
  45. def preRead(partitionValues: Seq[PartitionValues])(implicit session: SparkSession, context: ActionPipelineContext): Unit

    Permalink

    Runs operations before reading from DataObject

    Runs operations before reading from DataObject

    Definition Classes
    DataObject
  46. def preWrite(implicit session: SparkSession, context: ActionPipelineContext): Unit

    Permalink

    Runs operations before writing to DataObject Note: As the transformed SubFeed doesnt yet exist in Action.preWrite, no partition values can be passed as parameters as in preRead

    Runs operations before writing to DataObject Note: As the transformed SubFeed doesnt yet exist in Action.preWrite, no partition values can be passed as parameters as in preRead

    Definition Classes
    DataObject
  47. def prepare(implicit session: SparkSession): Unit

    Permalink

    Prepare & test DataObject's prerequisits

    Prepare & test DataObject's prerequisits

    This runs during the "prepare" operation of the DAG.

    Definition Classes
    FileDataObject → DataObject
  48. def prepareWebservice(query: String): Webservice

    Permalink

    Initialized the webservice

  49. val saveMode: SaveMode

    Permalink

    Overwrite or Append new data.

    Overwrite or Append new data. When writing partitioned data, this applies only to partitions concerned.

    Definition Classes
    WebserviceFileDataObject → FileRefDataObject
  50. val separator: Char

    Permalink

    default separator for paths

    default separator for paths

    Attributes
    protected
    Definition Classes
    FileDataObject
  51. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  52. def toStringShort: String

    Permalink
    Definition Classes
    DataObject
  53. def translateFileRefs(fileRefs: Seq[FileRef])(implicit session: SparkSession): Seq[FileRef]

    Permalink

    Given some FileRefs for another DataObject, translate the paths to the root path of this DataObject

    Given some FileRefs for another DataObject, translate the paths to the root path of this DataObject

    Definition Classes
    FileRefDataObject
  54. final def wait(): Unit

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  57. val webserviceOptions: WebserviceOptions

    Permalink

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from CanCreateInputStream

Inherited from FileRefDataObject

Inherited from FileDataObject

Inherited from CanHandlePartitions

Inherited from DataObject

Inherited from SmartDataLakeLogger

Inherited from ParsableFromConfig[DataObject]

Inherited from SdlConfigObject

Inherited from AnyRef

Inherited from Any

Ungrouped