Merge branch '2.2.x'
This commit is contained in:
@@ -158,7 +158,7 @@ public class RetryGatewayFilterFactory extends AbstractGatewayFilterFactory<Retr
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return filterToStringCreator(RetryGatewayFilterFactory.this).append("retries", retryConfig.getRetries())
|
||||
return filterToStringCreator(RetryGatewayFilterFactory.this).append("routeId", retryConfig.getRouteId()).append("retries", retryConfig.getRetries())
|
||||
.append("series", retryConfig.getSeries()).append("statuses", retryConfig.getStatuses())
|
||||
.append("methods", retryConfig.getMethods()).append("exceptions", retryConfig.getExceptions())
|
||||
.toString();
|
||||
|
||||
@@ -169,7 +169,7 @@ public class RouteDefinitionRouteLocator implements RouteLocator {
|
||||
// TODO: support option to apply defaults after route specific filters?
|
||||
if (!this.gatewayProperties.getDefaultFilters().isEmpty()) {
|
||||
filters.addAll(
|
||||
loadGatewayFilters(DEFAULT_FILTERS, new ArrayList<>(this.gatewayProperties.getDefaultFilters())));
|
||||
loadGatewayFilters(routeDefinition.getId(), new ArrayList<>(this.gatewayProperties.getDefaultFilters())));
|
||||
}
|
||||
|
||||
if (!routeDefinition.getFilters().isEmpty()) {
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFac
|
||||
import org.springframework.cloud.gateway.filter.factory.AddResponseHeaderGatewayFilterFactory;
|
||||
import org.springframework.cloud.gateway.filter.factory.GatewayFilterFactory;
|
||||
import org.springframework.cloud.gateway.filter.factory.RemoveResponseHeaderGatewayFilterFactory;
|
||||
import org.springframework.cloud.gateway.filter.factory.RetryGatewayFilterFactory;
|
||||
import org.springframework.cloud.gateway.handler.predicate.HostRoutePredicateFactory;
|
||||
import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
|
||||
import org.springframework.cloud.gateway.handler.predicate.RoutePredicateFactory;
|
||||
@@ -108,6 +109,43 @@ public class RouteDefinitionRouteLocatorTests {
|
||||
}).expectComplete().verify();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void contextLoadsAndApplyRouteIdToRetryFilter() {
|
||||
List<RoutePredicateFactory> predicates = Arrays
|
||||
.asList(new HostRoutePredicateFactory());
|
||||
List<GatewayFilterFactory> gatewayFilterFactories = Arrays.asList(
|
||||
new RetryGatewayFilterFactory(),
|
||||
new AddResponseHeaderGatewayFilterFactory());
|
||||
GatewayProperties gatewayProperties = new GatewayProperties();
|
||||
gatewayProperties.setDefaultFilters(Arrays.asList(new FilterDefinition("Retry")));
|
||||
gatewayProperties.setRoutes(Arrays.asList(new RouteDefinition() {
|
||||
{
|
||||
setId("foo");
|
||||
setUri(URI.create("https://foo.example.com"));
|
||||
setPredicates(
|
||||
Arrays.asList(new PredicateDefinition("Host=*.example.com")));
|
||||
setFilters(Arrays.asList(
|
||||
new FilterDefinition("AddResponseHeader=X-Response-Foo, Bar")));
|
||||
}
|
||||
}));
|
||||
|
||||
PropertiesRouteDefinitionLocator routeDefinitionLocator = new PropertiesRouteDefinitionLocator(
|
||||
gatewayProperties);
|
||||
@SuppressWarnings("deprecation")
|
||||
RouteDefinitionRouteLocator routeDefinitionRouteLocator = new RouteDefinitionRouteLocator(
|
||||
new CompositeRouteDefinitionLocator(Flux.just(routeDefinitionLocator)),
|
||||
predicates, gatewayFilterFactories, gatewayProperties,
|
||||
new ConfigurationService());
|
||||
|
||||
StepVerifier.create(routeDefinitionRouteLocator.getRoutes()).assertNext(route -> {
|
||||
List<GatewayFilter> filters = route.getFilters();
|
||||
assertThat(filters).hasSize(2);
|
||||
assertThat(filters.get(0).toString()).contains("routeId = 'foo'");
|
||||
assertThat(getFilterClassName(filters.get(0))).contains("Retry");
|
||||
assertThat(getFilterClassName(filters.get(1))).contains("AddResponseHeader");
|
||||
}).expectComplete().verify();
|
||||
}
|
||||
|
||||
private List<RouteDefinition> containsInvalidRoutes() {
|
||||
RouteDefinition foo = new RouteDefinition();
|
||||
foo.setId("foo");
|
||||
|
||||
Reference in New Issue
Block a user