diff --git a/framework-docs/modules/ROOT/pages/web/webflux/controller/ann-validation.adoc b/framework-docs/modules/ROOT/pages/web/webflux/controller/ann-validation.adoc index 67fb1256a889..7b1a03a4db0d 100644 --- a/framework-docs/modules/ROOT/pages/web/webflux/controller/ann-validation.adoc +++ b/framework-docs/modules/ROOT/pages/web/webflux/controller/ann-validation.adoc @@ -65,64 +65,4 @@ The exception contains a list of ``ParameterValidationResult``s that group valid by method parameter. You can either iterate over those, or provide a visitor with callback methods by controller method parameter type: -[tabs] -====== -Java:: -+ -[source,java,indent=0,subs="verbatim,quotes"] ----- - HandlerMethodValidationException ex = ... ; - - ex.visitResults(new HandlerMethodValidationException.Visitor() { - - @Override - public void requestHeader(RequestHeader requestHeader, ParameterValidationResult result) { - // ... - } - - @Override - public void requestParam(@Nullable RequestParam requestParam, ParameterValidationResult result) { - // ... - } - - @Override - public void modelAttribute(@Nullable ModelAttribute modelAttribute, ParameterErrors errors) { - - // ... - - @Override - public void other(ParameterValidationResult result) { - // ... - } - }); ----- - -Kotlin:: -+ -[source,kotlin,indent=0,subs="verbatim,quotes"] ----- - // HandlerMethodValidationException - val ex - - ex.visitResults(object : HandlerMethodValidationException.Visitor { - - override fun requestHeader(requestHeader: RequestHeader, result: ParameterValidationResult) { - // ... - } - - override fun requestParam(requestParam: RequestParam?, result: ParameterValidationResult) { - // ... - } - - override fun modelAttribute(modelAttribute: ModelAttribute?, errors: ParameterErrors) { - // ... - } - - // ... - - override fun other(result: ParameterValidationResult) { - // ... - } - }) ----- -====== +include-code::./HandlerMethodValidationExceptionVisitor[tag=snippet,indent=0] \ No newline at end of file diff --git a/framework-docs/modules/ROOT/pages/web/webmvc/mvc-controller/ann-validation.adoc b/framework-docs/modules/ROOT/pages/web/webmvc/mvc-controller/ann-validation.adoc index 45e5c632f4b7..7acc33c94b26 100644 --- a/framework-docs/modules/ROOT/pages/web/webmvc/mvc-controller/ann-validation.adoc +++ b/framework-docs/modules/ROOT/pages/web/webmvc/mvc-controller/ann-validation.adoc @@ -65,64 +65,4 @@ The exception contains a list of ``ParameterValidationResult``s that group valid by method parameter. You can either iterate over those, or provide a visitor with callback methods by controller method parameter type: -[tabs] -====== -Java:: -+ -[source,java,indent=0,subs="verbatim,quotes"] ----- - HandlerMethodValidationException ex = ... ; - - ex.visitResults(new HandlerMethodValidationException.Visitor() { - - @Override - public void requestHeader(RequestHeader requestHeader, ParameterValidationResult result) { - // ... - } - - @Override - public void requestParam(@Nullable RequestParam requestParam, ParameterValidationResult result) { - // ... - } - - @Override - public void modelAttribute(@Nullable ModelAttribute modelAttribute, ParameterErrors errors) { - - // ... - - @Override - public void other(ParameterValidationResult result) { - // ... - } - }); ----- - -Kotlin:: -+ -[source,kotlin,indent=0,subs="verbatim,quotes"] ----- - // HandlerMethodValidationException - val ex - - ex.visitResults(object : HandlerMethodValidationException.Visitor { - - override fun requestHeader(requestHeader: RequestHeader, result: ParameterValidationResult) { - // ... - } - - override fun requestParam(requestParam: RequestParam?, result: ParameterValidationResult) { - // ... - } - - override fun modelAttribute(modelAttribute: ModelAttribute?, errors: ParameterErrors) { - // ... - } - - // ... - - override fun other(result: ParameterValidationResult) { - // ... - } - }) ----- -====== +include-code::./HandlerMethodValidationExceptionVisitor[tag=snippet,indent=0] \ No newline at end of file diff --git a/framework-docs/src/main/java/org/springframework/docs/web/webflux/controller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.java b/framework-docs/src/main/java/org/springframework/docs/web/webflux/controller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.java new file mode 100644 index 000000000000..c4ba2ec2e470 --- /dev/null +++ b/framework-docs/src/main/java/org/springframework/docs/web/webflux/controller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.java @@ -0,0 +1,74 @@ +package org.springframework.docs.web.webflux.controller.mvcannvalidation; + +import org.jspecify.annotations.Nullable; +import org.springframework.validation.method.ParameterErrors; +import org.springframework.validation.method.ParameterValidationResult; +import org.springframework.web.bind.annotation.CookieValue; +import org.springframework.web.bind.annotation.MatrixVariable; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.method.annotation.HandlerMethodValidationException; + +public class HandlerMethodValidationExceptionVisitor { + + static void main() { + // tag::snippet[] + HandlerMethodValidationException ex = /**/ new HandlerMethodValidationException(null); + + ex.visitResults(new HandlerMethodValidationException.Visitor() { + + @Override + public void requestHeader(RequestHeader requestHeader, ParameterValidationResult result) { + // ... + } + + @Override + public void requestParam(@Nullable RequestParam requestParam, ParameterValidationResult result) { + // ... + } + + @Override + public void modelAttribute(@Nullable ModelAttribute modelAttribute, ParameterErrors errors) { + // ... + } + + // @fold:on // ... + @Override + public void requestPart(RequestPart requestPart, ParameterErrors errors) { + + } + + @Override + public void cookieValue(CookieValue cookieValue, ParameterValidationResult result) { + + } + + @Override + public void matrixVariable(MatrixVariable matrixVariable, ParameterValidationResult result) { + + } + + @Override + public void pathVariable(PathVariable pathVariable, ParameterValidationResult result) { + + } + + @Override + public void requestBody(RequestBody requestBody, ParameterErrors errors) { + + } + // @fold:off + + @Override + public void other(ParameterValidationResult result) { + // ... + } + }); + // end::snippet[] + } + +} diff --git a/framework-docs/src/main/java/org/springframework/docs/web/webmvc/mvccontroller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.java b/framework-docs/src/main/java/org/springframework/docs/web/webmvc/mvccontroller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.java new file mode 100644 index 000000000000..aa354bfb86d4 --- /dev/null +++ b/framework-docs/src/main/java/org/springframework/docs/web/webmvc/mvccontroller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.java @@ -0,0 +1,74 @@ +package org.springframework.docs.web.webmvc.mvccontroller.mvcannvalidation; + +import org.jspecify.annotations.Nullable; +import org.springframework.validation.method.ParameterErrors; +import org.springframework.validation.method.ParameterValidationResult; +import org.springframework.web.bind.annotation.CookieValue; +import org.springframework.web.bind.annotation.MatrixVariable; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.method.annotation.HandlerMethodValidationException; + +public class HandlerMethodValidationExceptionVisitor { + + static void main() { + // tag::snippet[] + HandlerMethodValidationException ex = /**/ new HandlerMethodValidationException(null); + + ex.visitResults(new HandlerMethodValidationException.Visitor() { + + @Override + public void requestHeader(RequestHeader requestHeader, ParameterValidationResult result) { + // ... + } + + @Override + public void requestParam(@Nullable RequestParam requestParam, ParameterValidationResult result) { + // ... + } + + @Override + public void modelAttribute(@Nullable ModelAttribute modelAttribute, ParameterErrors errors) { + // ... + } + + // @fold:on // ... + @Override + public void requestPart(RequestPart requestPart, ParameterErrors errors) { + + } + + @Override + public void cookieValue(CookieValue cookieValue, ParameterValidationResult result) { + + } + + @Override + public void matrixVariable(MatrixVariable matrixVariable, ParameterValidationResult result) { + + } + + @Override + public void pathVariable(PathVariable pathVariable, ParameterValidationResult result) { + + } + + @Override + public void requestBody(RequestBody requestBody, ParameterErrors errors) { + + } + // @fold:off + + @Override + public void other(ParameterValidationResult result) { + // ... + } + }); + // end::snippet[] + } + +} diff --git a/framework-docs/src/main/kotlin/org/springframework/docs/web/webflux/controller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.kt b/framework-docs/src/main/kotlin/org/springframework/docs/web/webflux/controller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.kt new file mode 100644 index 000000000000..7995f17530c6 --- /dev/null +++ b/framework-docs/src/main/kotlin/org/springframework/docs/web/webflux/controller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.kt @@ -0,0 +1,80 @@ +package org.springframework.docs.web.webflux.controller.mvcannvalidation + +import org.springframework.context.MessageSourceResolvable +import org.springframework.validation.method.MethodValidationResult +import org.springframework.validation.method.ParameterErrors +import org.springframework.validation.method.ParameterValidationResult +import org.springframework.web.bind.annotation.* +import org.springframework.web.method.annotation.HandlerMethodValidationException +import java.lang.reflect.Method + +class HandlerMethodValidationExceptionVisitor { + + fun main() { + // tag::snippet[] + val ex: HandlerMethodValidationException = /**/ HandlerMethodValidationException(EmptyMethodValidationResult()) + + ex.visitResults(object : HandlerMethodValidationException.Visitor { + + override fun requestHeader(requestHeader: RequestHeader, result: ParameterValidationResult) { + // ... + } + + override fun requestParam(requestParam: RequestParam?, result: ParameterValidationResult) { + // ... + } + + override fun modelAttribute(modelAttribute: ModelAttribute?, errors: ParameterErrors) { + // ... + } + + // @fold:on // ... + override fun requestPart(requestPart: RequestPart, errors: ParameterErrors) { + } + + override fun cookieValue(cookieValue: CookieValue, result: ParameterValidationResult) { + } + + override fun matrixVariable(matrixVariable: MatrixVariable, result: ParameterValidationResult) { + } + + override fun pathVariable(pathVariable: PathVariable, result: ParameterValidationResult) { + } + + override fun requestBody(requestBody: RequestBody, errors: ParameterErrors) { + } + // @fold:off + + override fun other(result: ParameterValidationResult) { + // ... + } + }) + // end::snippet[] + } + + internal class EmptyMethodValidationResult : MethodValidationResult { + override fun getTarget(): Any { + TODO() + } + + override fun getMethod(): Method { + TODO() + } + + override fun isForReturnValue(): Boolean { + TODO() + } + + override fun getParameterValidationResults(): List { + TODO() + } + + override fun getCrossParameterValidationResults(): List { + TODO() + } + + override fun toString(): String { + TODO() + } + } +} \ No newline at end of file diff --git a/framework-docs/src/main/kotlin/org/springframework/docs/web/webmvc/mvccontroller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.kt b/framework-docs/src/main/kotlin/org/springframework/docs/web/webmvc/mvccontroller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.kt new file mode 100644 index 000000000000..cb43729b73ba --- /dev/null +++ b/framework-docs/src/main/kotlin/org/springframework/docs/web/webmvc/mvccontroller/mvcannvalidation/HandlerMethodValidationExceptionVisitor.kt @@ -0,0 +1,80 @@ +package org.springframework.docs.web.webmvc.mvccontroller.mvcannvalidation + +import org.springframework.context.MessageSourceResolvable +import org.springframework.validation.method.MethodValidationResult +import org.springframework.validation.method.ParameterErrors +import org.springframework.validation.method.ParameterValidationResult +import org.springframework.web.bind.annotation.* +import org.springframework.web.method.annotation.HandlerMethodValidationException +import java.lang.reflect.Method + +class HandlerMethodValidationExceptionVisitor { + + fun main() { + // tag::snippet[] + val ex: HandlerMethodValidationException = /**/ HandlerMethodValidationException(EmptyMethodValidationResult()) + + ex.visitResults(object : HandlerMethodValidationException.Visitor { + + override fun requestHeader(requestHeader: RequestHeader, result: ParameterValidationResult) { + // ... + } + + override fun requestParam(requestParam: RequestParam?, result: ParameterValidationResult) { + // ... + } + + override fun modelAttribute(modelAttribute: ModelAttribute?, errors: ParameterErrors) { + // ... + } + + // @fold:on // ... + override fun requestPart(requestPart: RequestPart, errors: ParameterErrors) { + } + + override fun cookieValue(cookieValue: CookieValue, result: ParameterValidationResult) { + } + + override fun matrixVariable(matrixVariable: MatrixVariable, result: ParameterValidationResult) { + } + + override fun pathVariable(pathVariable: PathVariable, result: ParameterValidationResult) { + } + + override fun requestBody(requestBody: RequestBody, errors: ParameterErrors) { + } + // @fold:off + + override fun other(result: ParameterValidationResult) { + // ... + } + }) + // end::snippet[] + } + + internal class EmptyMethodValidationResult : MethodValidationResult { + override fun getTarget(): Any { + TODO() + } + + override fun getMethod(): Method { + TODO() + } + + override fun isForReturnValue(): Boolean { + TODO() + } + + override fun getParameterValidationResults(): List { + TODO() + } + + override fun getCrossParameterValidationResults(): List { + TODO() + } + + override fun toString(): String { + TODO() + } + } +} \ No newline at end of file