From 83496b78944269050373bb92bb2181e1b7c070e8 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 29 Nov 2017 18:40:49 -0500 Subject: [PATCH] Updates to RouteLocatorBuild API --- .../route/builder/RouteLocatorBuilder.java | 18 ++++++++++++++---- ...incipalNameKeyResolverIntegrationTests.java | 9 ++++----- .../websocket/WebSocketIntegrationTests.java | 5 ++--- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/builder/RouteLocatorBuilder.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/builder/RouteLocatorBuilder.java index 028f6c57..bc20fc4e 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/builder/RouteLocatorBuilder.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/builder/RouteLocatorBuilder.java @@ -19,6 +19,8 @@ package org.springframework.cloud.gateway.route.builder; import java.net.URI; import java.util.ArrayList; import java.util.List; +import java.util.UUID; +import java.util.function.Function; import org.springframework.cloud.gateway.route.Route; import org.springframework.cloud.gateway.route.RouteLocator; @@ -47,8 +49,12 @@ public class RouteLocatorBuilder { this.context = context; } - public PredicateSpec route(String id) { - return new RouteSpec(this).id(id); + public Builder route(String id, Function fn) { + return fn.apply(new RouteSpec(this).id(id)); + } + + public Builder route(Function fn) { + return fn.apply(new RouteSpec(this).randomId()); } private void add(Route route) { @@ -57,13 +63,13 @@ public class RouteLocatorBuilder { Builder uri(Route.Builder builder, String uri) { Route route = builder.uri(uri).build(); - routes.add(route); + add(route); return this; } Builder uri(Route.Builder builder, URI uri) { Route route = builder.uri(uri).build(); - routes.add(route); + add(route); return this; } @@ -90,6 +96,10 @@ public class RouteLocatorBuilder { return predicateBuilder(); } + public PredicateSpec randomId() { + return id(UUID.randomUUID().toString()); + } + private PredicateSpec predicateBuilder() { return new PredicateSpec(this.routeBuilder, this.builder); } diff --git a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/PrincipalNameKeyResolverIntegrationTests.java b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/PrincipalNameKeyResolverIntegrationTests.java index d44345ab..338976ec 100644 --- a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/PrincipalNameKeyResolverIntegrationTests.java +++ b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/PrincipalNameKeyResolverIntegrationTests.java @@ -93,11 +93,10 @@ public class PrincipalNameKeyResolverIntegrationTests { @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() - .route("protected-throttled") - .path("/myapi/**") - .requestRateLimiter(tuple().build()) - .prefixPath("/downstream") - .uri("http://localhost:"+port) + .route(r -> r.path("/myapi/**") + .requestRateLimiter(tuple().build()) + .prefixPath("/downstream") + .uri("http://localhost:"+port)) .build(); } diff --git a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/websocket/WebSocketIntegrationTests.java b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/websocket/WebSocketIntegrationTests.java index dbf6664c..caec5e3f 100644 --- a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/websocket/WebSocketIntegrationTests.java +++ b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/websocket/WebSocketIntegrationTests.java @@ -303,9 +303,8 @@ public class WebSocketIntegrationTests { @Bean public RouteLocator wsRouteLocator(RouteLocatorBuilder builder) { return builder.routes() - .route("testws") - .alwaysTrue() - .uri("ws://localhost:"+this.wsPort) + .route(r -> r.alwaysTrue() + .uri("ws://localhost:"+this.wsPort)) .build(); } }