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
}