-
Notifications
You must be signed in to change notification settings - Fork 41.5k
Closed
Labels
type: regressionA regression from a previous releaseA regression from a previous release
Milestone
Description
Spring Boot version: 2.4.3-SNAPSHOT
Hi.
I've a @ConfigurationProperties
annotated class which implements the Validator
interface to validate some fields, but the method in the subject is never called causing the validation to fail.
In particular, I've the following structure:
public class SecurityRequestExtractionProperties {
private CookieExtractionNames cookie = new CookieExtractionNames();
private HeaderExtractionNames header = new HeaderExtractionNames();
// getters and setters here
public static class CookieExtractionNames {
private String requestId = "My-Request-ID";
private String sessionId = "My-Session-ID";
// getters and setters here
}
public static class HeaderExtractionNames {
private String requestId = "My-Request-ID";
private String sessionId = "My-Session-ID";
private String tenant = "My-Tenant";
// getters and setters here
}
}
and
@ConfigurationProperties(prefix = SpringSecurityRequestExtractionProperties.PREFIX)
public class SpringSecurityRequestExtractionProperties
extends SecurityRequestExtractionProperties implements Validator {
public static final String PREFIX = "acme.security.request.extraction";
@Override
public boolean supports(Class<?> clazz) {
return clazz == SpringSecurityRequestExtractionProperties.class;
}
@Override
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "cookie", "cookie.empty");
}
}
In Spring Boot 2.1.2 the default values specified in the class where used when no value was explicitly configured, but in the specified version the validation actually fails with
Caused by: org.springframework.boot.context.properties.bind.validation.BindValidationException: Binding validation errors on acme.security.request.extraction
- Field error in object 'acme.security.request.extraction' on field 'cookie': rejected value [null]; codes [cookie.empty.acme.security.request.extraction.cookie,cookie.empty.cookie,cookie.empty.acme.commons.security.api.SecurityRequestExtractionProperties$CookieExtractionNames,cookie.empty]; arguments []; default message [null]
Metadata
Metadata
Assignees
Labels
type: regressionA regression from a previous releaseA regression from a previous release