private def validateFieldAnnotations()

in scrooge-generator/src/main/scala/com/twitter/scrooge/backend/Generator.scala [103:129]


  private def validateFieldAnnotations(
    fieldType: FieldType,
    fieldAnnotations: scala.collection.immutable.Map[String, String]
  ): Unit = {
    @scala.annotation.tailrec
    def extractFieldTypes(fieldType: FieldType): Set[Class[_]] = {
      fieldType match {
        case at: AnnotatedFieldType => extractFieldTypes(at.unwrap)
        case TBool => Set(classOf[java.lang.Boolean], classOf[Boolean])
        case TByte => Set(classOf[java.lang.Byte], classOf[Byte])
        case TI16 => Set(classOf[java.lang.Short], classOf[Short])
        case TI32 => Set(classOf[java.lang.Integer], classOf[Int])
        case TI64 => Set(classOf[java.lang.Long], classOf[Long])
        case TDouble => Set(classOf[java.lang.Double], classOf[Double])
        case TString => Set(classOf[String])
        case TBinary => Set(classOf[ByteBuffer])
        case MapType(_, _, _) => Set(classOf[Map[_, _]])
        case SetType(_, _) => Set(classOf[Set[_]])
        case ListType(_, _) => Set(classOf[Seq[_]])
        case _ => Set.empty
      }
    }
    val fieldTypes: Set[Class[_]] = extractFieldTypes(fieldType)
    val violations = AnnotationValidator.validateAnnotations(fieldTypes, fieldAnnotations)
    if (violations.nonEmpty)
      throw new IllegalArgumentException(s"The annotation is invalid: ${violations.mkString(", ")}")
  }