From d7ac32a99d8aa78f69b2946cacbb0c85ad8be17c Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 19 Apr 2021 16:51:05 +0200 Subject: [PATCH] #1521 - Allow HATEOAS bootstrap without any default media type enabled. @EnableHypermediaSupport(types = {}) was not working anymore as the Comparator implementation working with the selected types rejected an empty list. We now do not reject that anymore to enable applications that solely work with third party media types. --- ...HypermediaMappingInformationComparator.java | 2 +- ...EnableHypermediaSupportIntegrationTest.java | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/config/HypermediaMappingInformationComparator.java b/src/main/java/org/springframework/hateoas/config/HypermediaMappingInformationComparator.java index f50fd01e..f49312fa 100644 --- a/src/main/java/org/springframework/hateoas/config/HypermediaMappingInformationComparator.java +++ b/src/main/java/org/springframework/hateoas/config/HypermediaMappingInformationComparator.java @@ -40,7 +40,7 @@ class HypermediaMappingInformationComparator implements Comparator mediaTypes) { - Assert.notEmpty(mediaTypes, "MediaTypes must not be empty!"); + Assert.notNull(mediaTypes, "MediaTypes must not be null!"); this.mediaTypes = mediaTypes; } diff --git a/src/test/java/org/springframework/hateoas/config/EnableHypermediaSupportIntegrationTest.java b/src/test/java/org/springframework/hateoas/config/EnableHypermediaSupportIntegrationTest.java index c14182a6..5d8428d5 100755 --- a/src/test/java/org/springframework/hateoas/config/EnableHypermediaSupportIntegrationTest.java +++ b/src/test/java/org/springframework/hateoas/config/EnableHypermediaSupportIntegrationTest.java @@ -351,13 +351,7 @@ class EnableHypermediaSupportIntegrationTest { * RepresentationModel -> uber, application/json, application/*+json * * hal-forms, uber, application/json, application/*+json - * - * - * - * - * */ - @Test void ordersMediaTypeIntegrationBasedOnConfiguration() { @@ -370,6 +364,14 @@ class EnableHypermediaSupportIntegrationTest { }); } + @Test // #1521 + void bootstrapsWithOutDefaultMediaTypeEnabled() { + + assertThatNoException().isThrownBy(() -> { + withServletContext(NoDefaultMediaTypes.class, context -> {}); + }); + } + private static void assertEntityLinksSetUp(ApplicationContext context) { assertThat(context.getBeansOfType(EntityLinks.class).values()) // @@ -588,4 +590,8 @@ class EnableHypermediaSupportIntegrationTest { static class MediaTypeOrdering { } + + @Configuration + @EnableHypermediaSupport(type = {}) + static class NoDefaultMediaTypes {} }