From e205880e2fda4dfcac3a46a3e66655ac321a3fa6 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 19 Apr 2021 16:51:05 +0200 Subject: [PATCH] #1522 - 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..f60173b7 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, #1522 + 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 {} }