Add nullability annotations to module/spring-boot-validation

See gh-46587
This commit is contained in:
Moritz Halbritter 2025-08-06 13:40:40 +02:00
parent e327eb7b45
commit 9a485959c4
3 changed files with 15 additions and 5 deletions

View File

@ -16,6 +16,8 @@
package org.springframework.boot.validation.autoconfigure;
import org.jspecify.annotations.Nullable;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
@ -24,6 +26,7 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.util.Assert;
import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
@ -46,7 +49,7 @@ class PrimaryDefaultValidatorPostProcessor implements ImportBeanDefinitionRegist
*/
private static final String VALIDATOR_BEAN_NAME = "defaultValidator";
private ConfigurableListableBeanFactory beanFactory;
private @Nullable ConfigurableListableBeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
@ -63,7 +66,7 @@ class PrimaryDefaultValidatorPostProcessor implements ImportBeanDefinitionRegist
}
}
private BeanDefinition getAutoConfiguredValidator(BeanDefinitionRegistry registry) {
private @Nullable BeanDefinition getAutoConfiguredValidator(BeanDefinitionRegistry registry) {
if (registry.containsBeanDefinition(VALIDATOR_BEAN_NAME)) {
BeanDefinition definition = registry.getBeanDefinition(VALIDATOR_BEAN_NAME);
if (definition.getRole() == BeanDefinition.ROLE_INFRASTRUCTURE
@ -79,6 +82,7 @@ class PrimaryDefaultValidatorPostProcessor implements ImportBeanDefinitionRegist
}
private boolean hasPrimarySpringValidator() {
Assert.state(this.beanFactory != null, "'beanFactory' must not be null");
String[] validatorBeans = this.beanFactory.getBeanNamesForType(Validator.class, false, false);
for (String validatorBean : validatorBeans) {
BeanDefinition definition = this.beanFactory.getBeanDefinition(validatorBean);

View File

@ -17,6 +17,7 @@
package org.springframework.boot.validation.autoconfigure;
import jakarta.validation.ValidationException;
import org.jspecify.annotations.Nullable;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.DisposableBean;
@ -26,6 +27,7 @@ import org.springframework.boot.validation.MessageInterpolatorFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.MessageSource;
import org.springframework.util.Assert;
import org.springframework.validation.Errors;
import org.springframework.validation.SmartValidator;
import org.springframework.validation.Validator;
@ -104,7 +106,7 @@ public class ValidatorAdapter implements SmartValidator, ApplicationContextAware
* @param validator an existing validator to use or {@code null}
* @return the validator to use
*/
public static Validator get(ApplicationContext applicationContext, Validator validator) {
public static Validator get(ApplicationContext applicationContext, @Nullable Validator validator) {
if (validator != null) {
return wrap(validator, false);
}
@ -119,7 +121,7 @@ public class ValidatorAdapter implements SmartValidator, ApplicationContextAware
return create(applicationContext);
}
private static Validator getExisting(ApplicationContext applicationContext) {
private static @Nullable Validator getExisting(ApplicationContext applicationContext) {
try {
jakarta.validation.Validator validatorBean = applicationContext.getBean(jakarta.validation.Validator.class);
if (validatorBean instanceof Validator validator) {
@ -156,7 +158,8 @@ public class ValidatorAdapter implements SmartValidator, ApplicationContextAware
@Override
@SuppressWarnings("unchecked")
public <T> T unwrap(Class<T> type) {
public <T> @Nullable T unwrap(@Nullable Class<T> type) {
Assert.state(type != null, "'type' must not be null");
if (type.isInstance(this.target)) {
return (T) this.target;
}

View File

@ -17,4 +17,7 @@
/**
* Auto-configuration for (JSR-303) Validation.
*/
@NullMarked
package org.springframework.boot.validation.autoconfigure;
import org.jspecify.annotations.NullMarked;