override def isValid()

in validation/src/main/scala/com/twitter/finatra/validation/constraints/SizeConstraintValidator.scala [23:47]


  override def isValid(
    obj: Any,
    constraintValidatorContext: ConstraintValidatorContext
  ): Boolean = {
    val size = obj match {
      case arrayValue: Array[_] => arrayValue.length
      case mapValue: Map[_, _] => mapValue.size
      case traversableValue: Iterable[_] => traversableValue.size
      case iterableWrapper: java.util.Collection[_] => iterableWrapper.size()
      case str: String => str.length
      case _ =>
        throw new UnexpectedTypeException(
          s"Class [${obj.getClass.getName}] is not supported by ${this.getClass.getName}")
    }

    val valid = isValid(size.toLong, minValue, maxValue)
    if (!valid) {
      TwitterConstraintValidatorContext
        .withDynamicPayload(
          ErrorCode.SizeOutOfRange(java.lang.Integer.valueOf(size), minValue, maxValue))
        .withMessageTemplate(s"size [${size.toString}] is not between $minValue and $maxValue")
        .addConstraintViolation(constraintValidatorContext)
    }
    valid
  }