private[this] def applyPropertyNamingStrategy()

in util-jackson/src/main/scala/com/twitter/util/jackson/caseclass/CaseClassDeserializer.scala [72:119]


  private[this] def applyPropertyNamingStrategy(
    config: DeserializationConfig,
    fieldName: String
  ): String =
    config.getPropertyNamingStrategy.nameForField(config, null, fieldName)

  // Validate `Constraint` annotations for all fields.
  def executeFieldValidations(
    validatorOption: Option[ScalaValidator],
    executableDescriptorOption: Option[ExecutableDescriptor],
    config: DeserializationConfig,
    constructorValues: Array[Object],
    fields: Array[CaseClassField]
  ): Seq[CaseClassFieldMappingException] = (validatorOption, executableDescriptorOption) match {
    case (Some(validator), Some(executableDescriptor)) =>
      val violations: Set[ConstraintViolation[Any]] =
        validator.forExecutables
          .validateExecutableParameters[Any](
            executableDescriptor,
            constructorValues.asInstanceOf[Array[Any]],
            fields.map(_.name)
          )
      if (violations.nonEmpty) {
        val results = mutable.ListBuffer[CaseClassFieldMappingException]()
        val iterator = violations.iterator
        while (iterator.hasNext) {
          val violation: ConstraintViolation[Any] = iterator.next()
          results.append(
            CaseClassFieldMappingException(
              CaseClassFieldMappingException.PropertyPath.leaf(
                applyPropertyNamingStrategy(config, violation.getPropertyPath.getLeafNode.toString)
              ),
              CaseClassFieldMappingException.Reason(
                message = violation.getMessage,
                detail = ValidationError(
                  violation,
                  CaseClassFieldMappingException.ValidationError.Field,
                  violation.getDynamicPayload(classOf[Payload])
                )
              )
            )
          )
        }
        results.toSeq
      } else Seq.empty[CaseClassFieldMappingException]
    case _ =>
      Seq.empty[CaseClassFieldMappingException]
  }