diff --git a/src/main/java/org/springframework/cloud/gateway/handler/predicate/HeaderRoutePredicate.java b/src/main/java/org/springframework/cloud/gateway/handler/predicate/HeaderRoutePredicate.java index c87012fc..38c75820 100644 --- a/src/main/java/org/springframework/cloud/gateway/handler/predicate/HeaderRoutePredicate.java +++ b/src/main/java/org/springframework/cloud/gateway/handler/predicate/HeaderRoutePredicate.java @@ -3,7 +3,6 @@ package org.springframework.cloud.gateway.handler.predicate; import java.util.List; import java.util.function.Predicate; -import org.springframework.util.Assert; import org.springframework.web.server.ServerWebExchange; /** @@ -13,12 +12,12 @@ public class HeaderRoutePredicate implements RoutePredicate { @Override public Predicate apply(String header, String[] args) { + validate(args, 1); + String regexp = args[0]; + //TODO: caching can happen here return exchange -> { - Assert.isTrue(args != null && args.length == 1, - "args must have one entry"); - String regexp = args[0]; List values = exchange.getRequest().getHeaders().get(header); for (String value : values) { if (value.matches(regexp)) { diff --git a/src/main/java/org/springframework/cloud/gateway/handler/predicate/RoutePredicate.java b/src/main/java/org/springframework/cloud/gateway/handler/predicate/RoutePredicate.java index 0bdc223b..8a3e6765 100644 --- a/src/main/java/org/springframework/cloud/gateway/handler/predicate/RoutePredicate.java +++ b/src/main/java/org/springframework/cloud/gateway/handler/predicate/RoutePredicate.java @@ -2,6 +2,7 @@ package org.springframework.cloud.gateway.handler.predicate; import java.util.function.Predicate; +import org.springframework.util.Assert; import org.springframework.web.server.ServerWebExchange; /** @@ -10,4 +11,9 @@ import org.springframework.web.server.ServerWebExchange; public interface RoutePredicate { Predicate apply(String value, String[] args); + + default void validate(String[] args, int requiredSize) { + Assert.isTrue(args != null && args.length == requiredSize, + "args must have "+ requiredSize +" entry(s)"); + } }