From 6189f5f11228a4c61a77df9f8409459fefac48d4 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 20 Jan 2017 18:51:11 -0700 Subject: [PATCH] add validate --- .../gateway/handler/predicate/HeaderRoutePredicate.java | 7 +++---- .../cloud/gateway/handler/predicate/RoutePredicate.java | 6 ++++++ 2 files changed, 9 insertions(+), 4 deletions(-) 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)"); + } }