Updates to RouteLocatorBuild API

This commit is contained in:
Spencer Gibb
2017-11-29 18:40:49 -05:00
parent 473c8fa77d
commit 83496b7894
3 changed files with 20 additions and 12 deletions

View File

@@ -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<PredicateSpec, Builder> fn) {
return fn.apply(new RouteSpec(this).id(id));
}
public Builder route(Function<PredicateSpec, Builder> 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);
}

View File

@@ -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();
}

View File

@@ -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();
}
}