From 7cd5dc6120098bd8bee242f36d67a5185c58a332 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Tue, 12 Oct 2021 13:14:08 +0200 Subject: [PATCH] #1661 - Prevent IndexOutOfBoundException in WebConverters. We now skip the registration of the default media type if no hypermedia types are activated in the first place. We previously assumed there'd be at least one media type configuration registered. --- .../hateoas/config/WebConverters.java | 2 +- .../config/WebConvertersUnitTests.java | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/springframework/hateoas/config/WebConvertersUnitTests.java diff --git a/src/main/java/org/springframework/hateoas/config/WebConverters.java b/src/main/java/org/springframework/hateoas/config/WebConverters.java index fdbb8d21..125147a3 100644 --- a/src/main/java/org/springframework/hateoas/config/WebConverters.java +++ b/src/main/java/org/springframework/hateoas/config/WebConverters.java @@ -114,7 +114,7 @@ public class WebConverters { converter.registerObjectMappersForType(rootType, map -> map.putAll(mappers)); } - if (!includeGenericJsonTypes) { + if (!includeGenericJsonTypes || infos.isEmpty()) { return; } diff --git a/src/test/java/org/springframework/hateoas/config/WebConvertersUnitTests.java b/src/test/java/org/springframework/hateoas/config/WebConvertersUnitTests.java new file mode 100644 index 00000000..0545b5c9 --- /dev/null +++ b/src/test/java/org/springframework/hateoas/config/WebConvertersUnitTests.java @@ -0,0 +1,41 @@ +/* + * Copyright 2021 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.hateoas.config; + +import static org.assertj.core.api.Assertions.*; + +import java.util.Collections; + +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * Unit tests for {@link WebConverters}. + * + * @author Oliver Drotbohm + */ +class WebConvertersUnitTests { + + @Test // #1657 + void augmentsConvertersWithoutHypermediaInformationsRegistered() { + + WebConverters converters = WebConverters.of(new ObjectMapper(), Collections.emptyList()); + + assertThatNoException() // + .isThrownBy(() -> converters.augmentClient(Collections.emptyList())); + } +}