From 9ee4b8e1ec8bb9281cb4edeffb9654e7f0fef0ae Mon Sep 17 00:00:00 2001 From: Florian Cramer Date: Sat, 10 Apr 2021 22:47:08 +0200 Subject: [PATCH] #1561 - 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 02b85bc5..27b2d107 100644 --- a/src/main/java/org/springframework/hateoas/server/core/WebHandler.java +++ b/src/main/java/org/springframework/hateoas/server/core/WebHandler.java @@ -460,7 +460,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 ecc58736..e13a98a7 100644 --- a/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java +++ b/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java @@ -465,14 +465,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}"); } /**