diff --git a/src/main/java/org/springframework/hateoas/mediatype/hal/HalLinkRelation.java b/src/main/java/org/springframework/hateoas/mediatype/hal/HalLinkRelation.java index d62069ce..0cd1c484 100644 --- a/src/main/java/org/springframework/hateoas/mediatype/hal/HalLinkRelation.java +++ b/src/main/java/org/springframework/hateoas/mediatype/hal/HalLinkRelation.java @@ -174,6 +174,16 @@ public class HalLinkRelation implements LinkRelation, MessageSourceResolvable { .toArray(String[]::new); } + /* + * (non-Javadoc) + * @see org.springframework.context.MessageSourceResolvable#getDefaultMessage() + */ + @Override + @org.springframework.lang.NonNull + public String getDefaultMessage() { + return ""; + } + /** * Simple builder interface to easily create multiple {@link HalLinkRelation}s for a single curie. * diff --git a/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java b/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java index c1b22b5a..7a26649d 100644 --- a/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java +++ b/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java @@ -965,8 +965,8 @@ public class Jackson2HalModule extends SimpleModule { return link; } - @JsonInclude(Include.NON_NULL) @Nullable + @JsonInclude(Include.NON_EMPTY) public String getTitle() { return title; } diff --git a/src/test/java/org/springframework/hateoas/mediatype/hal/Jackson2HalIntegrationTest.java b/src/test/java/org/springframework/hateoas/mediatype/hal/Jackson2HalIntegrationTest.java index 2344c9a4..07cc9813 100755 --- a/src/test/java/org/springframework/hateoas/mediatype/hal/Jackson2HalIntegrationTest.java +++ b/src/test/java/org/springframework/hateoas/mediatype/hal/Jackson2HalIntegrationTest.java @@ -495,6 +495,27 @@ public class Jackson2HalIntegrationTest extends AbstractJackson2MarshallingInteg .isEqualTo("{\"_links\":{\"foo\":[{\"href\":\"/some-href\"}]}}"); } + @Test // #1019 + void doesNotRenderTitleForEmptyString() throws Exception { + + Link link = new Link("/some-href", "foo"); + + assertThat(mapper.writeValueAsString(new Jackson2HalModule.HalLink(link, ""))) // + .isEqualTo("{\"href\":\"/some-href\"}"); + } + + @Test // #1019 + void resolvesMissingHalLinkRelationToEmptyString() throws Exception { + + HalLinkRelation relation = HalLinkRelation.of(LinkRelation.of("someRel")); + + MessageSourceAccessor accessor = new MessageSourceAccessor(new StaticMessageSource()); + + assertThatCode(() -> { + assertThat(accessor.getMessage(relation)).isEqualTo(""); + }).doesNotThrowAnyException(); + } + private void verifyResolvedTitle(String resourceBundleKey) throws Exception { LocaleContextHolder.setLocale(Locale.US);