diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AdviceModeImportSelector.java b/spring-context/src/main/java/org/springframework/context/annotation/AdviceModeImportSelector.java index adfb7a55dea..c32c9a247e9 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AdviceModeImportSelector.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AdviceModeImportSelector.java @@ -21,6 +21,7 @@ import java.lang.annotation.Annotation; import org.springframework.core.GenericTypeResolver; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; /** @@ -32,6 +33,7 @@ import org.springframework.lang.Nullable; * @since 3.1 * @param annotation containing {@linkplain #getAdviceModeAttributeName() AdviceMode attribute} */ +@NonNullApi public abstract class AdviceModeImportSelector implements ImportSelector { public static final String DEFAULT_ADVICE_MODE_ATTRIBUTE_NAME = "mode"; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AnnotatedBeanDefinitionReader.java b/spring-context/src/main/java/org/springframework/context/annotation/AnnotatedBeanDefinitionReader.java index 6a6fee8df5c..150274d92ef 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AnnotatedBeanDefinitionReader.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AnnotatedBeanDefinitionReader.java @@ -30,6 +30,7 @@ import org.springframework.beans.factory.support.BeanNameGenerator; import org.springframework.core.env.Environment; import org.springframework.core.env.EnvironmentCapable; import org.springframework.core.env.StandardEnvironment; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -45,6 +46,7 @@ import org.springframework.util.Assert; * @since 3.0 * @see AnnotationConfigApplicationContext#register */ +@NonNullApi public class AnnotatedBeanDefinitionReader { private final BeanDefinitionRegistry registry; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationBeanNameGenerator.java b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationBeanNameGenerator.java index 8d4dd12103d..d742dd590bf 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationBeanNameGenerator.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationBeanNameGenerator.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanNameGenerator; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; @@ -60,6 +61,7 @@ import org.springframework.util.StringUtils; * @see org.springframework.stereotype.Controller#value() * @see javax.inject.Named#value() */ +@NonNullApi public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String COMPONENT_ANNOTATION_CLASSNAME = "org.springframework.stereotype.Component"; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigApplicationContext.java b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigApplicationContext.java index b99e4aebf81..952a8679849 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigApplicationContext.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.support.BeanNameGenerator; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.context.support.GenericApplicationContext; import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -50,6 +51,7 @@ import org.springframework.util.Assert; * @see ClassPathBeanDefinitionScanner * @see org.springframework.context.support.GenericXmlApplicationContext */ +@NonNullApi public class AnnotationConfigApplicationContext extends GenericApplicationContext implements AnnotationConfigRegistry { private final AnnotatedBeanDefinitionReader reader; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigBeanDefinitionParser.java b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigBeanDefinitionParser.java index de52f2e6d32..90082eb4526 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigBeanDefinitionParser.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigBeanDefinitionParser.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.parsing.BeanComponentDefinition; import org.springframework.beans.factory.parsing.CompositeComponentDefinition; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.lang.NonNullApi; /** * Parser for the <context:annotation-config/> element. @@ -36,6 +37,7 @@ import org.springframework.beans.factory.xml.ParserContext; * @since 2.5 * @see AnnotationConfigUtils */ +@NonNullApi public class AnnotationConfigBeanDefinitionParser implements BeanDefinitionParser { @Override diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigRegistry.java b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigRegistry.java index d1fe2f1def8..34b0d87c1e7 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigRegistry.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigRegistry.java @@ -16,6 +16,8 @@ package org.springframework.context.annotation; +import org.springframework.lang.NonNullApi; + /** * Common interface for annotation config application contexts, * defining {@link #register} and {@link #scan} methods. @@ -23,6 +25,7 @@ package org.springframework.context.annotation; * @author Juergen Hoeller * @since 4.1 */ +@NonNullApi public interface AnnotationConfigRegistry { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java index 9f688c893a6..6d5a118e2a6 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java @@ -37,6 +37,7 @@ import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.annotation.AnnotationAwareOrderComparator; import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; @@ -60,6 +61,7 @@ import org.springframework.util.ClassUtils; * @see org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor * @see org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor */ +@NonNullApi public class AnnotationConfigUtils { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationScopeMetadataResolver.java b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationScopeMetadataResolver.java index ddbf312a08a..adfab1e8743 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationScopeMetadataResolver.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationScopeMetadataResolver.java @@ -21,6 +21,7 @@ import java.lang.annotation.Annotation; import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.core.annotation.AnnotationAttributes; +import org.springframework.lang.NonNullApi; import org.springframework.util.Assert; /** @@ -36,6 +37,7 @@ import org.springframework.util.Assert; * @since 2.5 * @see org.springframework.context.annotation.Scope */ +@NonNullApi public class AnnotationScopeMetadataResolver implements ScopeMetadataResolver { private final ScopedProxyMode defaultProxyMode; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AspectJAutoProxyRegistrar.java b/spring-context/src/main/java/org/springframework/context/annotation/AspectJAutoProxyRegistrar.java index 5ec21e9c3e0..db739c7069f 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AspectJAutoProxyRegistrar.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AspectJAutoProxyRegistrar.java @@ -20,6 +20,7 @@ import org.springframework.aop.config.AopConfigUtils; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; /** * Registers an {@link org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator @@ -31,6 +32,7 @@ import org.springframework.core.type.AnnotationMetadata; * @since 3.1 * @see EnableAspectJAutoProxy */ +@NonNullApi class AspectJAutoProxyRegistrar implements ImportBeanDefinitionRegistrar { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AutoProxyRegistrar.java b/spring-context/src/main/java/org/springframework/context/annotation/AutoProxyRegistrar.java index c02ceb33192..b72c3bb8540 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AutoProxyRegistrar.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AutoProxyRegistrar.java @@ -25,6 +25,7 @@ import org.springframework.aop.config.AopConfigUtils; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; /** * Registers an auto proxy creator against the current {@link BeanDefinitionRegistry} @@ -35,6 +36,7 @@ import org.springframework.core.type.AnnotationMetadata; * @since 3.1 * @see EnableAspectJAutoProxy */ +@NonNullApi public class AutoProxyRegistrar implements ImportBeanDefinitionRegistrar { private final Log logger = LogFactory.getLog(getClass()); diff --git a/spring-context/src/main/java/org/springframework/context/annotation/BeanAnnotationHelper.java b/spring-context/src/main/java/org/springframework/context/annotation/BeanAnnotationHelper.java index b28ab0492b6..70c1bf75ba9 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/BeanAnnotationHelper.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/BeanAnnotationHelper.java @@ -19,6 +19,7 @@ package org.springframework.context.annotation; import java.lang.reflect.Method; import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.lang.NonNullApi; /** * Utilities for processing {@link Bean}-annotated methods. @@ -27,6 +28,7 @@ import org.springframework.core.annotation.AnnotatedElementUtils; * @author Juergen Hoeller * @since 3.1 */ +@NonNullApi class BeanAnnotationHelper { public static boolean isBeanAnnotated(Method method) { diff --git a/spring-context/src/main/java/org/springframework/context/annotation/BeanMethod.java b/spring-context/src/main/java/org/springframework/context/annotation/BeanMethod.java index 939cb6b300e..9ce76505d02 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/BeanMethod.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/BeanMethod.java @@ -19,6 +19,7 @@ package org.springframework.context.annotation; import org.springframework.beans.factory.parsing.Problem; import org.springframework.beans.factory.parsing.ProblemReporter; import org.springframework.core.type.MethodMetadata; +import org.springframework.lang.NonNullApi; /** * Represents a {@link Configuration} class method marked with the @@ -31,6 +32,7 @@ import org.springframework.core.type.MethodMetadata; * @see ConfigurationClassParser * @see ConfigurationClassBeanDefinitionReader */ +@NonNullApi final class BeanMethod extends ConfigurationMethod { public BeanMethod(MethodMetadata metadata, ConfigurationClass configurationClass) { diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ClassPathBeanDefinitionScanner.java b/spring-context/src/main/java/org/springframework/context/annotation/ClassPathBeanDefinitionScanner.java index 53721d6b6f0..4811262197d 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ClassPathBeanDefinitionScanner.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ClassPathBeanDefinitionScanner.java @@ -31,6 +31,7 @@ import org.springframework.core.env.Environment; import org.springframework.core.env.EnvironmentCapable; import org.springframework.core.env.StandardEnvironment; import org.springframework.core.io.ResourceLoader; +import org.springframework.lang.NonNullApi; import org.springframework.util.Assert; import org.springframework.util.PatternMatchUtils; @@ -59,6 +60,7 @@ import org.springframework.util.PatternMatchUtils; * @see org.springframework.stereotype.Service * @see org.springframework.stereotype.Controller */ +@NonNullApi public class ClassPathBeanDefinitionScanner extends ClassPathScanningCandidateComponentProvider { private final BeanDefinitionRegistry registry; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java b/spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java index cc7603e11ec..deea227f366 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java @@ -51,6 +51,7 @@ import org.springframework.core.type.classreading.MetadataReaderFactory; import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.core.type.filter.AssignableTypeFilter; import org.springframework.core.type.filter.TypeFilter; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; @@ -84,6 +85,7 @@ import org.springframework.util.ClassUtils; * @see ScannedGenericBeanDefinition * @see CandidateComponentsIndex */ +@NonNullApi public class ClassPathScanningCandidateComponentProvider implements EnvironmentCapable, ResourceLoaderAware { static final String DEFAULT_RESOURCE_PATTERN = "**/*.class"; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java b/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java index 8045b1758d1..2af43afbe61 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java @@ -65,6 +65,7 @@ import org.springframework.core.BridgeMethodResolver; import org.springframework.core.MethodParameter; import org.springframework.core.Ordered; import org.springframework.jndi.support.SimpleJndiBeanFactory; +import org.springframework.lang.NonNullApi; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.ReflectionUtils; @@ -139,6 +140,7 @@ import org.springframework.util.StringValueResolver; * @see org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor */ @SuppressWarnings("serial") +@NonNullApi public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBeanPostProcessor implements InstantiationAwareBeanPostProcessor, BeanFactoryAware, Serializable { diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ComponentScanAnnotationParser.java b/spring-context/src/main/java/org/springframework/context/annotation/ComponentScanAnnotationParser.java index 07628c50a50..f846f5cd0d5 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ComponentScanAnnotationParser.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ComponentScanAnnotationParser.java @@ -38,6 +38,7 @@ import org.springframework.core.type.filter.AspectJTypeFilter; import org.springframework.core.type.filter.AssignableTypeFilter; import org.springframework.core.type.filter.RegexPatternTypeFilter; import org.springframework.core.type.filter.TypeFilter; +import org.springframework.lang.NonNullApi; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; @@ -52,6 +53,7 @@ import org.springframework.util.StringUtils; * @see ClassPathBeanDefinitionScanner#scan(String...) * @see ComponentScanBeanDefinitionParser */ +@NonNullApi class ComponentScanAnnotationParser { private final Environment environment; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ComponentScanBeanDefinitionParser.java b/spring-context/src/main/java/org/springframework/context/annotation/ComponentScanBeanDefinitionParser.java index 96dad592e14..53b0e676216 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ComponentScanBeanDefinitionParser.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ComponentScanBeanDefinitionParser.java @@ -40,6 +40,7 @@ import org.springframework.core.type.filter.AspectJTypeFilter; import org.springframework.core.type.filter.AssignableTypeFilter; import org.springframework.core.type.filter.RegexPatternTypeFilter; import org.springframework.core.type.filter.TypeFilter; +import org.springframework.lang.NonNullApi; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; @@ -51,6 +52,7 @@ import org.springframework.util.StringUtils; * @author Juergen Hoeller * @since 2.5 */ +@NonNullApi public class ComponentScanBeanDefinitionParser implements BeanDefinitionParser { private static final String BASE_PACKAGE_ATTRIBUTE = "base-package"; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/Condition.java b/spring-context/src/main/java/org/springframework/context/annotation/Condition.java index 2cdcc36cb82..4eeb2736b59 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/Condition.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/Condition.java @@ -18,6 +18,7 @@ package org.springframework.context.annotation; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.core.type.AnnotatedTypeMetadata; +import org.springframework.lang.NonNullApi; /** * A single {@code condition} that must be {@linkplain #matches matched} in order @@ -39,6 +40,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata; * @see ConditionContext */ @FunctionalInterface +@NonNullApi public interface Condition { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConditionContext.java b/spring-context/src/main/java/org/springframework/context/annotation/ConditionContext.java index 4eb3a847ca4..8be2dad8296 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConditionContext.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConditionContext.java @@ -20,7 +20,6 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.core.env.Environment; import org.springframework.core.io.ResourceLoader; -import org.springframework.lang.Nullable; /** * Context information for use by {@link Condition}s. @@ -35,7 +34,6 @@ public interface ConditionContext { * should the condition match or {@code null} if the registry is not available. * @return the registry or {@code null} */ - @Nullable BeanDefinitionRegistry getRegistry(); /** @@ -44,7 +42,6 @@ public interface ConditionContext { * is not available. * @return the bean factory or {@code null} */ - @Nullable ConfigurableListableBeanFactory getBeanFactory(); /** @@ -52,7 +49,6 @@ public interface ConditionContext { * or {@code null} if no environment is available. * @return the environment or {@code null} */ - @Nullable Environment getEnvironment(); /** @@ -60,7 +56,6 @@ public interface ConditionContext { * if the resource loader cannot be obtained. * @return a resource loader or {@code null} */ - @Nullable ResourceLoader getResourceLoader(); /** @@ -68,7 +63,6 @@ public interface ConditionContext { * classes or {@code null} if the default classloader should be used. * @return the class loader or {@code null} */ - @Nullable ClassLoader getClassLoader(); } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConditionEvaluator.java b/spring-context/src/main/java/org/springframework/context/annotation/ConditionEvaluator.java index 7f085e101bc..dfac10d1f6b 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConditionEvaluator.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConditionEvaluator.java @@ -31,6 +31,7 @@ import org.springframework.core.env.EnvironmentCapable; import org.springframework.core.io.ResourceLoader; import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; import org.springframework.util.MultiValueMap; @@ -41,6 +42,7 @@ import org.springframework.util.MultiValueMap; * @author Phillip Webb * @since 4.0 */ +@NonNullApi class ConditionEvaluator { private final ConditionContextImpl context; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java index 5cc0dccc259..8921421d214 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java @@ -31,6 +31,7 @@ import org.springframework.core.io.Resource; import org.springframework.core.type.AnnotationMetadata; import org.springframework.core.type.StandardAnnotationMetadata; import org.springframework.core.type.classreading.MetadataReader; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -47,6 +48,7 @@ import org.springframework.util.ClassUtils; * @see BeanMethod * @see ConfigurationClassParser */ +@NonNullApi final class ConfigurationClass { private final AnnotationMetadata metadata; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java index c74988d7054..cf8ced6bccf 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java @@ -50,6 +50,7 @@ import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.core.type.AnnotationMetadata; import org.springframework.core.type.MethodMetadata; +import org.springframework.lang.NonNullApi; import org.springframework.util.StringUtils; /** @@ -67,6 +68,7 @@ import org.springframework.util.StringUtils; * @since 3.0 * @see ConfigurationClassParser */ +@NonNullApi class ConfigurationClassBeanDefinitionReader { private static final Log logger = LogFactory.getLog(ConfigurationClassBeanDefinitionReader.class); diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java index cd4881f37f5..14be48ed122 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java @@ -49,6 +49,7 @@ import org.springframework.cglib.proxy.NoOp; import org.springframework.cglib.transform.ClassEmitterTransformer; import org.springframework.cglib.transform.TransformingClassGenerator; import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.objenesis.ObjenesisException; import org.springframework.objenesis.SpringObjenesis; @@ -72,6 +73,7 @@ import org.springframework.util.ReflectionUtils; * @see #enhance * @see ConfigurationClassPostProcessor */ +@NonNullApi class ConfigurationClassEnhancer { // The callbacks to use. Note that these callbacks must be stateless. diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java index e6c1c3d3687..cb4213931f7 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java @@ -72,6 +72,7 @@ import org.springframework.core.type.StandardAnnotationMetadata; import org.springframework.core.type.classreading.MetadataReader; import org.springframework.core.type.classreading.MetadataReaderFactory; import org.springframework.core.type.filter.AssignableTypeFilter; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; @@ -100,6 +101,7 @@ import org.springframework.util.StringUtils; * @since 3.0 * @see ConfigurationClassBeanDefinitionReader */ +@NonNullApi class ConfigurationClassParser { private static final PropertySourceFactory DEFAULT_PROPERTY_SOURCE_FACTORY = new DefaultPropertySourceFactory(); diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java index b1f0ceb0159..27e7372c643 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java @@ -61,6 +61,7 @@ import org.springframework.core.io.ResourceLoader; import org.springframework.core.type.AnnotationMetadata; import org.springframework.core.type.classreading.CachingMetadataReaderFactory; import org.springframework.core.type.classreading.MetadataReaderFactory; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -85,6 +86,7 @@ import static org.springframework.context.annotation.AnnotationConfigUtils.*; * @author Phillip Webb * @since 3.0 */ +@NonNullApi public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPostProcessor, PriorityOrdered, ResourceLoaderAware, BeanClassLoaderAware, EnvironmentAware { diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassUtils.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassUtils.java index f5117f54e8d..9593e26cdfa 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassUtils.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassUtils.java @@ -35,6 +35,7 @@ import org.springframework.core.type.AnnotationMetadata; import org.springframework.core.type.StandardAnnotationMetadata; import org.springframework.core.type.classreading.MetadataReader; import org.springframework.core.type.classreading.MetadataReaderFactory; +import org.springframework.lang.NonNullApi; import org.springframework.stereotype.Component; /** @@ -44,6 +45,7 @@ import org.springframework.stereotype.Component; * @author Juergen Hoeller * @since 3.1 */ +@NonNullApi abstract class ConfigurationClassUtils { private static final String CONFIGURATION_CLASS_FULL = "full"; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationCondition.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationCondition.java index c46f8a030bc..63ac178883b 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationCondition.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationCondition.java @@ -16,6 +16,8 @@ package org.springframework.context.annotation; +import org.springframework.lang.NonNullApi; + /** * A {@link Condition} that offers more fine-grained control when used with * {@code @Configuration}. Allows certain {@link Condition}s to adapt when they match @@ -27,6 +29,7 @@ package org.springframework.context.annotation; * @since 4.0 * @see Configuration */ +@NonNullApi public interface ConfigurationCondition extends Condition { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationMethod.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationMethod.java index b359be7d64b..5259597b722 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationMethod.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationMethod.java @@ -19,11 +19,13 @@ package org.springframework.context.annotation; import org.springframework.beans.factory.parsing.Location; import org.springframework.beans.factory.parsing.ProblemReporter; import org.springframework.core.type.MethodMetadata; +import org.springframework.lang.NonNullApi; /** * @author Chris Beams * @since 3.1 */ +@NonNullApi abstract class ConfigurationMethod { protected final MethodMetadata metadata; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConflictingBeanDefinitionException.java b/spring-context/src/main/java/org/springframework/context/annotation/ConflictingBeanDefinitionException.java index 03e0c649d62..14fc8596503 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConflictingBeanDefinitionException.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConflictingBeanDefinitionException.java @@ -16,6 +16,8 @@ package org.springframework.context.annotation; +import org.springframework.lang.NonNullApi; + /** * Marker subclass of {@link IllegalStateException}, allowing for explicit * catch clauses in calling code. @@ -24,6 +26,7 @@ package org.springframework.context.annotation; * @since 3.1 */ @SuppressWarnings("serial") +@NonNullApi class ConflictingBeanDefinitionException extends IllegalStateException { public ConflictingBeanDefinitionException(String message) { diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ContextAnnotationAutowireCandidateResolver.java b/spring-context/src/main/java/org/springframework/context/annotation/ContextAnnotationAutowireCandidateResolver.java index 785ada6c5e0..8e505111acb 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ContextAnnotationAutowireCandidateResolver.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ContextAnnotationAutowireCandidateResolver.java @@ -27,6 +27,7 @@ import org.springframework.beans.factory.config.DependencyDescriptor; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.core.MethodParameter; import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.lang.NonNullApi; import org.springframework.util.Assert; /** @@ -38,6 +39,7 @@ import org.springframework.util.Assert; * @author Juergen Hoeller * @since 4.0 */ +@NonNullApi public class ContextAnnotationAutowireCandidateResolver extends QualifierAnnotationAutowireCandidateResolver { @Override diff --git a/spring-context/src/main/java/org/springframework/context/annotation/DeferredImportSelector.java b/spring-context/src/main/java/org/springframework/context/annotation/DeferredImportSelector.java index ceb7f9b6e32..5c8c166bd1d 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/DeferredImportSelector.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/DeferredImportSelector.java @@ -16,6 +16,8 @@ package org.springframework.context.annotation; +import org.springframework.lang.NonNullApi; + /** * A variation of {@link ImportSelector} that runs after all {@code @Configuration} beans * have been processed. This type of selector can be particularly useful when the selected @@ -28,6 +30,7 @@ package org.springframework.context.annotation; * @author Phillip Webb * @since 4.0 */ +@NonNullApi public interface DeferredImportSelector extends ImportSelector { } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ImportAware.java b/spring-context/src/main/java/org/springframework/context/annotation/ImportAware.java index 6daf4dddea6..d989445ee08 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ImportAware.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ImportAware.java @@ -18,6 +18,7 @@ package org.springframework.context.annotation; import org.springframework.beans.factory.Aware; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; /** * Interface to be implemented by any @{@link Configuration} class that wishes @@ -28,6 +29,7 @@ import org.springframework.core.type.AnnotationMetadata; * @author Chris Beams * @since 3.1 */ +@NonNullApi public interface ImportAware extends Aware { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java b/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java index 1dce3d41140..6f815d62719 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java @@ -19,6 +19,7 @@ package org.springframework.context.annotation; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; /** * Interface to be implemented by types that register additional bean definitions when @@ -47,6 +48,7 @@ import org.springframework.core.type.AnnotationMetadata; * @see ImportSelector * @see Configuration */ +@NonNullApi public interface ImportBeanDefinitionRegistrar { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ImportRegistry.java b/spring-context/src/main/java/org/springframework/context/annotation/ImportRegistry.java index c614d55d8d6..9d09114c1c1 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ImportRegistry.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ImportRegistry.java @@ -17,11 +17,13 @@ package org.springframework.context.annotation; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; /** * @author Juergen Hoeller * @author Phil Webb */ +@NonNullApi interface ImportRegistry { AnnotationMetadata getImportingClassFor(String importedClass); diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ImportSelector.java b/spring-context/src/main/java/org/springframework/context/annotation/ImportSelector.java index c684426f22c..6062cce1904 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ImportSelector.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ImportSelector.java @@ -17,6 +17,7 @@ package org.springframework.context.annotation; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNullApi; /** * Interface to be implemented by types that determine which @{@link Configuration} @@ -45,6 +46,7 @@ import org.springframework.core.type.AnnotationMetadata; * @see ImportBeanDefinitionRegistrar * @see Configuration */ +@NonNullApi public interface ImportSelector { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/Jsr330ScopeMetadataResolver.java b/spring-context/src/main/java/org/springframework/context/annotation/Jsr330ScopeMetadataResolver.java index a63d954cb53..08dfce3eff7 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/Jsr330ScopeMetadataResolver.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/Jsr330ScopeMetadataResolver.java @@ -22,6 +22,7 @@ import java.util.Set; import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.lang.NonNullApi; /** * Simple {@link ScopeMetadataResolver} implementation that follows JSR-330 scoping rules: @@ -39,6 +40,7 @@ import org.springframework.beans.factory.config.BeanDefinition; * @see ClassPathBeanDefinitionScanner#setScopeMetadataResolver * @see AnnotatedBeanDefinitionReader#setScopeMetadataResolver */ +@NonNullApi public class Jsr330ScopeMetadataResolver implements ScopeMetadataResolver { private final Map scopeMap = new HashMap<>(); diff --git a/spring-context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfiguration.java b/spring-context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfiguration.java index b01feb0d51d..3e1657f5c95 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfiguration.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfiguration.java @@ -26,6 +26,7 @@ import org.springframework.context.weaving.DefaultContextLoadTimeWeaver; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.type.AnnotationMetadata; import org.springframework.instrument.classloading.LoadTimeWeaver; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; /** @@ -41,6 +42,7 @@ import org.springframework.lang.Nullable; * @see ConfigurableApplicationContext#LOAD_TIME_WEAVER_BEAN_NAME */ @Configuration +@NonNullApi public class LoadTimeWeavingConfiguration implements ImportAware, BeanClassLoaderAware { private AnnotationAttributes enableLTW; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfigurer.java b/spring-context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfigurer.java index 8df85b91f09..c248d6b4366 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfigurer.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/LoadTimeWeavingConfigurer.java @@ -17,6 +17,7 @@ package org.springframework.context.annotation; import org.springframework.instrument.classloading.LoadTimeWeaver; +import org.springframework.lang.NonNullApi; /** * Interface to be implemented by @@ -33,6 +34,7 @@ import org.springframework.instrument.classloading.LoadTimeWeaver; * @see LoadTimeWeavingConfiguration * @see EnableLoadTimeWeaving */ +@NonNullApi public interface LoadTimeWeavingConfigurer { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/MBeanExportConfiguration.java b/spring-context/src/main/java/org/springframework/context/annotation/MBeanExportConfiguration.java index 0e4a8410411..185542939e6 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/MBeanExportConfiguration.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/MBeanExportConfiguration.java @@ -32,6 +32,7 @@ import org.springframework.jmx.export.annotation.AnnotationMBeanExporter; import org.springframework.jmx.support.RegistrationPolicy; import org.springframework.jmx.support.WebSphereMBeanServerFactoryBean; import org.springframework.jndi.JndiLocatorDelegate; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; @@ -48,6 +49,7 @@ import org.springframework.util.StringUtils; * @see EnableMBeanExport */ @Configuration +@NonNullApi public class MBeanExportConfiguration implements ImportAware, EnvironmentAware, BeanFactoryAware { private static final String MBEAN_EXPORTER_BEAN_NAME = "mbeanExporter"; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ParserStrategyUtils.java b/spring-context/src/main/java/org/springframework/context/annotation/ParserStrategyUtils.java index f1ced5158fd..31855266f4f 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ParserStrategyUtils.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ParserStrategyUtils.java @@ -26,6 +26,7 @@ import org.springframework.context.EnvironmentAware; import org.springframework.context.ResourceLoaderAware; import org.springframework.core.env.Environment; import org.springframework.core.io.ResourceLoader; +import org.springframework.lang.NonNullApi; /** * Common delegate code for the handling of parser strategies, e.g. @@ -34,6 +35,7 @@ import org.springframework.core.io.ResourceLoader; * @author Juergen Hoeller * @since 4.3.3 */ +@NonNullApi abstract class ParserStrategyUtils { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ScannedGenericBeanDefinition.java b/spring-context/src/main/java/org/springframework/context/annotation/ScannedGenericBeanDefinition.java index 1b815588459..272f325e5e1 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ScannedGenericBeanDefinition.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ScannedGenericBeanDefinition.java @@ -22,6 +22,7 @@ import org.springframework.beans.factory.support.GenericBeanDefinition; import org.springframework.core.type.AnnotationMetadata; import org.springframework.core.type.MethodMetadata; import org.springframework.core.type.classreading.MetadataReader; +import org.springframework.lang.NonNullApi; import org.springframework.util.Assert; /** @@ -45,6 +46,7 @@ import org.springframework.util.Assert; * @see AnnotatedGenericBeanDefinition */ @SuppressWarnings("serial") +@NonNullApi public class ScannedGenericBeanDefinition extends GenericBeanDefinition implements AnnotatedBeanDefinition { private final AnnotationMetadata metadata; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ScopeMetadata.java b/spring-context/src/main/java/org/springframework/context/annotation/ScopeMetadata.java index a13dfdd1933..baddf65c29a 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ScopeMetadata.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ScopeMetadata.java @@ -17,6 +17,7 @@ package org.springframework.context.annotation; import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.lang.NonNullApi; import org.springframework.util.Assert; /** @@ -32,6 +33,7 @@ import org.springframework.util.Assert; * @see ScopeMetadataResolver * @see ScopedProxyMode */ +@NonNullApi public class ScopeMetadata { private String scopeName = BeanDefinition.SCOPE_SINGLETON; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ScopeMetadataResolver.java b/spring-context/src/main/java/org/springframework/context/annotation/ScopeMetadataResolver.java index 0020b96e847..bdd860c668b 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ScopeMetadataResolver.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ScopeMetadataResolver.java @@ -17,6 +17,7 @@ package org.springframework.context.annotation; import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.lang.NonNullApi; /** * Strategy interface for resolving the scope of bean definitions. @@ -26,6 +27,7 @@ import org.springframework.beans.factory.config.BeanDefinition; * @see org.springframework.context.annotation.Scope */ @FunctionalInterface +@NonNullApi public interface ScopeMetadataResolver { /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ScopedProxyCreator.java b/spring-context/src/main/java/org/springframework/context/annotation/ScopedProxyCreator.java index 371c8b66741..8737b8f7c63 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ScopedProxyCreator.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ScopedProxyCreator.java @@ -19,6 +19,7 @@ package org.springframework.context.annotation; import org.springframework.aop.scope.ScopedProxyUtils; import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.lang.NonNullApi; /** * Delegate factory class used to just introduce an AOP framework dependency @@ -28,6 +29,7 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry; * @since 3.0 * @see org.springframework.aop.scope.ScopedProxyUtils#createScopedProxy */ +@NonNullApi class ScopedProxyCreator { public static BeanDefinitionHolder createScopedProxy( diff --git a/spring-context/src/main/java/org/springframework/context/annotation/package-info.java b/spring-context/src/main/java/org/springframework/context/annotation/package-info.java index ca7cc4691b6..590924e7d43 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/package-info.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/package-info.java @@ -3,7 +3,4 @@ * annotations, component-scanning, and Java-based metadata for creating * Spring-managed objects. */ -@NonNullApi package org.springframework.context.annotation; - -import org.springframework.lang.NonNullApi; \ No newline at end of file diff --git a/spring-core/src/main/java/org/springframework/core/env/AbstractEnvironment.java b/spring-core/src/main/java/org/springframework/core/env/AbstractEnvironment.java index 4516f5633fe..b1661d00bd4 100644 --- a/spring-core/src/main/java/org/springframework/core/env/AbstractEnvironment.java +++ b/spring-core/src/main/java/org/springframework/core/env/AbstractEnvironment.java @@ -27,6 +27,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.core.SpringProperties; import org.springframework.core.convert.support.ConfigurableConversionService; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; @@ -51,6 +52,7 @@ import org.springframework.util.StringUtils; * @see ConfigurableEnvironment * @see StandardEnvironment */ +@NonNullApi public abstract class AbstractEnvironment implements ConfigurableEnvironment { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/AbstractPropertyResolver.java b/spring-core/src/main/java/org/springframework/core/env/AbstractPropertyResolver.java index 20f96b22818..525ea017832 100644 --- a/spring-core/src/main/java/org/springframework/core/env/AbstractPropertyResolver.java +++ b/spring-core/src/main/java/org/springframework/core/env/AbstractPropertyResolver.java @@ -25,6 +25,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.support.ConfigurableConversionService; import org.springframework.core.convert.support.DefaultConversionService; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -38,6 +39,7 @@ import org.springframework.util.SystemPropertyUtils; * @author Juergen Hoeller * @since 3.1 */ +@NonNullApi public abstract class AbstractPropertyResolver implements ConfigurablePropertyResolver { protected final Log logger = LogFactory.getLog(getClass()); diff --git a/spring-core/src/main/java/org/springframework/core/env/CommandLineArgs.java b/spring-core/src/main/java/org/springframework/core/env/CommandLineArgs.java index 11ee00a3da6..898d5fc6537 100644 --- a/spring-core/src/main/java/org/springframework/core/env/CommandLineArgs.java +++ b/spring-core/src/main/java/org/springframework/core/env/CommandLineArgs.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; /** @@ -33,6 +34,7 @@ import org.springframework.lang.Nullable; * @since 3.1 * @see SimpleCommandLineArgsParser */ +@NonNullApi class CommandLineArgs { private final Map> optionArgs = new HashMap<>(); diff --git a/spring-core/src/main/java/org/springframework/core/env/CommandLinePropertySource.java b/spring-core/src/main/java/org/springframework/core/env/CommandLinePropertySource.java index f4905331dad..a9387c1c285 100644 --- a/spring-core/src/main/java/org/springframework/core/env/CommandLinePropertySource.java +++ b/spring-core/src/main/java/org/springframework/core/env/CommandLinePropertySource.java @@ -19,6 +19,7 @@ package org.springframework.core.env; import java.util.Collection; import java.util.List; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; @@ -204,6 +205,7 @@ import org.springframework.util.StringUtils; * @see SimpleCommandLinePropertySource * @see JOptCommandLinePropertySource */ +@NonNullApi public abstract class CommandLinePropertySource extends EnumerablePropertySource { /** The default name given to {@link CommandLinePropertySource} instances: {@value} */ diff --git a/spring-core/src/main/java/org/springframework/core/env/CompositePropertySource.java b/spring-core/src/main/java/org/springframework/core/env/CompositePropertySource.java index 31902223704..d8af2212ce5 100644 --- a/spring-core/src/main/java/org/springframework/core/env/CompositePropertySource.java +++ b/spring-core/src/main/java/org/springframework/core/env/CompositePropertySource.java @@ -23,6 +23,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import org.springframework.lang.NonNullApi; import org.springframework.util.StringUtils; /** @@ -39,6 +40,7 @@ import org.springframework.util.StringUtils; * @author Phillip Webb * @since 3.1.1 */ +@NonNullApi public class CompositePropertySource extends EnumerablePropertySource { private final Set> propertySources = new LinkedHashSet<>(); diff --git a/spring-core/src/main/java/org/springframework/core/env/ConfigurableEnvironment.java b/spring-core/src/main/java/org/springframework/core/env/ConfigurableEnvironment.java index 5ba0763ac56..30f1981d5bc 100644 --- a/spring-core/src/main/java/org/springframework/core/env/ConfigurableEnvironment.java +++ b/spring-core/src/main/java/org/springframework/core/env/ConfigurableEnvironment.java @@ -18,6 +18,8 @@ package org.springframework.core.env; import java.util.Map; +import org.springframework.lang.NonNullApi; + /** * Configuration interface to be implemented by most if not all {@link Environment} types. * Provides facilities for setting active and default profiles and manipulating underlying @@ -69,6 +71,7 @@ import java.util.Map; * @see StandardEnvironment * @see org.springframework.context.ConfigurableApplicationContext#getEnvironment */ +@NonNullApi public interface ConfigurableEnvironment extends Environment, ConfigurablePropertyResolver { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/ConfigurablePropertyResolver.java b/spring-core/src/main/java/org/springframework/core/env/ConfigurablePropertyResolver.java index b8e4ec6208e..05e5248b6d7 100644 --- a/spring-core/src/main/java/org/springframework/core/env/ConfigurablePropertyResolver.java +++ b/spring-core/src/main/java/org/springframework/core/env/ConfigurablePropertyResolver.java @@ -17,6 +17,7 @@ package org.springframework.core.env; import org.springframework.core.convert.support.ConfigurableConversionService; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; /** @@ -28,6 +29,7 @@ import org.springframework.lang.Nullable; * @author Chris Beams * @since 3.1 */ +@NonNullApi public interface ConfigurablePropertyResolver extends PropertyResolver { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/EnumerablePropertySource.java b/spring-core/src/main/java/org/springframework/core/env/EnumerablePropertySource.java index 00274a692eb..211f584930b 100644 --- a/spring-core/src/main/java/org/springframework/core/env/EnumerablePropertySource.java +++ b/spring-core/src/main/java/org/springframework/core/env/EnumerablePropertySource.java @@ -16,6 +16,7 @@ package org.springframework.core.env; +import org.springframework.lang.NonNullApi; import org.springframework.util.ObjectUtils; /** @@ -41,6 +42,7 @@ import org.springframework.util.ObjectUtils; * @author Juergen Hoeller * @since 3.1 */ +@NonNullApi public abstract class EnumerablePropertySource extends PropertySource { public EnumerablePropertySource(String name, T source) { diff --git a/spring-core/src/main/java/org/springframework/core/env/Environment.java b/spring-core/src/main/java/org/springframework/core/env/Environment.java index 52c8717e94e..862a9daf075 100644 --- a/spring-core/src/main/java/org/springframework/core/env/Environment.java +++ b/spring-core/src/main/java/org/springframework/core/env/Environment.java @@ -16,6 +16,8 @@ package org.springframework.core.env; +import org.springframework.lang.NonNullApi; + /** * Interface representing the environment in which the current application is running. * Models two key aspects of the application environment: profiles and @@ -68,6 +70,7 @@ package org.springframework.core.env; * @see org.springframework.context.ConfigurableApplicationContext#setEnvironment * @see org.springframework.context.support.AbstractApplicationContext#createEnvironment */ +@NonNullApi public interface Environment extends PropertyResolver { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/EnvironmentCapable.java b/spring-core/src/main/java/org/springframework/core/env/EnvironmentCapable.java index 2880a6701d0..b1000487210 100644 --- a/spring-core/src/main/java/org/springframework/core/env/EnvironmentCapable.java +++ b/spring-core/src/main/java/org/springframework/core/env/EnvironmentCapable.java @@ -16,8 +16,6 @@ package org.springframework.core.env; -import org.springframework.lang.Nullable; - /** * Interface indicating a component that contains and exposes an {@link Environment} reference. * @@ -46,7 +44,6 @@ public interface EnvironmentCapable { * Return the {@link Environment} associated with this component * (may be {@code null} or a default environment). */ - @Nullable Environment getEnvironment(); } diff --git a/spring-core/src/main/java/org/springframework/core/env/JOptCommandLinePropertySource.java b/spring-core/src/main/java/org/springframework/core/env/JOptCommandLinePropertySource.java index 19733690e5d..64b1dc54820 100644 --- a/spring-core/src/main/java/org/springframework/core/env/JOptCommandLinePropertySource.java +++ b/spring-core/src/main/java/org/springframework/core/env/JOptCommandLinePropertySource.java @@ -23,6 +23,8 @@ import java.util.List; import joptsimple.OptionSet; import joptsimple.OptionSpec; +import org.springframework.lang.NonNullApi; + /** * {@link CommandLinePropertySource} implementation backed by a JOpt {@link OptionSet}. * @@ -54,6 +56,7 @@ import joptsimple.OptionSpec; * @see joptsimple.OptionParser * @see joptsimple.OptionSet */ +@NonNullApi public class JOptCommandLinePropertySource extends CommandLinePropertySource { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/MapPropertySource.java b/spring-core/src/main/java/org/springframework/core/env/MapPropertySource.java index 0a4a173fa0e..23690c90dd8 100644 --- a/spring-core/src/main/java/org/springframework/core/env/MapPropertySource.java +++ b/spring-core/src/main/java/org/springframework/core/env/MapPropertySource.java @@ -18,6 +18,7 @@ package org.springframework.core.env; import java.util.Map; +import org.springframework.lang.NonNullApi; import org.springframework.util.StringUtils; /** @@ -28,6 +29,7 @@ import org.springframework.util.StringUtils; * @since 3.1 * @see PropertiesPropertySource */ +@NonNullApi public class MapPropertySource extends EnumerablePropertySource> { public MapPropertySource(String name, Map source) { diff --git a/spring-core/src/main/java/org/springframework/core/env/MissingRequiredPropertiesException.java b/spring-core/src/main/java/org/springframework/core/env/MissingRequiredPropertiesException.java index 18866d1045d..d81344d939d 100644 --- a/spring-core/src/main/java/org/springframework/core/env/MissingRequiredPropertiesException.java +++ b/spring-core/src/main/java/org/springframework/core/env/MissingRequiredPropertiesException.java @@ -19,6 +19,8 @@ package org.springframework.core.env; import java.util.LinkedHashSet; import java.util.Set; +import org.springframework.lang.NonNullApi; + /** * Exception thrown when required properties are not found. * @@ -29,6 +31,7 @@ import java.util.Set; * @see org.springframework.context.support.AbstractApplicationContext#prepareRefresh() */ @SuppressWarnings("serial") +@NonNullApi public class MissingRequiredPropertiesException extends IllegalStateException { private final Set missingRequiredProperties = new LinkedHashSet<>(); diff --git a/spring-core/src/main/java/org/springframework/core/env/MutablePropertySources.java b/spring-core/src/main/java/org/springframework/core/env/MutablePropertySources.java index 0317c739c32..98b387e88a5 100644 --- a/spring-core/src/main/java/org/springframework/core/env/MutablePropertySources.java +++ b/spring-core/src/main/java/org/springframework/core/env/MutablePropertySources.java @@ -23,6 +23,7 @@ import java.util.concurrent.CopyOnWriteArrayList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; @@ -40,6 +41,7 @@ import org.springframework.util.StringUtils; * @since 3.1 * @see PropertySourcesPropertyResolver */ +@NonNullApi public class MutablePropertySources implements PropertySources { private final Log logger; diff --git a/spring-core/src/main/java/org/springframework/core/env/PropertiesPropertySource.java b/spring-core/src/main/java/org/springframework/core/env/PropertiesPropertySource.java index 062e25e9f79..61ff2ea32d5 100644 --- a/spring-core/src/main/java/org/springframework/core/env/PropertiesPropertySource.java +++ b/spring-core/src/main/java/org/springframework/core/env/PropertiesPropertySource.java @@ -19,6 +19,8 @@ package org.springframework.core.env; import java.util.Map; import java.util.Properties; +import org.springframework.lang.NonNullApi; + /** * {@link PropertySource} implementation that extracts properties from a * {@link java.util.Properties} object. @@ -33,6 +35,7 @@ import java.util.Properties; * @author Juergen Hoeller * @since 3.1 */ +@NonNullApi public class PropertiesPropertySource extends MapPropertySource { @SuppressWarnings({"unchecked", "rawtypes"}) diff --git a/spring-core/src/main/java/org/springframework/core/env/PropertyResolver.java b/spring-core/src/main/java/org/springframework/core/env/PropertyResolver.java index 8526ba90b34..34aa9e35ccb 100644 --- a/spring-core/src/main/java/org/springframework/core/env/PropertyResolver.java +++ b/spring-core/src/main/java/org/springframework/core/env/PropertyResolver.java @@ -16,6 +16,7 @@ package org.springframework.core.env; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; /** @@ -27,6 +28,7 @@ import org.springframework.lang.Nullable; * @see Environment * @see PropertySourcesPropertyResolver */ +@NonNullApi public interface PropertyResolver { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/PropertySource.java b/spring-core/src/main/java/org/springframework/core/env/PropertySource.java index c394fb9d898..1ab0ca89a5e 100644 --- a/spring-core/src/main/java/org/springframework/core/env/PropertySource.java +++ b/spring-core/src/main/java/org/springframework/core/env/PropertySource.java @@ -19,6 +19,7 @@ package org.springframework.core.env; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; @@ -56,6 +57,7 @@ import org.springframework.util.ObjectUtils; * @see MutablePropertySources * @see org.springframework.context.annotation.PropertySource */ +@NonNullApi public abstract class PropertySource { protected final Log logger = LogFactory.getLog(getClass()); diff --git a/spring-core/src/main/java/org/springframework/core/env/PropertySources.java b/spring-core/src/main/java/org/springframework/core/env/PropertySources.java index b4b0d7432e8..c1bcc50d45c 100644 --- a/spring-core/src/main/java/org/springframework/core/env/PropertySources.java +++ b/spring-core/src/main/java/org/springframework/core/env/PropertySources.java @@ -16,6 +16,7 @@ package org.springframework.core.env; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; /** @@ -24,6 +25,7 @@ import org.springframework.lang.Nullable; * @author Chris Beams * @since 3.1 */ +@NonNullApi public interface PropertySources extends Iterable> { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/PropertySourcesPropertyResolver.java b/spring-core/src/main/java/org/springframework/core/env/PropertySourcesPropertyResolver.java index 424ea518d0b..cad6b088a17 100644 --- a/spring-core/src/main/java/org/springframework/core/env/PropertySourcesPropertyResolver.java +++ b/spring-core/src/main/java/org/springframework/core/env/PropertySourcesPropertyResolver.java @@ -16,6 +16,7 @@ package org.springframework.core.env; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; /** @@ -29,6 +30,7 @@ import org.springframework.lang.Nullable; * @see PropertySources * @see AbstractEnvironment */ +@NonNullApi public class PropertySourcesPropertyResolver extends AbstractPropertyResolver { private final PropertySources propertySources; diff --git a/spring-core/src/main/java/org/springframework/core/env/ReadOnlySystemAttributesMap.java b/spring-core/src/main/java/org/springframework/core/env/ReadOnlySystemAttributesMap.java index 453fffcc846..3c0b946ab7e 100644 --- a/spring-core/src/main/java/org/springframework/core/env/ReadOnlySystemAttributesMap.java +++ b/spring-core/src/main/java/org/springframework/core/env/ReadOnlySystemAttributesMap.java @@ -21,6 +21,8 @@ import java.util.Collections; import java.util.Map; import java.util.Set; +import org.springframework.lang.NonNullApi; + /** * Read-only {@code Map} implementation that is backed by system * properties or environment variables. @@ -35,6 +37,7 @@ import java.util.Set; * @author Chris Beams * @since 3.0 */ +@NonNullApi abstract class ReadOnlySystemAttributesMap implements Map { @Override diff --git a/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLineArgsParser.java b/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLineArgsParser.java index b7ad3c42d9a..21a7d00e1a0 100644 --- a/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLineArgsParser.java +++ b/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLineArgsParser.java @@ -16,6 +16,8 @@ package org.springframework.core.env; +import org.springframework.lang.NonNullApi; + /** * Parses a {@code String[]} of command line arguments in order to populate a * {@link CommandLineArgs} object. @@ -49,6 +51,7 @@ package org.springframework.core.env; * @author Chris Beams * @since 3.1 */ +@NonNullApi class SimpleCommandLineArgsParser { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLinePropertySource.java b/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLinePropertySource.java index f1b1f8d7b5f..340804333b5 100644 --- a/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLinePropertySource.java +++ b/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLinePropertySource.java @@ -18,6 +18,8 @@ package org.springframework.core.env; import java.util.List; +import org.springframework.lang.NonNullApi; + /** * {@link CommandLinePropertySource} implementation backed by a simple String array. * @@ -75,6 +77,7 @@ import java.util.List; * @see CommandLinePropertySource * @see JOptCommandLinePropertySource */ +@NonNullApi public class SimpleCommandLinePropertySource extends CommandLinePropertySource { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/StandardEnvironment.java b/spring-core/src/main/java/org/springframework/core/env/StandardEnvironment.java index 9437134f91a..48865731e7b 100644 --- a/spring-core/src/main/java/org/springframework/core/env/StandardEnvironment.java +++ b/spring-core/src/main/java/org/springframework/core/env/StandardEnvironment.java @@ -16,6 +16,8 @@ package org.springframework.core.env; +import org.springframework.lang.NonNullApi; + /** * {@link Environment} implementation suitable for use in 'standard' (i.e. non-web) * applications. @@ -51,6 +53,7 @@ package org.springframework.core.env; * @see SystemEnvironmentPropertySource * @see org.springframework.web.context.support.StandardServletEnvironment */ +@NonNullApi public class StandardEnvironment extends AbstractEnvironment { /** System environment property source name: {@value} */ diff --git a/spring-core/src/main/java/org/springframework/core/env/SystemEnvironmentPropertySource.java b/spring-core/src/main/java/org/springframework/core/env/SystemEnvironmentPropertySource.java index b6237dabcc6..a651aeaa6e4 100644 --- a/spring-core/src/main/java/org/springframework/core/env/SystemEnvironmentPropertySource.java +++ b/spring-core/src/main/java/org/springframework/core/env/SystemEnvironmentPropertySource.java @@ -18,6 +18,7 @@ package org.springframework.core.env; import java.util.Map; +import org.springframework.lang.NonNullApi; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -63,6 +64,7 @@ import org.springframework.util.Assert; * @see AbstractEnvironment#getSystemEnvironment() * @see AbstractEnvironment#ACTIVE_PROFILES_PROPERTY_NAME */ +@NonNullApi public class SystemEnvironmentPropertySource extends MapPropertySource { /** diff --git a/spring-core/src/main/java/org/springframework/core/env/package-info.java b/spring-core/src/main/java/org/springframework/core/env/package-info.java index 5939ffabbab..b454a6c65c4 100644 --- a/spring-core/src/main/java/org/springframework/core/env/package-info.java +++ b/spring-core/src/main/java/org/springframework/core/env/package-info.java @@ -2,7 +2,4 @@ * Spring's environment abstraction consisting of bean definition * profile and hierarchical property source support. */ -@NonNullApi package org.springframework.core.env; - -import org.springframework.lang.NonNullApi; diff --git a/spring-core/src/main/java/org/springframework/lang/NonNullApi.java b/spring-core/src/main/java/org/springframework/lang/NonNullApi.java index 7c06b2dbde2..ec3e244306f 100644 --- a/spring-core/src/main/java/org/springframework/lang/NonNullApi.java +++ b/spring-core/src/main/java/org/springframework/lang/NonNullApi.java @@ -23,7 +23,7 @@ import javax.annotation.meta.TypeQualifierDefault; */ @Documented @Nonnull -@Target(ElementType.PACKAGE) +@Target({ElementType.PACKAGE, ElementType.TYPE}) @TypeQualifierDefault({ElementType.METHOD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface NonNullApi {