From 2307c365911046afb9038de0483479a6f47b01b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9da=20Housni=20Alaoui?= Date: Fri, 20 Feb 2026 15:54:11 +0100 Subject: [PATCH] Empty HAL-Forms options inline attribute should be serialized MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Réda Housni Alaoui --- .../mediatype/hal/forms/HalFormsOptions.java | 1 + .../HalFormsJacksonModuleIntegrationTest.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/main/java/org/springframework/hateoas/mediatype/hal/forms/HalFormsOptions.java b/src/main/java/org/springframework/hateoas/mediatype/hal/forms/HalFormsOptions.java index 941d70938..735c90983 100644 --- a/src/main/java/org/springframework/hateoas/mediatype/hal/forms/HalFormsOptions.java +++ b/src/main/java/org/springframework/hateoas/mediatype/hal/forms/HalFormsOptions.java @@ -309,6 +309,7 @@ private Inline(Collection values, @Nullable String promptRef, * @return */ @JsonProperty + @JsonInclude(Include.ALWAYS) public Collection getInline() { return inline; } diff --git a/src/test/java/org/springframework/hateoas/mediatype/hal/forms/HalFormsJacksonModuleIntegrationTest.java b/src/test/java/org/springframework/hateoas/mediatype/hal/forms/HalFormsJacksonModuleIntegrationTest.java index f9f3feb21..dab84b2cb 100644 --- a/src/test/java/org/springframework/hateoas/mediatype/hal/forms/HalFormsJacksonModuleIntegrationTest.java +++ b/src/test/java/org/springframework/hateoas/mediatype/hal/forms/HalFormsJacksonModuleIntegrationTest.java @@ -481,6 +481,27 @@ void rendersFullInlineOptions() { }); } + @Test // #2257 + void rendersEmptyInlineOptions() { + + var options = HalFormsOptions.inline() + .withPromptField("my-prompt-field") + .withValueField("my-value-field") + .withMinItems(2L) + .withMaxItems(3L); + + getCuriedMapper() + .assertSerializes(options) + .into(result -> { + + assertThat(result.read("$.inline", Collection.class)).isEmpty(); + assertThat(result.read("$.promptField", String.class)).isEqualTo("my-prompt-field"); + assertThat(result.read("$.valueField", String.class)).isEqualTo("my-value-field"); + assertThat(result.read("$.minItems", Long.class)).isEqualTo(2L); + assertThat(result.read("$.maxItems", Long.class)).isEqualTo(3L); + }); + } + @Test // #2257 void rendersFullRemoteOptions() {