All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pl.touk.nussknacker.engine.util.sinkvalue.SinkValue.scala Maven / Gradle / Ivy

There is a newer version: 1.17.0
Show newest version
package pl.touk.nussknacker.engine.util.sinkvalue

import pl.touk.nussknacker.engine.api.{LazyParameter, Params}
import pl.touk.nussknacker.engine.util.parameters.SchemaBasedParameter
import pl.touk.nussknacker.engine.util.sinkvalue.SinkValueData._
import pl.touk.nussknacker.engine.util.parameters.{SchemaBasedRecordParameter, SingleSchemaBasedParameter}

import scala.util.Try

object SinkValue {
  final case class InvalidSinkValue(parameterName: String)
      extends Exception(s"Parameter: $parameterName must be a LazyParameter[AnyRef] instance.")

  def applyUnsafe(sinkParameter: SchemaBasedParameter, parameterValues: Params): SinkValue =
    sinkParameter match {
      case SingleSchemaBasedParameter(param, _) =>
        val value = Try(parameterValues.extractUnsafe[LazyParameter[AnyRef]](param.name))
          .getOrElse(throw InvalidSinkValue(param.name.value))
        SinkSingleValue(value)
      case SchemaBasedRecordParameter(paramFields) =>
        val fields = paramFields.map { case (fieldName, sinkParam) =>
          (fieldName, applyUnsafe(sinkParam, parameterValues))
        }
        SinkRecordValue(fields)
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy