Introduce initializer callback for Bean Validation Configuration
Closes gh-27956
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -26,6 +26,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import javax.validation.Configuration;
|
||||
import javax.validation.ConstraintValidatorFactory;
|
||||
@@ -113,6 +114,9 @@ public class LocalValidatorFactoryBean extends SpringValidatorAdapter
|
||||
|
||||
private final Map<String, String> validationPropertyMap = new HashMap<>();
|
||||
|
||||
@Nullable
|
||||
private Consumer<Configuration<?>> configurationInitializer;
|
||||
|
||||
@Nullable
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@@ -234,6 +238,18 @@ public class LocalValidatorFactoryBean extends SpringValidatorAdapter
|
||||
return this.validationPropertyMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify a callback for customizing the Bean Validation {@code Configuration} instance,
|
||||
* as an alternative to overriding the {@link #postProcessConfiguration(Configuration)}
|
||||
* method in custom {@code LocalValidatorFactoryBean} subclasses.
|
||||
* <p>This enables convenient customizations for application purposes. Infrastructure
|
||||
* extensions may keep overriding the {@link #postProcessConfiguration} template method.
|
||||
* @since 5.3.19
|
||||
*/
|
||||
public void setConfigurationInitializer(Consumer<Configuration<?>> configurationInitializer) {
|
||||
this.configurationInitializer = configurationInitializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext applicationContext) {
|
||||
this.applicationContext = applicationContext;
|
||||
@@ -312,6 +328,9 @@ public class LocalValidatorFactoryBean extends SpringValidatorAdapter
|
||||
this.validationPropertyMap.forEach(configuration::addProperty);
|
||||
|
||||
// Allow for custom post-processing before we actually build the ValidatorFactory.
|
||||
if (this.configurationInitializer != null) {
|
||||
this.configurationInitializer.accept(configuration);
|
||||
}
|
||||
postProcessConfiguration(configuration);
|
||||
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user