Skip to content

Commit 721c40b

Browse files
committed
Add defaultVersion to set of supported versions
Closes gh-35755
1 parent 7555d0e commit 721c40b

File tree

4 files changed

+38
-16
lines changed

4 files changed

+38
-16
lines changed

spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ public DefaultApiVersionStrategy(
9090
this.detectSupportedVersions = detectSupportedVersions;
9191
this.supportedVersionPredicate = initSupportedVersionPredicate(supportedVersionPredicate);
9292
this.deprecationHandler = deprecationHandler;
93+
94+
if (defaultVersion != null) {
95+
addSupportedVersion(defaultVersion);
96+
}
9397
}
9498

9599
private Predicate<Comparable<?>> initSupportedVersionPredicate(@Nullable Predicate<Comparable<?>> predicate) {

spring-web/src/test/java/org/springframework/web/accept/DefaultApiVersionStrategiesTests.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void defaultVersionIsParsed() {
4646

4747
@Test
4848
void missingRequiredVersion() {
49-
assertThatThrownBy(() -> validateVersion(null, apiVersionStrategy()))
49+
assertThatThrownBy(() -> testValidate(null, apiVersionStrategy()))
5050
.isInstanceOf(MissingApiVersionException.class)
5151
.hasMessage("400 BAD_REQUEST \"API version is required.\"");
5252
}
@@ -56,12 +56,19 @@ void validateSupportedVersion() {
5656
String version = "1.2";
5757
DefaultApiVersionStrategy strategy = apiVersionStrategy();
5858
strategy.addSupportedVersion(version);
59-
validateVersion(version, strategy);
59+
testValidate(version, strategy);
60+
}
61+
62+
@Test
63+
void validateSupportedVersionForDefaultVersion() {
64+
String defaultVersion = "1.2";
65+
DefaultApiVersionStrategy strategy = apiVersionStrategy(defaultVersion);
66+
testValidate(defaultVersion, strategy);
6067
}
6168

6269
@Test
6370
void validateUnsupportedVersion() {
64-
assertThatThrownBy(() -> validateVersion("1.2", apiVersionStrategy()))
71+
assertThatThrownBy(() -> testValidate("1.2", apiVersionStrategy()))
6572
.isInstanceOf(InvalidApiVersionException.class)
6673
.hasMessage("400 BAD_REQUEST \"Invalid API version: '1.2.0'.\"");
6774
}
@@ -71,27 +78,27 @@ void validateDetectedVersion() {
7178
String version = "1.2";
7279
DefaultApiVersionStrategy strategy = apiVersionStrategy(null, true, null);
7380
strategy.addMappedVersion(version);
74-
validateVersion(version, strategy);
81+
testValidate(version, strategy);
7582
}
7683

7784
@Test
7885
void validateWhenDetectedVersionOff() {
7986
String version = "1.2";
8087
DefaultApiVersionStrategy strategy = apiVersionStrategy();
8188
strategy.addMappedVersion(version);
82-
assertThatThrownBy(() -> validateVersion(version, strategy)).isInstanceOf(InvalidApiVersionException.class);
89+
assertThatThrownBy(() -> testValidate(version, strategy)).isInstanceOf(InvalidApiVersionException.class);
8390
}
8491

8592
@Test
8693
void validateSupportedWithPredicate() {
8794
SemanticApiVersionParser.Version parsedVersion = parser.parseVersion("1.2");
88-
validateVersion("1.2", apiVersionStrategy(null, false, version -> version.equals(parsedVersion)));
95+
testValidate("1.2", apiVersionStrategy(null, false, version -> version.equals(parsedVersion)));
8996
}
9097

9198
@Test
9299
void validateUnsupportedWithPredicate() {
93100
DefaultApiVersionStrategy strategy = apiVersionStrategy(null, false, version -> version.equals("1.2"));
94-
assertThatThrownBy(() -> validateVersion("1.2", strategy)).isInstanceOf(InvalidApiVersionException.class);
101+
assertThatThrownBy(() -> testValidate("1.2", strategy)).isInstanceOf(InvalidApiVersionException.class);
95102
}
96103

97104
@Test
@@ -121,7 +128,7 @@ private static DefaultApiVersionStrategy apiVersionStrategy(
121128
null, defaultVersion, detectSupportedVersions, supportedVersionPredicate, null);
122129
}
123130

124-
private void validateVersion(@Nullable String version, DefaultApiVersionStrategy strategy) {
131+
private void testValidate(@Nullable String version, DefaultApiVersionStrategy strategy) {
125132
MockHttpServletRequest request = new MockHttpServletRequest();
126133
if (version != null) {
127134
request.setParameter("api-version", version);

spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ public DefaultApiVersionStrategy(
9292
this.detectSupportedVersions = detectSupportedVersions;
9393
this.supportedVersionPredicate = initSupportedVersionPredicate(supportedVersionPredicate);
9494
this.deprecationHandler = deprecationHandler;
95+
96+
if (defaultVersion != null) {
97+
addSupportedVersion(defaultVersion);
98+
}
9599
}
96100

97101
private Predicate<Comparable<?>> initSupportedVersionPredicate(@Nullable Predicate<Comparable<?>> predicate) {

spring-webflux/src/test/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategiesTests.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ void defaultVersionIsParsed() {
5050

5151
@Test
5252
void missingRequiredVersion() {
53-
assertThatThrownBy(() -> validateVersion(null, apiVersionStrategy()))
53+
assertThatThrownBy(() -> testValidate(null, apiVersionStrategy()))
5454
.isInstanceOf(MissingApiVersionException.class)
5555
.hasMessage("400 BAD_REQUEST \"API version is required.\"");
5656
}
@@ -60,12 +60,19 @@ void validateSupportedVersion() {
6060
String version = "1.2";
6161
DefaultApiVersionStrategy strategy = apiVersionStrategy();
6262
strategy.addSupportedVersion(version);
63-
validateVersion(version, strategy);
63+
testValidate(version, strategy);
64+
}
65+
66+
@Test
67+
void validateSupportedVersionForDefaultVersion() {
68+
String defaultVersion = "1.2";
69+
DefaultApiVersionStrategy strategy = apiVersionStrategy(defaultVersion, false, null);
70+
testValidate(defaultVersion, strategy);
6471
}
6572

6673
@Test
6774
void validateUnsupportedVersion() {
68-
assertThatThrownBy(() -> validateVersion("1.2", apiVersionStrategy()))
75+
assertThatThrownBy(() -> testValidate("1.2", apiVersionStrategy()))
6976
.isInstanceOf(InvalidApiVersionException.class)
7077
.hasMessage("400 BAD_REQUEST \"Invalid API version: '1.2.0'.\"");
7178
}
@@ -75,27 +82,27 @@ void validateDetectedVersion() {
7582
String version = "1.2";
7683
DefaultApiVersionStrategy strategy = apiVersionStrategy(null, true, null);
7784
strategy.addMappedVersion(version);
78-
validateVersion(version, strategy);
85+
testValidate(version, strategy);
7986
}
8087

8188
@Test
8289
void validateWhenDetectedVersionOff() {
8390
String version = "1.2";
8491
DefaultApiVersionStrategy strategy = apiVersionStrategy();
8592
strategy.addMappedVersion(version);
86-
assertThatThrownBy(() -> validateVersion(version, strategy)).isInstanceOf(InvalidApiVersionException.class);
93+
assertThatThrownBy(() -> testValidate(version, strategy)).isInstanceOf(InvalidApiVersionException.class);
8794
}
8895

8996
@Test
9097
void validateSupportedWithPredicate() {
9198
SemanticApiVersionParser.Version parsedVersion = parser.parseVersion("1.2");
92-
validateVersion("1.2", apiVersionStrategy(null, false, version -> version.equals(parsedVersion)));
99+
testValidate("1.2", apiVersionStrategy(null, false, version -> version.equals(parsedVersion)));
93100
}
94101

95102
@Test
96103
void validateUnsupportedWithPredicate() {
97104
DefaultApiVersionStrategy strategy = apiVersionStrategy(null, false, version -> version.equals("1.2"));
98-
assertThatThrownBy(() -> validateVersion("1.2", strategy)).isInstanceOf(InvalidApiVersionException.class);
105+
assertThatThrownBy(() -> testValidate("1.2", strategy)).isInstanceOf(InvalidApiVersionException.class);
99106
}
100107

101108
@Test
@@ -121,7 +128,7 @@ private static DefaultApiVersionStrategy apiVersionStrategy(
121128
parser, null, defaultVersion, detectSupportedVersions, supportedVersionPredicate, null);
122129
}
123130

124-
private void validateVersion(@Nullable String version, DefaultApiVersionStrategy strategy) {
131+
private void testValidate(@Nullable String version, DefaultApiVersionStrategy strategy) {
125132
MockServerHttpRequest.BaseBuilder<?> requestBuilder = MockServerHttpRequest.get("/");
126133
if (version != null) {
127134
requestBuilder.queryParam("api-version", version);

0 commit comments

Comments
 (0)