src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt

changeset 209
c9c6abf167c7
parent 207
479dd7993ef9
child 210
37fbdcb422b7
     1.1 --- a/src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt	Tue Aug 03 12:22:10 2021 +0200
     1.2 +++ b/src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt	Tue Aug 03 13:41:32 2021 +0200
     1.3 @@ -37,6 +37,10 @@
     1.4  typealias MappingMethod = (HttpRequest, DataAccessObject) -> Unit
     1.5  typealias PathParameters = Map<String, String>
     1.6  
     1.7 +sealed interface ValidationResult<T>
     1.8 +class ValidationError<T>(val message: String): ValidationResult<T>
     1.9 +class ValidatedValue<T>(val result: T): ValidationResult<T>
    1.10 +
    1.11  class HttpRequest(
    1.12      val request: HttpServletRequest,
    1.13      val response: HttpServletResponse,
    1.14 @@ -155,6 +159,18 @@
    1.15      fun param(name: String): String? = request.getParameter(name)
    1.16      fun paramArray(name: String): Array<String> = request.getParameterValues(name) ?: emptyArray()
    1.17  
    1.18 +    fun <T> param(name: String, validator: (String?) -> (ValidationResult<T>), errorMessages: MutableList<String>): T? {
    1.19 +        return when (val result = validator(param(name))) {
    1.20 +            is ValidationError -> {
    1.21 +                errorMessages.add(i18n(result.message))
    1.22 +                null
    1.23 +            }
    1.24 +            is ValidatedValue -> {
    1.25 +                result.result
    1.26 +            }
    1.27 +        }
    1.28 +    }
    1.29 +
    1.30      private fun forward(jsp: String) {
    1.31          request.getRequestDispatcher(jspPath(jsp)).forward(request, response)
    1.32      }

mercurial