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 20e51956..50058fb7 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 @@ -45,7 +45,7 @@ public interface HalFormsOptions { * @param values must not be {@literal null}. * @return will never be {@literal null}. */ - @SuppressWarnings("unchecked") + @SafeVarargs public static Inline inline(T... values) { Assert.notNull(values, "Values must not be null!"); diff --git a/src/test/java/org/springframework/hateoas/mediatype/hal/forms/Jackson2HalFormsIntegrationTest.java b/src/test/java/org/springframework/hateoas/mediatype/hal/forms/Jackson2HalFormsIntegrationTest.java index 6daa9b4c..a49afe54 100644 --- a/src/test/java/org/springframework/hateoas/mediatype/hal/forms/Jackson2HalFormsIntegrationTest.java +++ b/src/test/java/org/springframework/hateoas/mediatype/hal/forms/Jackson2HalFormsIntegrationTest.java @@ -573,44 +573,6 @@ class Jackson2HalFormsIntegrationTest { .isEqualTo("My Prompt"); } - @Test - // #2257 - void rendersFullInlineOptions() { - Inline inline = HalFormsOptions.inline(Map.of("my-prompt-field", "foo","my-value-field", "bar")).withPromptField("my-prompt-field") - .withValueField("my-value-field") - .withMinItems(2L) - .withMaxItems(3L); - - DocumentContext result = JsonPath.parse(getCuriedObjectMapper().writeObject(inline)); - assertThat(result.read("$.inline[0].my-prompt-field", String.class)).isEqualTo("foo"); - assertThat(result.read("$.inline[0].my-value-field", String.class)).isEqualTo("bar"); - 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() { - Link link = Link.of("/foo{?bar}").withType(MediaType.APPLICATION_JSON_VALUE); - - Remote remote = HalFormsOptions.remote(link) - .withPromptField("my-prompt-field") - .withValueField("my-value-field") - .withMinItems(2L) - .withMaxItems(3L); - - DocumentContext result = JsonPath.parse(getCuriedObjectMapper().writeObject(remote)); - assertThat(result.read("$.link.href", String.class)).isEqualTo("/foo{?bar}"); - assertThat(result.read("$.link.type", String.class)).isEqualTo(MediaType.APPLICATION_JSON_VALUE); - assertThat(result.read("$.link.templated", boolean.class)).isTrue(); - 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 // #1483 void rendersRemoteOptions() { @@ -625,6 +587,47 @@ class Jackson2HalFormsIntegrationTest { assertThat(result.read("$.link.templated", boolean.class)).isTrue(); } + @Test // #2257 + void rendersFullInlineOptions() { + + var options = HalFormsOptions.inline(Map.of("my-prompt-field", "foo", "my-value-field", "bar")) + .withPromptField("my-prompt-field") + .withValueField("my-value-field") + .withMinItems(2L) + .withMaxItems(3L); + + var result = JsonPath.parse(getCuriedObjectMapper().writeObject(options)); + + assertThat(result.read("$.inline[0].my-prompt-field", String.class)).isEqualTo("foo"); + assertThat(result.read("$.inline[0].my-value-field", String.class)).isEqualTo("bar"); + 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() { + + var link = Link.of("/foo{?bar}").withType(MediaType.APPLICATION_JSON_VALUE); + + var options = HalFormsOptions.remote(link) + .withPromptField("my-prompt-field") + .withValueField("my-value-field") + .withMinItems(2L) + .withMaxItems(3L); + + var result = JsonPath.parse(getCuriedObjectMapper().writeObject(options)); + + assertThat(result.read("$.link.href", String.class)).isEqualTo("/foo{?bar}"); + assertThat(result.read("$.link.type", String.class)).isEqualTo(MediaType.APPLICATION_JSON_VALUE); + assertThat(result.read("$.link.templated", boolean.class)).isTrue(); + 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); + } + private void assertThatPathDoesNotExist(Object toMarshall, String path) throws Exception { String json = getCuriedObjectMapper().writeObject(toMarshall);