From b494c53b40a76a3ce01a54b1bd384b6809f1a147 Mon Sep 17 00:00:00 2001 From: Sebastien Deleuze Date: Wed, 31 May 2017 22:45:31 +0200 Subject: [PATCH] Avoid defining nullability for non-relevant API Defining nullability of some API like EnvironmentCapable or ConditionContext causes issues in Spring Boot because in the context where they are used, it is known for sure they will return non-null values even if their API can in other context return null values. It is better in this case for both Java and Kotlin to not define at all the nullabity of such API. In practice, this is achieved by removing the package level @NonNullApi annotation and adding it only on the relevant classes. Issue: SPR-15540 --- .../context/annotation/AdviceModeImportSelector.java | 2 ++ .../context/annotation/AnnotatedBeanDefinitionReader.java | 2 ++ .../context/annotation/AnnotationBeanNameGenerator.java | 2 ++ .../annotation/AnnotationConfigApplicationContext.java | 2 ++ .../annotation/AnnotationConfigBeanDefinitionParser.java | 2 ++ .../context/annotation/AnnotationConfigRegistry.java | 3 +++ .../context/annotation/AnnotationConfigUtils.java | 2 ++ .../context/annotation/AnnotationScopeMetadataResolver.java | 2 ++ .../context/annotation/AspectJAutoProxyRegistrar.java | 2 ++ .../context/annotation/AutoProxyRegistrar.java | 2 ++ .../context/annotation/BeanAnnotationHelper.java | 2 ++ .../org/springframework/context/annotation/BeanMethod.java | 2 ++ .../context/annotation/ClassPathBeanDefinitionScanner.java | 2 ++ .../ClassPathScanningCandidateComponentProvider.java | 2 ++ .../annotation/CommonAnnotationBeanPostProcessor.java | 2 ++ .../context/annotation/ComponentScanAnnotationParser.java | 2 ++ .../annotation/ComponentScanBeanDefinitionParser.java | 2 ++ .../org/springframework/context/annotation/Condition.java | 2 ++ .../context/annotation/ConditionContext.java | 6 ------ .../context/annotation/ConditionEvaluator.java | 2 ++ .../context/annotation/ConfigurationClass.java | 2 ++ .../annotation/ConfigurationClassBeanDefinitionReader.java | 2 ++ .../context/annotation/ConfigurationClassEnhancer.java | 2 ++ .../context/annotation/ConfigurationClassParser.java | 2 ++ .../context/annotation/ConfigurationClassPostProcessor.java | 2 ++ .../context/annotation/ConfigurationClassUtils.java | 2 ++ .../context/annotation/ConfigurationCondition.java | 3 +++ .../context/annotation/ConfigurationMethod.java | 2 ++ .../annotation/ConflictingBeanDefinitionException.java | 3 +++ .../ContextAnnotationAutowireCandidateResolver.java | 2 ++ .../context/annotation/DeferredImportSelector.java | 3 +++ .../org/springframework/context/annotation/ImportAware.java | 2 ++ .../context/annotation/ImportBeanDefinitionRegistrar.java | 2 ++ .../springframework/context/annotation/ImportRegistry.java | 2 ++ .../springframework/context/annotation/ImportSelector.java | 2 ++ .../context/annotation/Jsr330ScopeMetadataResolver.java | 2 ++ .../context/annotation/LoadTimeWeavingConfiguration.java | 2 ++ .../context/annotation/LoadTimeWeavingConfigurer.java | 2 ++ .../context/annotation/MBeanExportConfiguration.java | 2 ++ .../context/annotation/ParserStrategyUtils.java | 2 ++ .../context/annotation/ScannedGenericBeanDefinition.java | 2 ++ .../springframework/context/annotation/ScopeMetadata.java | 2 ++ .../context/annotation/ScopeMetadataResolver.java | 2 ++ .../context/annotation/ScopedProxyCreator.java | 2 ++ .../springframework/context/annotation/package-info.java | 3 --- .../org/springframework/core/env/AbstractEnvironment.java | 2 ++ .../springframework/core/env/AbstractPropertyResolver.java | 2 ++ .../java/org/springframework/core/env/CommandLineArgs.java | 2 ++ .../springframework/core/env/CommandLinePropertySource.java | 2 ++ .../springframework/core/env/CompositePropertySource.java | 2 ++ .../springframework/core/env/ConfigurableEnvironment.java | 3 +++ .../core/env/ConfigurablePropertyResolver.java | 2 ++ .../springframework/core/env/EnumerablePropertySource.java | 2 ++ .../main/java/org/springframework/core/env/Environment.java | 3 +++ .../org/springframework/core/env/EnvironmentCapable.java | 3 --- .../core/env/JOptCommandLinePropertySource.java | 3 +++ .../org/springframework/core/env/MapPropertySource.java | 2 ++ .../core/env/MissingRequiredPropertiesException.java | 3 +++ .../springframework/core/env/MutablePropertySources.java | 2 ++ .../springframework/core/env/PropertiesPropertySource.java | 3 +++ .../java/org/springframework/core/env/PropertyResolver.java | 2 ++ .../java/org/springframework/core/env/PropertySource.java | 2 ++ .../java/org/springframework/core/env/PropertySources.java | 2 ++ .../core/env/PropertySourcesPropertyResolver.java | 2 ++ .../core/env/ReadOnlySystemAttributesMap.java | 3 +++ .../core/env/SimpleCommandLineArgsParser.java | 3 +++ .../core/env/SimpleCommandLinePropertySource.java | 3 +++ .../org/springframework/core/env/StandardEnvironment.java | 3 +++ .../core/env/SystemEnvironmentPropertySource.java | 2 ++ .../java/org/springframework/core/env/package-info.java | 3 --- .../src/main/java/org/springframework/lang/NonNullApi.java | 2 +- 71 files changed, 146 insertions(+), 16 deletions(-) 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 {