in elitzur-avro/src/main/scala/com/spotify/elitzur/converters/avro/dynamic/DynamicAccessorCompanion.scala [54:75]
def parseAvro: Any => Any = (v: Any) => parseUnsafe(preParserProcessor(v))
// TODO: Optimize the method below by introducing changes to Elitzur-Core to allow non-implicit
// driven wiring of Validators
//scalastyle:off line.size.limit
private[dynamic] def getValidator(modifiers: List[ValidatorOp])(implicit m: MetricsReporter): Validator[Any] = {
//scalastyle:on line.size.limit
modifiers match {
case Nil => implicitly[Validator[LT]].asInstanceOf[Validator[Any]]
case OptionValidatorOp :: Nil => implicitly[Validator[Option[LT]]]
.asInstanceOf[Validator[Any]]
case ArrayValidatorOp :: Nil => implicitly[Validator[Seq[LT]]]
.asInstanceOf[Validator[Any]]
case ArrayValidatorOp :: OptionValidatorOp :: Nil => implicitly[Validator[Seq[Option[LT]]]]
.asInstanceOf[Validator[Any]]
case OptionValidatorOp :: ArrayValidatorOp :: Nil => implicitly[Validator[Option[Seq[LT]]]]
.asInstanceOf[Validator[Any]]
case OptionValidatorOp :: ArrayValidatorOp :: OptionValidatorOp :: Nil =>
implicitly[Validator[Option[Seq[Option[LT]]]]].asInstanceOf[Validator[Any]]
case _ => throw new Exception(s"Unsupported validator operation: ${modifiers.mkString(",")}")
}
}