restoring preidicate consistency by remove Validated and adding NotNull.

This commit is contained in:
jungyoung
2024-11-04 21:06:03 +09:00
parent 3f62607e37
commit 237ce387ad
16 changed files with 221 additions and 20 deletions

View File

@@ -21,6 +21,7 @@ import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
import jakarta.validation.constraints.NotNull;
import org.springframework.web.server.ServerWebExchange;
/**
@@ -65,6 +66,7 @@ public class BeforeRoutePredicateFactory extends AbstractRoutePredicateFactory<B
public static class Config {
@NotNull
private ZonedDateTime datetime;
public ZonedDateTime getDatetime() {

View File

@@ -24,7 +24,6 @@ import java.util.function.Predicate;
import jakarta.validation.constraints.NotNull;
import org.springframework.util.Assert;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;
/**
@@ -75,7 +74,6 @@ public class BetweenRoutePredicateFactory extends AbstractRoutePredicateFactory<
};
}
@Validated
public static class Config {
@NotNull

View File

@@ -23,7 +23,6 @@ import java.util.function.Predicate;
import jakarta.validation.constraints.NotEmpty;
import org.springframework.http.HttpCookie;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;
/**
@@ -79,7 +78,6 @@ public class CookieRoutePredicateFactory extends AbstractRoutePredicateFactory<C
};
}
@Validated
public static class Config {
@NotEmpty

View File

@@ -24,7 +24,6 @@ import java.util.regex.Pattern;
import jakarta.validation.constraints.NotEmpty;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;
/**
@@ -90,7 +89,6 @@ public class HeaderRoutePredicateFactory extends AbstractRoutePredicateFactory<H
};
}
@Validated
public static class Config {
@NotEmpty

View File

@@ -27,7 +27,6 @@ import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
import org.springframework.core.style.ToStringCreator;
import org.springframework.util.AntPathMatcher;
import org.springframework.util.PathMatcher;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;
/**
@@ -115,7 +114,6 @@ public class HostRoutePredicateFactory extends AbstractRoutePredicateFactory<Hos
};
}
@Validated
public static class Config {
private List<String> patterns = new ArrayList<>();

View File

@@ -21,7 +21,6 @@ import java.util.List;
import java.util.function.Predicate;
import org.springframework.http.HttpMethod;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;
import static java.util.Arrays.stream;
@@ -67,7 +66,6 @@ public class MethodRoutePredicateFactory extends AbstractRoutePredicateFactory<M
};
}
@Validated
public static class Config {
private HttpMethod[] methods;

View File

@@ -26,7 +26,6 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.core.style.ToStringCreator;
import org.springframework.http.server.PathContainer;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.util.pattern.PathPattern;
import org.springframework.web.util.pattern.PathPattern.PathMatchInfo;
@@ -134,7 +133,6 @@ public class PathRoutePredicateFactory extends AbstractRoutePredicateFactory<Pat
};
}
@Validated
public static class Config {
private List<String> patterns = new ArrayList<>();

View File

@@ -23,7 +23,6 @@ import java.util.function.Predicate;
import jakarta.validation.constraints.NotEmpty;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;
/**
@@ -84,7 +83,6 @@ public class QueryRoutePredicateFactory extends AbstractRoutePredicateFactory<Qu
};
}
@Validated
public static class Config {
@NotEmpty

View File

@@ -31,7 +31,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.cloud.gateway.support.ipresolver.RemoteAddressResolver;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;
import static org.springframework.cloud.gateway.support.ShortcutConfigurable.ShortcutType.GATHER_LIST;
@@ -117,7 +116,6 @@ public class RemoteAddrRoutePredicateFactory
sources.add(new IpSubnetFilterRule(ipAddress, cidrPrefix, IpFilterRuleType.ACCEPT));
}
@Validated
public static class Config {
@NotEmpty

View File

@@ -18,8 +18,13 @@ package org.springframework.cloud.gateway.handler.predicate;
import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.Set;
import java.util.function.Predicate;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import org.junit.jupiter.api.Test;
import org.springframework.cloud.gateway.handler.predicate.AfterRoutePredicateFactory.Config;
@@ -99,4 +104,29 @@ public class AfterRoutePredicateFactoryTests {
assertThat(predicate.toString()).contains("After: " + config.getDatetime());
}
@Test
public void testConfig() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
config.setDatetime(ZonedDateTime.now());
assertThat(validator.validate(config).isEmpty()).isTrue();
}
}
@Test
public void testConfigNullField() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
Set<ConstraintViolation<Config>> validate = validator.validate(config);
assertThat(validate.isEmpty()).isFalse();
assertThat(validate.size()).isEqualTo(1);
}
}
}

View File

@@ -18,10 +18,17 @@ package org.springframework.cloud.gateway.handler.predicate;
import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.Set;
import java.util.function.Predicate;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import org.junit.jupiter.api.Test;
import org.springframework.cloud.gateway.handler.predicate.BeforeRoutePredicateFactory.Config;
import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.cloud.gateway.handler.predicate.BeforeRoutePredicateFactory.DATETIME_KEY;
import static org.springframework.cloud.gateway.handler.predicate.BetweenRoutePredicateFactoryTests.bindConfig;
@@ -85,17 +92,42 @@ public class BeforeRoutePredicateFactoryTests {
BeforeRoutePredicateFactory factory = new BeforeRoutePredicateFactory();
BeforeRoutePredicateFactory.Config config = bindConfig(map, factory);
Config config = bindConfig(map, factory);
return factory.apply(config).test(getExchange());
}
@Test
public void toStringFormat() {
BeforeRoutePredicateFactory.Config config = new BeforeRoutePredicateFactory.Config();
Config config = new Config();
config.setDatetime(ZonedDateTime.now());
Predicate predicate = new BeforeRoutePredicateFactory().apply(config);
assertThat(predicate.toString()).contains("Before: " + config.getDatetime());
}
@Test
public void testConfig() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
config.setDatetime(ZonedDateTime.now());
assertThat(validator.validate(config).isEmpty()).isTrue();
}
}
@Test
public void testConfigNullField() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
Set<ConstraintViolation<Config>> validate = validator.validate(config);
assertThat(validate.isEmpty()).isFalse();
assertThat(validate.size()).isEqualTo(1);
}
}
}

View File

@@ -19,11 +19,17 @@ package org.springframework.cloud.gateway.handler.predicate;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Set;
import java.util.function.Predicate;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import org.junit.jupiter.api.Test;
import org.springframework.boot.convert.ApplicationConversionService;
import org.springframework.cloud.gateway.handler.predicate.BetweenRoutePredicateFactory.Config;
import org.springframework.cloud.gateway.support.ConfigurationService;
import org.springframework.cloud.gateway.support.StringToZonedDateTimeConverter;
import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
@@ -152,14 +158,14 @@ public class BetweenRoutePredicateFactoryTests {
BetweenRoutePredicateFactory factory = new BetweenRoutePredicateFactory();
BetweenRoutePredicateFactory.Config config = bindConfig(map, factory);
Config config = bindConfig(map, factory);
return factory.apply(config).test(getExchange());
}
@Test
public void toStringFormat() {
BetweenRoutePredicateFactory.Config config = new BetweenRoutePredicateFactory.Config();
Config config = new Config();
config.setDatetime1(ZonedDateTime.now());
config.setDatetime2(ZonedDateTime.now().plusHours(1));
Predicate predicate = new BetweenRoutePredicateFactory().apply(config);
@@ -167,4 +173,30 @@ public class BetweenRoutePredicateFactoryTests {
.contains("Between: " + config.getDatetime1() + " and " + config.getDatetime2());
}
@Test
public void testConfig() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
config.setDatetime1(ZonedDateTime.now());
config.setDatetime2(ZonedDateTime.now());
assertThat(validator.validate(config).isEmpty()).isTrue();
}
}
@Test
public void testConfigNullField() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
Set<ConstraintViolation<Config>> validate = validator.validate(config);
assertThat(validate.isEmpty()).isFalse();
assertThat(validate.size()).isEqualTo(2);
}
}
}

View File

@@ -16,8 +16,13 @@
package org.springframework.cloud.gateway.handler.predicate;
import java.util.Set;
import java.util.function.Predicate;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import org.junit.jupiter.api.Test;
import org.springframework.cloud.gateway.handler.predicate.CookieRoutePredicateFactory.Config;
@@ -64,4 +69,30 @@ public class CookieRoutePredicateFactoryTests extends BaseWebClientTests {
assertThat(predicate.toString()).contains("Cookie: name=mycookie regexp=myregexp");
}
@Test
public void testConfig() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
config.setName("mycookie");
config.setRegexp("myregexp");
assertThat(validator.validate(config).isEmpty()).isTrue();
}
}
@Test
public void testConfigNullField() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
Set<ConstraintViolation<Config>> validate = validator.validate(config);
assertThat(validate.isEmpty()).isFalse();
assertThat(validate.size()).isEqualTo(2);
}
}
}

View File

@@ -16,8 +16,13 @@
package org.springframework.cloud.gateway.handler.predicate;
import java.util.Set;
import java.util.function.Predicate;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
@@ -106,6 +111,31 @@ public class HeaderRoutePredicateFactoryTests extends BaseWebClientTests {
.valueEquals(ROUTE_ID_HEADER, "header_test_comma_separated");
}
@Test
public void testConfig() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
config.setHeader("myheader");
assertThat(validator.validate(config).isEmpty()).isTrue();
}
}
@Test
public void testConfigNullField() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
Set<ConstraintViolation<Config>> validate = validator.validate(config);
assertThat(validate.isEmpty()).isFalse();
assertThat(validate.size()).isEqualTo(1);
}
}
@EnableAutoConfiguration
@SpringBootConfiguration
@Import(DefaultTestConfig.class)

View File

@@ -16,8 +16,13 @@
package org.springframework.cloud.gateway.handler.predicate;
import java.util.Set;
import java.util.function.Predicate;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -87,6 +92,31 @@ public class QueryRoutePredicateFactoryTests extends BaseWebClientTests {
assertThat(predicate.toString()).contains("Query: param=myparam regexp=myregexp");
}
@Test
public void testConfig() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
config.setParam("myparam");
assertThat(validator.validate(config).isEmpty()).isTrue();
}
}
@Test
public void testConfigNullField() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
Set<ConstraintViolation<Config>> validate = validator.validate(config);
assertThat(validate.isEmpty()).isFalse();
assertThat(validate.size()).isEqualTo(1);
}
}
@EnableAutoConfiguration
@SpringBootConfiguration
@Import(DefaultTestConfig.class)

View File

@@ -17,8 +17,13 @@
package org.springframework.cloud.gateway.handler.predicate;
import java.time.Duration;
import java.util.Set;
import java.util.function.Predicate;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -89,6 +94,31 @@ public class RemoteAddrRoutePredicateFactoryTests extends BaseWebClientTests {
assertThat(predicate.toString()).contains("RemoteAddrs: [1.2.3.4, 5.6.7.8]");
}
@Test
public void testConfig() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
config.setSources("1.2.3.4", "5.6.7.8");
assertThat(validator.validate(config).isEmpty()).isTrue();
}
}
@Test
public void testConfigNullField() {
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
Config config = new Config();
Set<ConstraintViolation<Config>> validate = validator.validate(config);
assertThat(validate.isEmpty()).isFalse();
assertThat(validate.size()).isEqualTo(1);
}
}
@EnableAutoConfiguration
@SpringBootConfiguration
@Import(DefaultTestConfig.class)