init
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
package shared.exceptions
|
||||
|
||||
class ChangeUsernameException(msg: String) : RuntimeException(msg) {
|
||||
}
|
4
src/main/kotlin/shared/exceptions/NotFoundException.kt
Normal file
4
src/main/kotlin/shared/exceptions/NotFoundException.kt
Normal file
@@ -0,0 +1,4 @@
|
||||
package shared.exceptions
|
||||
|
||||
class NotFoundException(msg: String) : RuntimeException(msg) {
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
package shared.validation
|
||||
|
||||
abstract class AbstractValidationHandler<T> : ValidationHandler<T> {
|
||||
private lateinit var nextHandler: ValidationHandler<T>
|
||||
|
||||
override fun setNext(handler: ValidationHandler<T>) {
|
||||
nextHandler = handler
|
||||
}
|
||||
|
||||
protected fun next(context: T) {
|
||||
if (::nextHandler.isInitialized) {
|
||||
nextHandler.validate(context)
|
||||
}
|
||||
}
|
||||
}
|
22
src/main/kotlin/shared/validation/ValidationChain.kt
Normal file
22
src/main/kotlin/shared/validation/ValidationChain.kt
Normal file
@@ -0,0 +1,22 @@
|
||||
package shared.validation
|
||||
|
||||
class ValidationChain<T> {
|
||||
private var firstHandler: ValidationHandler<T>? = null
|
||||
private var lastHandler: ValidationHandler<T>? = null
|
||||
|
||||
fun add(handler: ValidationHandler<T>): ValidationChain<T> {
|
||||
if (firstHandler == null) {
|
||||
firstHandler = handler
|
||||
lastHandler = handler
|
||||
} else {
|
||||
lastHandler?.setNext(handler)
|
||||
lastHandler = handler
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
fun validate(context: T) {
|
||||
firstHandler?.validate(context)
|
||||
?: throw IllegalStateException("验证链未初始化")
|
||||
}
|
||||
}
|
6
src/main/kotlin/shared/validation/ValidationHandler.kt
Normal file
6
src/main/kotlin/shared/validation/ValidationHandler.kt
Normal file
@@ -0,0 +1,6 @@
|
||||
package shared.validation
|
||||
|
||||
interface ValidationHandler<T> {
|
||||
fun validate(context: T)
|
||||
fun setNext(handler: ValidationHandler<T>)
|
||||
}
|
Reference in New Issue
Block a user