diff --git a/spring-cloud-gateway-server/pom.xml b/spring-cloud-gateway-server/pom.xml
index 2a61283f..a13b407a 100644
--- a/spring-cloud-gateway-server/pom.xml
+++ b/spring-cloud-gateway-server/pom.xml
@@ -212,11 +212,6 @@
spring-cloud-test-support
test
-
- org.springframework.cloud
- spring-cloud-starter-stream-rabbit
- test
-
io.projectreactor
reactor-test
diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/AsyncPredicate.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/AsyncPredicate.java
index e15694eb..60277232 100644
--- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/AsyncPredicate.java
+++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/AsyncPredicate.java
@@ -77,8 +77,7 @@ public interface AsyncPredicate extends Function>, HasC
@Override
public void accept(Visitor visitor) {
- if (delegate instanceof GatewayPredicate) {
- GatewayPredicate gatewayPredicate = (GatewayPredicate) delegate;
+ if (delegate instanceof GatewayPredicate gatewayPredicate) {
gatewayPredicate.accept(visitor);
}
}
diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/predicate/CookieRoutePredicateFactory.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/predicate/CookieRoutePredicateFactory.java
index 0f017025..ded55566 100644
--- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/predicate/CookieRoutePredicateFactory.java
+++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/predicate/CookieRoutePredicateFactory.java
@@ -58,12 +58,7 @@ public class CookieRoutePredicateFactory extends AbstractRoutePredicateFactory cookie.getValue().matches(config.regexp));
}
@Override
diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/predicate/GatewayPredicate.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/predicate/GatewayPredicate.java
index c373296a..40001870 100644
--- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/predicate/GatewayPredicate.java
+++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/predicate/GatewayPredicate.java
@@ -47,8 +47,8 @@ public interface GatewayPredicate extends Predicate, HasConfi
static GatewayPredicate wrapIfNeeded(Predicate super ServerWebExchange> other) {
GatewayPredicate right;
- if (other instanceof GatewayPredicate) {
- right = (GatewayPredicate) other;
+ if (other instanceof GatewayPredicate gatewayPredicate) {
+ right = gatewayPredicate;
}
else {
right = new GatewayPredicateWrapper(other);
@@ -72,8 +72,7 @@ public interface GatewayPredicate extends Predicate, HasConfi
@Override
public void accept(Visitor visitor) {
- if (delegate instanceof GatewayPredicate) {
- GatewayPredicate gatewayPredicate = (GatewayPredicate) delegate;
+ if (delegate instanceof GatewayPredicate gatewayPredicate) {
gatewayPredicate.accept(visitor);
}
}
diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java
index fce1faee..c8545c68 100644
--- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java
+++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java
@@ -201,14 +201,10 @@ public class RouteDefinitionRouteLocator implements RouteLocator {
// this is a very rare case, but possible, just match all
return AsyncPredicate.from(exchange -> true);
}
- AsyncPredicate predicate = lookup(routeDefinition, predicates.get(0));
- for (PredicateDefinition andPredicate : predicates.subList(1, predicates.size())) {
- AsyncPredicate found = lookup(routeDefinition, andPredicate);
- predicate = predicate.and(found);
- }
-
- return predicate;
+ return predicates.stream()
+ .map(nextPredicate -> lookup(routeDefinition, nextPredicate))
+ .reduce(AsyncPredicate.from(exchange -> true), AsyncPredicate::and);
}
@SuppressWarnings("unchecked")