Skip to content

Commit 31b149d

Browse files
committed
Updates for new API Version validation predicate
1 parent fa511d4 commit 31b149d

File tree

4 files changed

+10
-114
lines changed

4 files changed

+10
-114
lines changed

spring-cloud-gateway-server-webflux/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@
171171
import org.springframework.cloud.gateway.route.RouteRefreshListener;
172172
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
173173
import org.springframework.cloud.gateway.support.ConfigurationService;
174-
import org.springframework.cloud.gateway.support.GatewayApiVersionStrategy;
175174
import org.springframework.cloud.gateway.support.StringToZonedDateTimeConverter;
176175
import org.springframework.cloud.gateway.support.config.KeyValueConverter;
177176
import org.springframework.context.ApplicationEventPublisher;
@@ -198,6 +197,7 @@
198197
import org.springframework.web.reactive.accept.ApiVersionDeprecationHandler;
199198
import org.springframework.web.reactive.accept.ApiVersionResolver;
200199
import org.springframework.web.reactive.accept.ApiVersionStrategy;
200+
import org.springframework.web.reactive.accept.DefaultApiVersionStrategy;
201201
import org.springframework.web.reactive.accept.MediaTypeParamApiVersionResolver;
202202
import org.springframework.web.reactive.accept.PathApiVersionResolver;
203203
import org.springframework.web.reactive.socket.client.ReactorNettyWebSocketClient;
@@ -775,11 +775,13 @@ public GzipMessageBodyResolver gzipMessageBodyResolver() {
775775
}
776776

777777
@Bean
778-
public GatewayServerWebfluxBeanPostProcessor gatewayServerWebfluxBeanPostProcessor(ObjectProvider<WebFluxProperties> properties,
778+
public GatewayServerWebfluxBeanPostProcessor gatewayServerWebfluxBeanPostProcessor(
779+
ObjectProvider<WebFluxProperties> properties,
779780
ObjectProvider<ApiVersionDeprecationHandler> deprecationHandlerProvider,
780781
ObjectProvider<ApiVersionParser<?>> versionParserProvider,
781782
ObjectProvider<ApiVersionResolver> versionResolvers) {
782-
return new GatewayServerWebfluxBeanPostProcessor(properties.getIfAvailable(WebFluxProperties::new).getApiversion(),
783+
return new GatewayServerWebfluxBeanPostProcessor(
784+
properties.getIfAvailable(WebFluxProperties::new).getApiversion(),
783785
deprecationHandlerProvider.getIfAvailable(), versionParserProvider.getIfAvailable(),
784786
versionResolvers.orderedStream().toList());
785787
}
@@ -1022,8 +1024,9 @@ public GatewayServerWebfluxBeanPostProcessor(Apiversion versionProperties,
10221024
if (detectSupported == null) {
10231025
detectSupported = true;
10241026
}
1025-
GatewayApiVersionStrategy strategy = new GatewayApiVersionStrategy(versionResolvers, versionParser,
1026-
required, versionProperties.getDefaultVersion(), detectSupported, deprecationHandler);
1027+
DefaultApiVersionStrategy strategy = new DefaultApiVersionStrategy(versionResolvers, versionParser,
1028+
required, versionProperties.getDefaultVersion(), detectSupported, comparable -> true,
1029+
deprecationHandler);
10271030
if (!CollectionUtils.isEmpty(versionProperties.getSupported())) {
10281031
strategy.addSupportedVersion(versionProperties.getSupported().toArray(new String[0]));
10291032
}

spring-cloud-gateway-server-webflux/src/main/java/org/springframework/cloud/gateway/support/GatewayApiVersionStrategy.java

Lines changed: 0 additions & 82 deletions
This file was deleted.

spring-cloud-gateway-server-webflux/src/test/java/org/springframework/cloud/gateway/handler/predicate/VersionRoutePredicateFactoryTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ private static ServerWebExchange exchange(String version) {
5555

5656
static DefaultApiVersionStrategy apiVersionStrategy() {
5757
return new DefaultApiVersionStrategy(List.of(exchange -> null), new SemanticApiVersionParser(), true, null,
58-
false, null);
58+
false, null, null);
5959
}
6060

6161
}

spring-cloud-gateway-server-webmvc/src/main/java/org/springframework/cloud/gateway/server/mvc/GatewayServerMvcAutoConfiguration.java

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.util.List;
2121
import java.util.Map;
2222

23-
import jakarta.servlet.http.HttpServletRequest;
2423
import org.jspecify.annotations.Nullable;
2524

2625
import org.springframework.beans.BeansException;
@@ -83,9 +82,7 @@
8382
import org.springframework.web.accept.ApiVersionResolver;
8483
import org.springframework.web.accept.ApiVersionStrategy;
8584
import org.springframework.web.accept.DefaultApiVersionStrategy;
86-
import org.springframework.web.accept.InvalidApiVersionException;
8785
import org.springframework.web.accept.MediaTypeParamApiVersionResolver;
88-
import org.springframework.web.accept.MissingApiVersionException;
8986
import org.springframework.web.accept.PathApiVersionResolver;
9087
import org.springframework.web.accept.QueryApiVersionResolver;
9188
import org.springframework.web.accept.SemanticApiVersionParser;
@@ -365,29 +362,7 @@ public GatewayApiVersionStrategy(List<ApiVersionResolver> versionResolvers, ApiV
365362
boolean versionRequired, @Nullable String defaultVersion, boolean detectSupportedVersions,
366363
@Nullable ApiVersionDeprecationHandler deprecationHandler) {
367364
super(versionResolvers, versionParser, versionRequired, defaultVersion, detectSupportedVersions,
368-
deprecationHandler);
369-
}
370-
371-
@Override
372-
public @Nullable Comparable<?> resolveParseAndValidateVersion(HttpServletRequest request) {
373-
try {
374-
return super.resolveParseAndValidateVersion(request);
375-
}
376-
catch (InvalidApiVersionException e) {
377-
// ignore, so gateway will 404, not 400
378-
return null;
379-
}
380-
}
381-
382-
@Override
383-
public void validateVersion(@Nullable Comparable<?> requestVersion, HttpServletRequest request)
384-
throws MissingApiVersionException, InvalidApiVersionException {
385-
try {
386-
super.validateVersion(requestVersion, request);
387-
}
388-
catch (InvalidApiVersionException e) {
389-
// ignore, so gateway will 404, not 400
390-
}
365+
comparable -> true, deprecationHandler);
391366
}
392367

393368
}

0 commit comments

Comments
 (0)