From a77c6e1593b551f7e82c58d3f7edcc07c647d205 Mon Sep 17 00:00:00 2001 From: Florian Cramer Date: Sat, 10 Apr 2021 22:47:08 +0200 Subject: [PATCH] #545 - Support for implicitly not required request parameters. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Handler method parameters annotated with @RequestParam(defaultValue = …) are implicitly not required and thus should still be advertised in the URI templated generated. Previously it was necessary to explicitly set @RequestParam(required = …) to false. Original pull request: #1511. Related ticket: #331. --- .../org/springframework/hateoas/server/core/WebHandler.java | 2 +- .../hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/server/core/WebHandler.java b/src/main/java/org/springframework/hateoas/server/core/WebHandler.java index 15d961c9..bde984de 100644 --- a/src/main/java/org/springframework/hateoas/server/core/WebHandler.java +++ b/src/main/java/org/springframework/hateoas/server/core/WebHandler.java @@ -474,7 +474,7 @@ public class WebHandler { RequestParam annotation = parameter.getParameterAnnotation(RequestParam.class); - if (!(annotation != null && annotation.required()) || parameter.isOptional()) { + if (!isRequired() || parameter.isOptional()) { return SKIP_VALUE; } diff --git a/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java b/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java index 19ae9d8e..ca8de0c1 100644 --- a/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java +++ b/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java @@ -471,14 +471,14 @@ class WebMvcLinkBuilderUnitTest extends TestUtils { } /** - * @see #331 + * @see #331, #545 */ @Test void linksToMethodWithRequestParamImplicitlySetToFalse() { Link link = linkTo(methodOn(ControllerWithMethods.class).methodForOptionalSizeWithDefaultValue(null)).withSelfRel(); - assertThat(link.getHref()).endsWith("/bar"); + assertThat(link.getHref()).endsWith("/bar{?size}"); } /**