- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
@JvmInline
value class Code(val value: Short) {
companion object {
fun from(value: Number): CurrencyCode {
checkValid(value)
return CurrencyCode(value.toShort())
}
private fun checkValid(value: Number) {
val targetValue = value.toDouble()
val isValueInvalid = floor(targetValue) != targetValue
|| targetValue < 0
|| targetValue > Short.MAX_VALUE
if (isValueInvalid) {
throw DomainRuleViolationException(
"Code must be of 'short' type, greater than 0 and lower than ${Short.MAX_VALUE}. Provided: [$value]"
)
}
}
}
init {
checkValid(value)
}
}
Валидация данных приходящих в контроллер. При этом в проекте существует Эксепшнхендлер на неверный инпут от пользователя, который отлично работает еще во время десерелизации запроса.