Skip to content

Commit 9a48595

Browse files
committed
Add nullability annotations to module/spring-boot-validation
See gh-46587
1 parent e327eb7 commit 9a48595

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

module/spring-boot-validation/src/main/java/org/springframework/boot/validation/autoconfigure/PrimaryDefaultValidatorPostProcessor.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.boot.validation.autoconfigure;
1818

19+
import org.jspecify.annotations.Nullable;
20+
1921
import org.springframework.beans.BeansException;
2022
import org.springframework.beans.factory.BeanFactory;
2123
import org.springframework.beans.factory.BeanFactoryAware;
@@ -24,6 +26,7 @@
2426
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
2527
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
2628
import org.springframework.core.type.AnnotationMetadata;
29+
import org.springframework.util.Assert;
2730
import org.springframework.validation.Validator;
2831
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
2932

@@ -46,7 +49,7 @@ class PrimaryDefaultValidatorPostProcessor implements ImportBeanDefinitionRegist
4649
*/
4750
private static final String VALIDATOR_BEAN_NAME = "defaultValidator";
4851

49-
private ConfigurableListableBeanFactory beanFactory;
52+
private @Nullable ConfigurableListableBeanFactory beanFactory;
5053

5154
@Override
5255
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
@@ -63,7 +66,7 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, B
6366
}
6467
}
6568

66-
private BeanDefinition getAutoConfiguredValidator(BeanDefinitionRegistry registry) {
69+
private @Nullable BeanDefinition getAutoConfiguredValidator(BeanDefinitionRegistry registry) {
6770
if (registry.containsBeanDefinition(VALIDATOR_BEAN_NAME)) {
6871
BeanDefinition definition = registry.getBeanDefinition(VALIDATOR_BEAN_NAME);
6972
if (definition.getRole() == BeanDefinition.ROLE_INFRASTRUCTURE
@@ -79,6 +82,7 @@ private boolean isTypeMatch(String name, Class<?> type) {
7982
}
8083

8184
private boolean hasPrimarySpringValidator() {
85+
Assert.state(this.beanFactory != null, "'beanFactory' must not be null");
8286
String[] validatorBeans = this.beanFactory.getBeanNamesForType(Validator.class, false, false);
8387
for (String validatorBean : validatorBeans) {
8488
BeanDefinition definition = this.beanFactory.getBeanDefinition(validatorBean);

module/spring-boot-validation/src/main/java/org/springframework/boot/validation/autoconfigure/ValidatorAdapter.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.validation.autoconfigure;
1818

1919
import jakarta.validation.ValidationException;
20+
import org.jspecify.annotations.Nullable;
2021

2122
import org.springframework.beans.BeansException;
2223
import org.springframework.beans.factory.DisposableBean;
@@ -26,6 +27,7 @@
2627
import org.springframework.context.ApplicationContext;
2728
import org.springframework.context.ApplicationContextAware;
2829
import org.springframework.context.MessageSource;
30+
import org.springframework.util.Assert;
2931
import org.springframework.validation.Errors;
3032
import org.springframework.validation.SmartValidator;
3133
import org.springframework.validation.Validator;
@@ -104,7 +106,7 @@ public void destroy() throws Exception {
104106
* @param validator an existing validator to use or {@code null}
105107
* @return the validator to use
106108
*/
107-
public static Validator get(ApplicationContext applicationContext, Validator validator) {
109+
public static Validator get(ApplicationContext applicationContext, @Nullable Validator validator) {
108110
if (validator != null) {
109111
return wrap(validator, false);
110112
}
@@ -119,7 +121,7 @@ private static Validator getExistingOrCreate(ApplicationContext applicationConte
119121
return create(applicationContext);
120122
}
121123

122-
private static Validator getExisting(ApplicationContext applicationContext) {
124+
private static @Nullable Validator getExisting(ApplicationContext applicationContext) {
123125
try {
124126
jakarta.validation.Validator validatorBean = applicationContext.getBean(jakarta.validation.Validator.class);
125127
if (validatorBean instanceof Validator validator) {
@@ -156,7 +158,8 @@ private static Validator wrap(Validator validator, boolean existingBean) {
156158

157159
@Override
158160
@SuppressWarnings("unchecked")
159-
public <T> T unwrap(Class<T> type) {
161+
public <T> @Nullable T unwrap(@Nullable Class<T> type) {
162+
Assert.state(type != null, "'type' must not be null");
160163
if (type.isInstance(this.target)) {
161164
return (T) this.target;
162165
}

module/spring-boot-validation/src/main/java/org/springframework/boot/validation/autoconfigure/package-info.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@
1717
/**
1818
* Auto-configuration for (JSR-303) Validation.
1919
*/
20+
@NullMarked
2021
package org.springframework.boot.validation.autoconfigure;
22+
23+
import org.jspecify.annotations.NullMarked;

0 commit comments

Comments
 (0)