diff --git a/spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java b/spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java index ab92cbb0561..2e29b9d8ae6 100644 --- a/spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java +++ b/spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java @@ -90,6 +90,10 @@ public class DefaultApiVersionStrategy implements ApiVersionStrategy { this.detectSupportedVersions = detectSupportedVersions; this.supportedVersionPredicate = initSupportedVersionPredicate(supportedVersionPredicate); this.deprecationHandler = deprecationHandler; + + if (defaultVersion != null) { + addSupportedVersion(defaultVersion); + } } private Predicate> initSupportedVersionPredicate(@Nullable Predicate> predicate) { diff --git a/spring-web/src/test/java/org/springframework/web/accept/DefaultApiVersionStrategiesTests.java b/spring-web/src/test/java/org/springframework/web/accept/DefaultApiVersionStrategiesTests.java index be1597479f9..4bf44c79374 100644 --- a/spring-web/src/test/java/org/springframework/web/accept/DefaultApiVersionStrategiesTests.java +++ b/spring-web/src/test/java/org/springframework/web/accept/DefaultApiVersionStrategiesTests.java @@ -46,7 +46,7 @@ public class DefaultApiVersionStrategiesTests { @Test void missingRequiredVersion() { - assertThatThrownBy(() -> validateVersion(null, apiVersionStrategy())) + assertThatThrownBy(() -> testValidate(null, apiVersionStrategy())) .isInstanceOf(MissingApiVersionException.class) .hasMessage("400 BAD_REQUEST \"API version is required.\""); } @@ -56,12 +56,19 @@ public class DefaultApiVersionStrategiesTests { String version = "1.2"; DefaultApiVersionStrategy strategy = apiVersionStrategy(); strategy.addSupportedVersion(version); - validateVersion(version, strategy); + testValidate(version, strategy); + } + + @Test + void validateSupportedVersionForDefaultVersion() { + String defaultVersion = "1.2"; + DefaultApiVersionStrategy strategy = apiVersionStrategy(defaultVersion); + testValidate(defaultVersion, strategy); } @Test void validateUnsupportedVersion() { - assertThatThrownBy(() -> validateVersion("1.2", apiVersionStrategy())) + assertThatThrownBy(() -> testValidate("1.2", apiVersionStrategy())) .isInstanceOf(InvalidApiVersionException.class) .hasMessage("400 BAD_REQUEST \"Invalid API version: '1.2.0'.\""); } @@ -71,7 +78,7 @@ public class DefaultApiVersionStrategiesTests { String version = "1.2"; DefaultApiVersionStrategy strategy = apiVersionStrategy(null, true, null); strategy.addMappedVersion(version); - validateVersion(version, strategy); + testValidate(version, strategy); } @Test @@ -79,19 +86,19 @@ public class DefaultApiVersionStrategiesTests { String version = "1.2"; DefaultApiVersionStrategy strategy = apiVersionStrategy(); strategy.addMappedVersion(version); - assertThatThrownBy(() -> validateVersion(version, strategy)).isInstanceOf(InvalidApiVersionException.class); + assertThatThrownBy(() -> testValidate(version, strategy)).isInstanceOf(InvalidApiVersionException.class); } @Test void validateSupportedWithPredicate() { SemanticApiVersionParser.Version parsedVersion = parser.parseVersion("1.2"); - validateVersion("1.2", apiVersionStrategy(null, false, version -> version.equals(parsedVersion))); + testValidate("1.2", apiVersionStrategy(null, false, version -> version.equals(parsedVersion))); } @Test void validateUnsupportedWithPredicate() { DefaultApiVersionStrategy strategy = apiVersionStrategy(null, false, version -> version.equals("1.2")); - assertThatThrownBy(() -> validateVersion("1.2", strategy)).isInstanceOf(InvalidApiVersionException.class); + assertThatThrownBy(() -> testValidate("1.2", strategy)).isInstanceOf(InvalidApiVersionException.class); } @Test @@ -121,7 +128,7 @@ public class DefaultApiVersionStrategiesTests { null, defaultVersion, detectSupportedVersions, supportedVersionPredicate, null); } - private void validateVersion(@Nullable String version, DefaultApiVersionStrategy strategy) { + private void testValidate(@Nullable String version, DefaultApiVersionStrategy strategy) { MockHttpServletRequest request = new MockHttpServletRequest(); if (version != null) { request.setParameter("api-version", version); diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java b/spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java index d2dac706b69..da641e2e14b 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java @@ -92,6 +92,10 @@ public class DefaultApiVersionStrategy implements ApiVersionStrategy { this.detectSupportedVersions = detectSupportedVersions; this.supportedVersionPredicate = initSupportedVersionPredicate(supportedVersionPredicate); this.deprecationHandler = deprecationHandler; + + if (defaultVersion != null) { + addSupportedVersion(defaultVersion); + } } private Predicate> initSupportedVersionPredicate(@Nullable Predicate> predicate) { diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategiesTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategiesTests.java index 377cc2f8704..1b46a2bbb0a 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategiesTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategiesTests.java @@ -50,7 +50,7 @@ public class DefaultApiVersionStrategiesTests { @Test void missingRequiredVersion() { - assertThatThrownBy(() -> validateVersion(null, apiVersionStrategy())) + assertThatThrownBy(() -> testValidate(null, apiVersionStrategy())) .isInstanceOf(MissingApiVersionException.class) .hasMessage("400 BAD_REQUEST \"API version is required.\""); } @@ -60,12 +60,19 @@ public class DefaultApiVersionStrategiesTests { String version = "1.2"; DefaultApiVersionStrategy strategy = apiVersionStrategy(); strategy.addSupportedVersion(version); - validateVersion(version, strategy); + testValidate(version, strategy); + } + + @Test + void validateSupportedVersionForDefaultVersion() { + String defaultVersion = "1.2"; + DefaultApiVersionStrategy strategy = apiVersionStrategy(defaultVersion, false, null); + testValidate(defaultVersion, strategy); } @Test void validateUnsupportedVersion() { - assertThatThrownBy(() -> validateVersion("1.2", apiVersionStrategy())) + assertThatThrownBy(() -> testValidate("1.2", apiVersionStrategy())) .isInstanceOf(InvalidApiVersionException.class) .hasMessage("400 BAD_REQUEST \"Invalid API version: '1.2.0'.\""); } @@ -75,7 +82,7 @@ public class DefaultApiVersionStrategiesTests { String version = "1.2"; DefaultApiVersionStrategy strategy = apiVersionStrategy(null, true, null); strategy.addMappedVersion(version); - validateVersion(version, strategy); + testValidate(version, strategy); } @Test @@ -83,19 +90,19 @@ public class DefaultApiVersionStrategiesTests { String version = "1.2"; DefaultApiVersionStrategy strategy = apiVersionStrategy(); strategy.addMappedVersion(version); - assertThatThrownBy(() -> validateVersion(version, strategy)).isInstanceOf(InvalidApiVersionException.class); + assertThatThrownBy(() -> testValidate(version, strategy)).isInstanceOf(InvalidApiVersionException.class); } @Test void validateSupportedWithPredicate() { SemanticApiVersionParser.Version parsedVersion = parser.parseVersion("1.2"); - validateVersion("1.2", apiVersionStrategy(null, false, version -> version.equals(parsedVersion))); + testValidate("1.2", apiVersionStrategy(null, false, version -> version.equals(parsedVersion))); } @Test void validateUnsupportedWithPredicate() { DefaultApiVersionStrategy strategy = apiVersionStrategy(null, false, version -> version.equals("1.2")); - assertThatThrownBy(() -> validateVersion("1.2", strategy)).isInstanceOf(InvalidApiVersionException.class); + assertThatThrownBy(() -> testValidate("1.2", strategy)).isInstanceOf(InvalidApiVersionException.class); } @Test @@ -121,7 +128,7 @@ public class DefaultApiVersionStrategiesTests { parser, null, defaultVersion, detectSupportedVersions, supportedVersionPredicate, null); } - private void validateVersion(@Nullable String version, DefaultApiVersionStrategy strategy) { + private void testValidate(@Nullable String version, DefaultApiVersionStrategy strategy) { MockServerHttpRequest.BaseBuilder requestBuilder = MockServerHttpRequest.get("/"); if (version != null) { requestBuilder.queryParam("api-version", version);