private def getArrayAccessor()

in elitzur-avro/src/main/scala/com/spotify/elitzur/converters/avro/dynamic/dsl/AvroAccessorLogics.scala [75:91]


  private def getArrayAccessor(innerSchema: Schema, fieldTokens: AvroFieldTokens): BaseAccessor = {
    if (fieldTokens.rest.isDefined) {
      val recursiveResult = AvroObjMapper.getAvroAccessors(fieldTokens.rest.get, innerSchema)
      // innerOps represents the list of accessors to be applied to each element in an array
      val innerOps = recursiveResult.map(_.ops)
      // flattenFlag is true if one of the internal operation types is a map based operation
      val flattenFlag = getFlattenFlag(recursiveResult.map(_.ops))
      if (flattenFlag) {
        ArrayFlatmapAccessor(fieldTokens.field, innerOps)
      } else {
        ArrayMapAccessor(fieldTokens.field, innerOps)
      }
    } else {
      val headAccessor: BaseAccessor = mapToAccessors(innerSchema, fieldTokens).ops
      ArrayNoopAccessor(fieldTokens.field, List(headAccessor))
    }
  }