From 73cf07e9a4f1000087118c24ef5d56f621f41160 Mon Sep 17 00:00:00 2001 From: Sebastien Deleuze Date: Thu, 17 Aug 2017 14:30:14 +0200 Subject: [PATCH] Fix overridden methods nullability Issue: SPR-15869 --- .../org/springframework/aop/TargetSource.java | 1 + .../AspectJAdviceParameterNameDiscoverer.java | 2 ++ .../aspectj/SimpleAspectInstanceFactory.java | 2 ++ .../SingletonAspectInstanceFactory.java | 2 ++ .../AbstractAspectJAdvisorFactory.java | 2 ++ .../BeanFactoryAspectInstanceFactory.java | 2 ++ ...ngletonAspectInstanceFactoryDecorator.java | 2 ++ .../ReflectiveAspectJAdvisorFactory.java | 2 ++ .../config/AdvisorComponentDefinition.java | 1 + .../AspectJAutoProxyBeanDefinitionParser.java | 2 ++ .../config/ConfigBeanDefinitionParser.java | 1 + .../aop/config/MethodLocatingFactoryBean.java | 1 + .../config/PointcutComponentDefinition.java | 2 ++ ...BeanFactoryAwareAspectInstanceFactory.java | 1 + .../AbstractSingletonProxyFactoryBean.java | 1 + .../aop/framework/ProxyFactoryBean.java | 1 + .../framework/ReflectiveMethodInvocation.java | 1 + .../autoproxy/AbstractAutoProxyCreator.java | 2 ++ ...ctBeanFactoryBasedTargetSourceCreator.java | 1 + .../target/LazyInitTargetSourceCreator.java | 2 ++ .../target/QuickTargetSourceCreator.java | 2 ++ .../AsyncExecutionInterceptor.java | 2 ++ .../AbstractLazyCreationTargetSource.java | 2 ++ .../target/AbstractPoolingTargetSource.java | 2 ++ .../aop/target/CommonsPool2TargetSource.java | 3 ++ .../aop/target/EmptyTargetSource.java | 2 ++ .../aop/target/LazyInitTargetSource.java | 3 ++ .../AbstractRefreshableTargetSource.java | 3 ++ .../springframework/aop/target/package.html | 15 ---------- .../AbstractNestablePropertyAccessor.java | 3 ++ .../beans/AbstractPropertyAccessor.java | 2 ++ .../beans/BeanMetadataAttributeAccessor.java | 2 ++ .../beans/BeanWrapperImpl.java | 3 ++ .../beans/DirectFieldAccessor.java | 2 ++ .../beans/ExtendedBeanInfoFactory.java | 2 ++ .../beans/MutablePropertyValues.java | 1 + .../beans/TypeConverterSupport.java | 3 ++ .../AnnotationBeanWiringInfoResolver.java | 2 ++ .../AutowiredAnnotationBeanPostProcessor.java | 1 + ...erAnnotationAutowireCandidateResolver.java | 1 + .../factory/config/AbstractFactoryBean.java | 1 + .../factory/config/BeanDefinitionHolder.java | 1 + .../factory/config/EmbeddedValueResolver.java | 1 + .../config/FieldRetrievingFactoryBean.java | 1 + ...ntiationAwareBeanPostProcessorAdapter.java | 4 +++ .../config/MethodInvokingFactoryBean.java | 1 + .../factory/config/PropertiesFactoryBean.java | 1 + .../config/PropertyPathFactoryBean.java | 1 + .../config/PropertyPlaceholderConfigurer.java | 2 ++ .../config/ServiceLocatorFactoryBean.java | 1 + .../factory/config/YamlMapFactoryBean.java | 1 + .../config/YamlPropertiesFactoryBean.java | 1 + .../serviceloader/ServiceFactoryBean.java | 2 ++ .../AbstractAutowireCapableBeanFactory.java | 8 +++++ .../support/AbstractBeanDefinition.java | 3 ++ .../factory/support/AbstractBeanFactory.java | 3 ++ .../support/DefaultListableBeanFactory.java | 8 +++++ .../support/DefaultSingletonBeanRegistry.java | 1 + .../SimpleAutowireCandidateResolver.java | 2 ++ .../support/StaticListableBeanFactory.java | 1 + .../xml/AbstractBeanDefinitionParser.java | 1 + .../xml/DefaultNamespaceHandlerResolver.java | 1 + .../factory/xml/NamespaceHandlerSupport.java | 2 ++ .../factory/xml/ResourceEntityResolver.java | 1 + .../SimpleConstructorNamespaceHandler.java | 2 ++ .../xml/SimplePropertyNamespaceHandler.java | 2 ++ .../cache/caffeine/CaffeineCache.java | 1 + .../cache/caffeine/CaffeineCacheManager.java | 1 + .../cache/ehcache/EhCacheCache.java | 2 ++ .../cache/ehcache/EhCacheFactoryBean.java | 1 + .../ehcache/EhCacheManagerFactoryBean.java | 1 + .../cache/jcache/JCacheCache.java | 2 ++ .../jcache/JCacheManagerFactoryBean.java | 1 + .../TransactionAwareCacheDecorator.java | 3 ++ .../TransactionAwareCacheManagerProxy.java | 1 + .../mail/MailSendException.java | 1 + .../commonj/TimerManagerFactoryBean.java | 1 + .../commonj/TimerManagerTaskScheduler.java | 1 + .../quartz/CronTriggerFactoryBean.java | 1 + .../quartz/JobDetailFactoryBean.java | 1 + .../MethodInvokingJobDetailFactoryBean.java | 1 + .../quartz/SchedulerFactoryBean.java | 1 + .../quartz/SimpleTriggerFactoryBean.java | 1 + .../FreeMarkerConfigurationFactoryBean.java | 1 + .../java/org/springframework/cache/Cache.java | 3 +- .../AnnotationCacheOperationSource.java | 2 ++ .../annotation/CachingConfigurerSupport.java | 5 ++++ .../SpringCacheAnnotationParser.java | 2 ++ .../ConcurrentMapCacheFactoryBean.java | 1 + .../concurrent/ConcurrentMapCacheManager.java | 1 + ...tationDrivenCacheBeanDefinitionParser.java | 1 + .../AbstractFallbackCacheOperationSource.java | 1 + ...eanFactoryCacheOperationSourceAdvisor.java | 1 + .../interceptor/CacheEvaluationContext.java | 2 ++ .../CompositeCacheOperationSource.java | 1 + .../NameMatchCacheOperationSource.java | 1 + .../cache/support/AbstractCacheManager.java | 1 + .../cache/support/CompositeCacheManager.java | 2 ++ .../cache/support/NoOpCache.java | 3 ++ .../cache/support/NoOpCacheManager.java | 2 ++ .../cache/support/SimpleValueWrapper.java | 1 + .../AnnotationConfigBeanDefinitionParser.java | 2 ++ .../ClassPathBeanDefinitionScanner.java | 1 + .../ComponentScanBeanDefinitionParser.java | 1 + .../annotation/ConfigurationClassParser.java | 1 + ...xtAnnotationAutowireCandidateResolver.java | 1 + .../ScannedGenericBeanDefinition.java | 2 ++ .../MethodBasedEvaluationContext.java | 2 ++ .../StandardBeanExpressionResolver.java | 1 + .../support/AbstractApplicationContext.java | 3 ++ .../ApplicationContextAwareProcessor.java | 2 ++ .../support/ConversionServiceFactoryBean.java | 1 + .../support/GenericApplicationContext.java | 1 + .../PropertySourcesPlaceholderConfigurer.java | 1 + ...ReloadableResourceBundleMessageSource.java | 1 + .../support/ResourceBundleMessageSource.java | 1 + .../context/support/SimpleThreadScope.java | 3 ++ .../context/support/StaticMessageSource.java | 2 ++ .../AbstractRemoteSlsbInvokerInterceptor.java | 1 + .../access/LocalSlsbInvokerInterceptor.java | 1 + ...LocalStatelessSessionProxyFactoryBean.java | 1 + .../SimpleRemoteSlsbInvokerInterceptor.java | 1 + ...emoteStatelessSessionProxyFactoryBean.java | 1 + .../joda/DateTimeFormatterFactoryBean.java | 1 + .../DateTimeFormatterFactoryBean.java | 1 + .../support/FormattingConversionService.java | 3 ++ ...ormattingConversionServiceFactoryBean.java | 1 + .../jmx/access/MBeanProxyFactoryBean.java | 1 + .../jmx/export/MBeanExporter.java | 1 + .../AnnotationJmxAttributeSource.java | 4 +++ .../support/ConnectorServerFactoryBean.java | 1 + .../MBeanServerConnectionFactoryBean.java | 1 + .../jmx/support/MBeanServerFactoryBean.java | 1 + .../WebSphereMBeanServerFactoryBean.java | 1 + .../jndi/JndiObjectFactoryBean.java | 1 + .../jndi/JndiObjectTargetSource.java | 2 ++ .../jndi/JndiPropertySource.java | 2 ++ .../jndi/support/SimpleJndiBeanFactory.java | 1 + .../remoting/rmi/RmiInvocationWrapper.java | 3 ++ .../AnnotationAsyncExecutionInterceptor.java | 1 + .../AsyncConfigurationSelector.java | 2 ++ .../annotation/AsyncConfigurerSupport.java | 2 ++ .../concurrent/ConcurrentTaskScheduler.java | 1 + .../concurrent/ForkJoinPoolFactoryBean.java | 1 + .../ScheduledExecutorFactoryBean.java | 1 + .../ThreadPoolExecutorFactoryBean.java | 1 + .../concurrent/ThreadPoolTaskScheduler.java | 1 + .../AnnotationDrivenBeanDefinitionParser.java | 2 ++ .../config/TaskExecutorFactoryBean.java | 1 + .../support/SimpleTriggerContext.java | 3 ++ .../scripting/bsh/BshScriptFactory.java | 2 ++ .../config/ScriptBeanDefinitionParser.java | 1 + .../scripting/groovy/GroovyScriptFactory.java | 3 ++ .../support/ResourceScriptSource.java | 1 + .../support/ScriptFactoryPostProcessor.java | 1 + .../support/StandardScriptEvaluator.java | 2 ++ .../support/StandardScriptFactory.java | 2 ++ .../scripting/support/StaticScriptSource.java | 1 + .../support/DelegatingThemeSource.java | 1 + .../support/ResourceBundleThemeSource.java | 1 + .../validation/AbstractBindingResult.java | 9 ++++++ .../validation/AbstractErrors.java | 5 +++- .../AbstractPropertyBindingResult.java | 3 ++ .../validation/BindException.java | 6 ++++ .../validation/DataBinder.java | 4 +++ .../validation/MapBindingResult.java | 2 ++ .../SpringValidatorAdapter.java | 1 + .../core/AttributeAccessorSupport.java | 2 ++ .../core/GenericTypeResolver.java | 1 + ...lVariableTableParameterNameDiscoverer.java | 2 ++ .../PrioritizedParameterNameDiscoverer.java | 4 +++ .../springframework/core/ResolvableType.java | 2 ++ .../core/SerializableTypeWrapper.java | 2 ++ ...dardReflectionParameterNameDiscoverer.java | 5 ++++ ...liasAwareAnnotationAttributeExtractor.java | 1 + .../AnnotationAwareOrderComparator.java | 5 ++++ .../DefaultAnnotationAttributeExtractor.java | 2 ++ .../MapAnnotationAttributeExtractor.java | 2 ++ .../converter/ConvertingComparator.java | 2 ++ .../support/ArrayToArrayConverter.java | 1 + .../support/GenericConversionService.java | 4 +++ .../convert/support/MapToMapConverter.java | 1 + .../support/ObjectToOptionalConverter.java | 1 - .../core/env/AbstractEnvironment.java | 4 +++ .../core/env/AbstractPropertyResolver.java | 1 + .../core/env/CommandLinePropertySource.java | 1 + .../core/env/CompositePropertySource.java | 2 ++ .../env/JOptCommandLinePropertySource.java | 3 ++ .../core/env/MapPropertySource.java | 2 ++ .../core/env/MutablePropertySources.java | 1 + .../core/env/PropertySource.java | 2 ++ .../env/PropertySourcesPropertyResolver.java | 3 ++ .../env/SimpleCommandLinePropertySource.java | 3 ++ .../env/SystemEnvironmentPropertySource.java | 1 + .../core/io/AbstractResource.java | 2 ++ .../core/io/ClassPathResource.java | 1 + .../core/io/DefaultResourceLoader.java | 1 + .../PathMatchingResourcePatternResolver.java | 1 + .../core/type/StandardAnnotationMetadata.java | 4 +++ .../core/type/StandardClassMetadata.java | 3 ++ .../core/type/StandardMethodMetadata.java | 5 ++++ .../AnnotationMetadataReadingVisitor.java | 4 +++ .../MethodMetadataReadingVisitor.java | 4 +++ .../type/filter/AnnotationTypeFilter.java | 2 ++ .../type/filter/AssignableTypeFilter.java | 2 ++ .../org/springframework/lang/Nullable.java | 5 ++-- .../springframework/util/CollectionUtils.java | 1 + .../util/ConcurrentReferenceHashMap.java | 2 ++ .../util/LinkedMultiValueMap.java | 1 + .../util/SystemPropertyUtils.java | 3 ++ .../common/CompositeStringExpression.java | 4 +++ .../expression/common/LiteralExpression.java | 4 +++ .../expression/spel/ast/SpelNodeImpl.java | 2 ++ .../spel/standard/SpelExpression.java | 16 ++++++++++ .../ReflectiveConstructorResolver.java | 2 ++ .../support/ReflectiveMethodResolver.java | 1 + .../support/ReflectivePropertyAccessor.java | 2 ++ .../support/StandardEvaluationContext.java | 1 + .../spel/support/StandardTypeConverter.java | 1 + .../jdbc/core/JdbcOperations.java | 4 +++ .../jdbc/core/JdbcTemplate.java | 23 +++++++++++++++ .../jdbc/core/ParameterMapper.java | 3 -- .../jdbc/core/SingleColumnRowMapper.java | 1 + .../metadata/Db2CallMetaDataProvider.java | 1 + .../metadata/DerbyCallMetaDataProvider.java | 1 + .../metadata/GenericCallMetaDataProvider.java | 6 ++++ .../GenericTableMetaDataProvider.java | 6 ++++ .../metadata/OracleCallMetaDataProvider.java | 2 ++ .../metadata/OracleTableMetaDataProvider.java | 1 + .../PostgresCallMetaDataProvider.java | 1 + .../SqlServerCallMetaDataProvider.java | 1 + .../metadata/SybaseCallMetaDataProvider.java | 1 + .../AbstractSqlParameterSource.java | 2 ++ .../BeanPropertySqlParameterSource.java | 1 + .../namedparam/EmptySqlParameterSource.java | 4 +++ .../namedparam/MapSqlParameterSource.java | 1 + .../NamedParameterJdbcOperations.java | 2 ++ .../NamedParameterJdbcTemplate.java | 10 +++++++ ...bstractLobStreamingResultSetExtractor.java | 2 ++ .../embedded/EmbeddedDatabaseFactoryBean.java | 1 + .../IsolationLevelDataSourceRouter.java | 2 ++ .../jdbc/object/MappingSqlQuery.java | 1 + .../object/MappingSqlQueryWithParameters.java | 1 + .../jdbc/object/SqlFunction.java | 1 + ...bstractFallbackSQLExceptionTranslator.java | 1 + .../jdbc/support/GeneratedKeyHolder.java | 3 ++ .../SQLErrorCodeSQLExceptionTranslator.java | 1 + .../SQLStateSQLExceptionTranslator.java | 1 + .../jdbc/support/lob/AbstractLobHandler.java | 6 ++++ .../jdbc/support/lob/DefaultLobHandler.java | 3 ++ .../jdbc/support/xml/Jdbc4SqlXmlHandler.java | 8 +++++ .../jdbc/core/JdbcOperationsExtensions.kt | 2 +- .../org/springframework/jms/JmsException.java | 1 + .../AbstractListenerContainerParser.java | 1 + ...notationDrivenJmsBeanDefinitionParser.java | 1 + .../connection/ConnectionFactoryUtils.java | 6 ++++ .../jms/core/JmsMessagingTemplate.java | 14 +++++++++ .../springframework/jms/core/JmsTemplate.java | 29 ++++++++++++++++++- ...stractPollingMessageListenerContainer.java | 2 ++ .../adapter/MessageListenerAdapter.java | 1 - .../endpoint/JmsMessageEndpointManager.java | 3 ++ .../remoting/JmsInvokerProxyFactoryBean.java | 1 + .../converter/AbstractMessageConverter.java | 4 +++ .../converter/CompositeMessageConverter.java | 4 +++ .../converter/DefaultContentTypeResolver.java | 1 + .../converter/GenericMessageConverter.java | 2 ++ .../MappingJackson2MessageConverter.java | 1 + .../converter/SimpleMessageConverter.java | 1 + .../converter/StringMessageConverter.java | 1 + ...DestinationResolvingMessagingTemplate.java | 7 +++++ .../AbstractMessageReceivingTemplate.java | 4 +++ .../core/AbstractMessagingTemplate.java | 8 +++++ .../core/GenericMessagingTemplate.java | 4 +++ .../DestinationPatternsMessageCondition.java | 1 + ...tractNamedValueMethodArgumentResolver.java | 1 + ...inationVariableMethodArgumentResolver.java | 2 ++ .../support/HeaderMethodArgumentResolver.java | 1 + .../HeadersMethodArgumentResolver.java | 2 ++ .../support/PayloadArgumentResolver.java | 1 + ...andlerMethodArgumentResolverComposite.java | 1 + ...dlerMethodReturnValueHandlerComposite.java | 1 + .../simp/SimpMessageMappingInfo.java | 1 + .../simp/SimpMessageTypeMessageCondition.java | 2 ++ .../messaging/simp/SimpSessionScope.java | 3 ++ .../SendToMethodReturnValueHandler.java | 1 + .../SimpAnnotationMethodMessageHandler.java | 3 ++ .../simp/stomp/DefaultStompSession.java | 1 + .../simp/stomp/StompHeaderAccessor.java | 2 ++ .../messaging/simp/stomp/StompHeaders.java | 1 + .../user/DefaultUserDestinationResolver.java | 1 + .../simp/user/MultiServerUserRegistry.java | 2 ++ .../MonoToListenableFutureAdapter.java | 1 + .../HibernateExceptionTranslator.java | 2 ++ .../orm/hibernate5/HibernateTemplate.java | 5 ++++ .../hibernate5/LocalSessionFactoryBean.java | 1 + .../jpa/AbstractEntityManagerFactoryBean.java | 4 +++ .../orm/jpa/DefaultJpaDialect.java | 4 +++ ...ocalContainerEntityManagerFactoryBean.java | 1 + .../jpa/support/SharedEntityManagerBean.java | 1 + .../jpa/vendor/AbstractJpaVendorAdapter.java | 3 ++ .../orm/jpa/vendor/EclipseLinkJpaDialect.java | 1 + .../orm/jpa/vendor/HibernateJpaDialect.java | 1 + .../HibernateJpaSessionFactoryBean.java | 2 ++ .../mock/web/MockServletContext.java | 1 + .../context/cache/DefaultContextCache.java | 1 + .../context/support/DefaultTestContext.java | 3 ++ .../TestContextTransactionUtils.java | 1 + ...rverContainerContextCustomizerFactory.java | 2 ++ .../reactive/server/FluxExchangeResult.java | 3 ++ .../setup/MockMvcConfigurerAdapter.java | 2 ++ .../setup/StandaloneMockMvcBuilder.java | 1 + .../setup/StubWebApplicationContext.java | 4 +++ ...ChainedPersistenceExceptionTranslator.java | 2 ++ .../dao/support/DataAccessUtils.java | 1 + .../jca/cci/core/CciTemplate.java | 3 ++ .../support/LocalConnectionFactoryBean.java | 1 + .../support/ResourceAdapterFactoryBean.java | 1 + .../AnnotationTransactionAttributeSource.java | 2 ++ .../Ejb3TransactionAnnotationParser.java | 2 ++ .../JtaTransactionAnnotationParser.java | 2 ++ .../SpringTransactionAnnotationParser.java | 2 ++ .../AnnotationDrivenBeanDefinitionParser.java | 2 ++ .../JtaTransactionManagerFactoryBean.java | 1 + ...actFallbackTransactionAttributeSource.java | 1 + ...toryTransactionAttributeSourceAdvisor.java | 1 + .../DelegatingTransactionAttribute.java | 2 ++ ...MatchAlwaysTransactionAttributeSource.java | 1 + .../MethodMapTransactionAttributeSource.java | 1 + .../NameMatchTransactionAttributeSource.java | 1 + .../interceptor/TransactionAspectSupport.java | 1 + .../TransactionAttributeSourceAdvisor.java | 1 + .../jta/WebLogicJtaTransactionManager.java | 2 ++ .../jta/WebSphereUowTransactionManager.java | 1 + .../DelegatingTransactionDefinition.java | 2 ++ .../support/SimpleTransactionScope.java | 4 +++ .../TransactionCallbackWithoutResult.java | 2 ++ .../support/TransactionTemplate.java | 1 + .../org/springframework/http/HttpHeaders.java | 1 + .../BufferingClientHttpRequestWrapper.java | 2 ++ .../client/support/HttpRequestWrapper.java | 2 ++ .../http/client/support/ProxyFactoryBean.java | 1 + .../ResourceHttpMessageConverter.java | 1 + .../AbstractJackson2HttpMessageConverter.java | 1 + .../http/converter/json/GsonFactoryBean.java | 1 + .../json/Jackson2ObjectMapperFactoryBean.java | 1 + .../server/ServletServerHttpResponse.java | 2 ++ .../DefaultServerHttpRequestBuilder.java | 1 + .../reactive/ServerHttpRequestDecorator.java | 2 ++ .../reactive/ServletServerHttpRequest.java | 1 + .../reactive/UndertowServerHttpRequest.java | 1 + .../caucho/HessianClientInterceptor.java | 1 + .../caucho/HessianProxyFactoryBean.java | 1 + .../HttpInvokerProxyFactoryBean.java | 1 + .../jaxws/JaxWsPortProxyFactoryBean.java | 1 + .../jaxws/LocalJaxWsServiceFactoryBean.java | 1 + .../ContentNegotiationManagerFactoryBean.java | 1 + .../ParameterContentNegotiationStrategy.java | 2 ++ ...thExtensionContentNegotiationStrategy.java | 1 + ...thExtensionContentNegotiationStrategy.java | 1 + .../web/bind/EscapedErrors.java | 5 ++++ .../support/DefaultSessionAttributeStore.java | 1 + .../support/WebExchangeBindException.java | 8 +++++ .../web/client/AsyncRestTemplate.java | 3 ++ .../web/client/RestTemplate.java | 15 ++++++++++ .../AbstractRequestAttributesScope.java | 3 ++ .../web/context/request/FacesWebRequest.java | 6 ++++ .../web/context/request/RequestScope.java | 3 ++ .../context/request/ServletWebRequest.java | 6 ++++ .../web/context/request/SessionScope.java | 2 ++ .../context/request/async/DeferredResult.java | 2 ++ ...tractRefreshableWebApplicationContext.java | 1 + .../ContextExposingHttpServletRequest.java | 1 + .../support/GenericWebApplicationContext.java | 3 ++ .../support/ServletConfigPropertySource.java | 2 ++ .../ServletContextAttributeFactoryBean.java | 1 + .../ServletContextParameterFactoryBean.java | 1 + .../support/ServletContextPropertySource.java | 2 ++ .../support/ServletContextResource.java | 2 ++ .../context/support/ServletContextScope.java | 4 +++ .../support/StaticWebApplicationContext.java | 1 + .../cors/UrlBasedCorsConfigurationSource.java | 1 + .../UrlBasedCorsConfigurationSource.java | 1 + ...tractNamedValueMethodArgumentResolver.java | 1 + .../AbstractWebArgumentResolverAdapter.java | 1 + .../ErrorsMethodArgumentResolver.java | 1 + ...ExpressionValueMethodArgumentResolver.java | 1 + .../method/annotation/MapMethodProcessor.java | 1 + .../ModelAttributeMethodProcessor.java | 1 + .../annotation/ModelMethodProcessor.java | 1 + .../RequestHeaderMethodArgumentResolver.java | 1 + .../RequestParamMethodArgumentResolver.java | 1 + ...andlerMethodArgumentResolverComposite.java | 1 + .../web/server/ResponseStatusException.java | 1 + .../i18n/FixedLocaleContextResolver.java | 1 + .../web/util/HierarchicalUriComponents.java | 2 ++ .../web/util/OpaqueUriComponents.java | 5 ++++ .../web/util/ServletContextPropertyUtils.java | 2 ++ .../server/ResourceHandlerFunction.java | 2 ++ .../resource/GzipResourceResolver.java | 13 +++++++++ .../resource/VersionResourceResolver.java | 1 + .../AbstractNameValueExpression.java | 3 ++ .../condition/HeadersRequestCondition.java | 2 ++ .../result/condition/NameValueExpression.java | 3 ++ .../condition/ProducesRequestCondition.java | 2 ++ .../RequestMethodsRequestCondition.java | 2 ++ .../result/method/RequestMappingInfo.java | 2 ++ .../web/reactive/result/view/Rendering.java | 1 - .../AbstractListenerWebSocketSession.java | 1 + .../AnnotationDrivenBeanDefinitionParser.java | 2 ++ .../config/CorsBeanDefinitionParser.java | 2 ++ ...ultServletHandlerBeanDefinitionParser.java | 2 ++ .../InterceptorsBeanDefinitionParser.java | 2 ++ .../DelegatingWebMvcConfiguration.java | 3 ++ .../annotation/WebMvcConfigurerAdapter.java | 3 ++ .../annotation/WebMvcConfigurerComposite.java | 2 ++ .../AbstractDetectingUrlHandlerMapping.java | 5 +--- .../AbstractHandlerExceptionResolver.java | 1 + .../handler/AbstractHandlerMapping.java | 3 ++ ...bstractHandlerMethodExceptionResolver.java | 1 + .../handler/AbstractUrlHandlerMapping.java | 1 + .../handler/HandlerMappingIntrospector.java | 1 + .../SimpleMappingExceptionResolver.java | 1 + .../handler/SimpleServletHandlerAdapter.java | 2 ++ .../servlet/i18n/CookieLocaleResolver.java | 2 ++ .../web/servlet/i18n/FixedLocaleResolver.java | 1 + .../servlet/i18n/SessionLocaleResolver.java | 1 + .../web/servlet/mvc/AbstractController.java | 1 + .../mvc/HttpRequestHandlerAdapter.java | 2 ++ .../mvc/SimpleControllerHandlerAdapter.java | 2 ++ .../ResponseStatusExceptionResolver.java | 1 + .../condition/CompositeRequestCondition.java | 2 ++ .../condition/ConsumesRequestCondition.java | 1 + .../condition/HeadersRequestCondition.java | 2 ++ .../mvc/condition/ParamsRequestCondition.java | 2 ++ .../condition/PatternsRequestCondition.java | 1 + .../condition/ProducesRequestCondition.java | 1 + .../mvc/condition/RequestConditionHolder.java | 1 + .../RequestMethodsRequestCondition.java | 1 + .../method/AbstractHandlerMethodAdapter.java | 1 + .../mvc/method/RequestMappingInfo.java | 1 + ...tractMappingJacksonResponseBodyAdvice.java | 1 + .../annotation/HttpEntityMethodProcessor.java | 1 + ...trixVariableMapMethodArgumentResolver.java | 1 + .../MatrixVariableMethodArgumentResolver.java | 2 ++ .../PathVariableMethodArgumentResolver.java | 1 + ...equestAttributeMethodArgumentResolver.java | 2 ++ .../RequestMappingHandlerMapping.java | 2 ++ .../RequestPartMethodArgumentResolver.java | 1 + .../RequestResponseBodyAdviceChain.java | 2 ++ ...vletCookieValueMethodArgumentResolver.java | 1 + ...essionAttributeMethodArgumentResolver.java | 2 ++ .../DefaultHandlerExceptionResolver.java | 1 + .../resource/AbstractResourceResolver.java | 2 ++ .../resource/AbstractVersionStrategy.java | 4 +++ .../DefaultResourceResolverChain.java | 2 ++ .../resource/GzipResourceResolver.java | 13 +++++++++ .../resource/ResourceHttpRequestHandler.java | 1 + .../resource/VersionResourceResolver.java | 1 + .../support/AbstractFlashMapManager.java | 1 + .../support/SessionFlashMapManager.java | 2 ++ .../web/servlet/tags/BindTag.java | 1 + .../web/servlet/tags/EvalTag.java | 1 + .../form/AbstractDataBoundFormElementTag.java | 2 ++ .../view/AbstractCachingViewResolver.java | 2 ++ .../servlet/view/BeanNameViewResolver.java | 2 ++ .../view/ContentNegotiatingViewResolver.java | 2 ++ .../servlet/view/ViewResolverComposite.java | 2 ++ .../web/socket/WebSocketHttpHeaders.java | 1 + .../web/socket/WebSocketSession.java | 1 - .../adapter/AbstractWebSocketSession.java | 1 + .../adapter/NativeWebSocketSession.java | 2 +- .../adapter/jetty/JettyWebSocketSession.java | 1 + .../standard/StandardWebSocketSession.java | 1 + .../config/HandlersBeanDefinitionParser.java | 2 ++ .../WebSocketConfigurationSupport.java | 1 + .../handler/WebSocketSessionDecorator.java | 2 ++ .../messaging/DefaultSimpUserRegistry.java | 2 ++ .../StompSubProtocolErrorHandler.java | 1 + .../messaging/StompSubProtocolHandler.java | 1 + ...bSocketAnnotationMethodMessageHandler.java | 1 + .../ServletServerContainerFactoryBean.java | 1 + .../client/WebSocketClientSockJsSession.java | 1 + .../frame/Jackson2SockJsMessageCodec.java | 3 ++ .../sockjs/support/AbstractSockJsService.java | 1 + .../support/SockJsHttpRequestHandler.java | 2 ++ .../JsonpReceivingTransportHandler.java | 2 ++ .../handler/XhrReceivingTransportHandler.java | 2 ++ .../session/WebSocketServerSockJsSession.java | 4 ++- 488 files changed, 1016 insertions(+), 34 deletions(-) delete mode 100644 spring-aop/src/main/java/org/springframework/aop/target/package.html diff --git a/spring-aop/src/main/java/org/springframework/aop/TargetSource.java b/spring-aop/src/main/java/org/springframework/aop/TargetSource.java index cc4da039b4b..61afc9d4bba 100644 --- a/spring-aop/src/main/java/org/springframework/aop/TargetSource.java +++ b/spring-aop/src/main/java/org/springframework/aop/TargetSource.java @@ -42,6 +42,7 @@ public interface TargetSource extends TargetClassAware { * @return the type of targets returned by this {@link TargetSource} */ @Override + @Nullable Class getTargetClass(); /** diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java index 1ec800eb026..6e0c4ffe3d5 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java @@ -222,6 +222,7 @@ public class AspectJAdviceParameterNameDiscoverer implements ParameterNameDiscov * @return the parameter names */ @Override + @Nullable public String[] getParameterNames(Method method) { this.argumentTypes = method.getParameterTypes(); this.numberOfRemainingUnboundArguments = this.argumentTypes.length; @@ -310,6 +311,7 @@ public class AspectJAdviceParameterNameDiscoverer implements ParameterNameDiscov * {@link #setRaiseExceptions(boolean) raiseExceptions} has been set to {@code true} */ @Override + @Nullable public String[] getParameterNames(Constructor ctor) { if (this.raiseExceptions) { throw new UnsupportedOperationException("An advice method can never be a constructor"); diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/SimpleAspectInstanceFactory.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/SimpleAspectInstanceFactory.java index 95378f9e67a..c5a22911a82 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/SimpleAspectInstanceFactory.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/SimpleAspectInstanceFactory.java @@ -20,6 +20,7 @@ import java.lang.reflect.InvocationTargetException; import org.springframework.aop.framework.AopConfigException; import org.springframework.core.Ordered; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ReflectionUtils; @@ -76,6 +77,7 @@ public class SimpleAspectInstanceFactory implements AspectInstanceFactory { } @Override + @Nullable public ClassLoader getAspectClassLoader() { return this.aspectClass.getClassLoader(); } diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/SingletonAspectInstanceFactory.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/SingletonAspectInstanceFactory.java index d311f620068..71fb7145032 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/SingletonAspectInstanceFactory.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/SingletonAspectInstanceFactory.java @@ -19,6 +19,7 @@ package org.springframework.aop.aspectj; import java.io.Serializable; import org.springframework.core.Ordered; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -53,6 +54,7 @@ public class SingletonAspectInstanceFactory implements AspectInstanceFactory, Se } @Override + @Nullable public ClassLoader getAspectClassLoader() { return this.aspectInstance.getClass().getClassLoader(); } diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AbstractAspectJAdvisorFactory.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AbstractAspectJAdvisorFactory.java index 6065e0bed23..70b928ab2fb 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AbstractAspectJAdvisorFactory.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AbstractAspectJAdvisorFactory.java @@ -261,6 +261,7 @@ public abstract class AbstractAspectJAdvisorFactory implements AspectJAdvisorFac private static class AspectJAnnotationParameterNameDiscoverer implements ParameterNameDiscoverer { @Override + @Nullable public String[] getParameterNames(Method method) { if (method.getParameterCount() == 0) { return new String[0]; @@ -283,6 +284,7 @@ public abstract class AbstractAspectJAdvisorFactory implements AspectJAdvisorFac } @Override + @Nullable public String[] getParameterNames(Constructor ctor) { throw new UnsupportedOperationException("Spring AOP cannot handle constructor advice"); } diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/BeanFactoryAspectInstanceFactory.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/BeanFactoryAspectInstanceFactory.java index e7a2dcd5783..ccd581cf7b6 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/BeanFactoryAspectInstanceFactory.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/BeanFactoryAspectInstanceFactory.java @@ -91,6 +91,7 @@ public class BeanFactoryAspectInstanceFactory implements MetadataAwareAspectInst } @Override + @Nullable public ClassLoader getAspectClassLoader() { return (this.beanFactory instanceof ConfigurableBeanFactory ? ((ConfigurableBeanFactory) this.beanFactory).getBeanClassLoader() : @@ -103,6 +104,7 @@ public class BeanFactoryAspectInstanceFactory implements MetadataAwareAspectInst } @Override + @Nullable public Object getAspectCreationMutex() { if (this.beanFactory.isSingleton(this.name)) { // Rely on singleton semantics provided by the factory -> no local lock. diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/LazySingletonAspectInstanceFactoryDecorator.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/LazySingletonAspectInstanceFactoryDecorator.java index e6bc38f37aa..3a6af19a2ea 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/LazySingletonAspectInstanceFactoryDecorator.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/LazySingletonAspectInstanceFactoryDecorator.java @@ -74,6 +74,7 @@ public class LazySingletonAspectInstanceFactoryDecorator implements MetadataAwar } @Override + @Nullable public ClassLoader getAspectClassLoader() { return this.maaif.getAspectClassLoader(); } @@ -84,6 +85,7 @@ public class LazySingletonAspectInstanceFactoryDecorator implements MetadataAwar } @Override + @Nullable public Object getAspectCreationMutex() { return this.maaif.getAspectCreationMutex(); } diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/ReflectiveAspectJAdvisorFactory.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/ReflectiveAspectJAdvisorFactory.java index 73d58a01b4e..4c319683bc5 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/ReflectiveAspectJAdvisorFactory.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/ReflectiveAspectJAdvisorFactory.java @@ -184,6 +184,7 @@ public class ReflectiveAspectJAdvisorFactory extends AbstractAspectJAdvisorFacto @Override + @Nullable public Advisor getAdvisor(Method candidateAdviceMethod, MetadataAwareAspectInstanceFactory aspectInstanceFactory, int declarationOrderInAspect, String aspectName) { @@ -218,6 +219,7 @@ public class ReflectiveAspectJAdvisorFactory extends AbstractAspectJAdvisorFacto @Override + @Nullable public Advice getAdvice(Method candidateAdviceMethod, AspectJExpressionPointcut expressionPointcut, MetadataAwareAspectInstanceFactory aspectInstanceFactory, int declarationOrder, String aspectName) { diff --git a/spring-aop/src/main/java/org/springframework/aop/config/AdvisorComponentDefinition.java b/spring-aop/src/main/java/org/springframework/aop/config/AdvisorComponentDefinition.java index 44d9f34c4b3..03034f48fbe 100644 --- a/spring-aop/src/main/java/org/springframework/aop/config/AdvisorComponentDefinition.java +++ b/spring-aop/src/main/java/org/springframework/aop/config/AdvisorComponentDefinition.java @@ -110,6 +110,7 @@ public class AdvisorComponentDefinition extends AbstractComponentDefinition { } @Override + @Nullable public Object getSource() { return this.advisorDefinition.getSource(); } diff --git a/spring-aop/src/main/java/org/springframework/aop/config/AspectJAutoProxyBeanDefinitionParser.java b/spring-aop/src/main/java/org/springframework/aop/config/AspectJAutoProxyBeanDefinitionParser.java index e84ecea24ec..527f0504fb5 100644 --- a/spring-aop/src/main/java/org/springframework/aop/config/AspectJAutoProxyBeanDefinitionParser.java +++ b/spring-aop/src/main/java/org/springframework/aop/config/AspectJAutoProxyBeanDefinitionParser.java @@ -25,6 +25,7 @@ import org.springframework.beans.factory.config.TypedStringValue; import org.springframework.beans.factory.support.ManagedList; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.lang.Nullable; /** * {@link BeanDefinitionParser} for the {@code aspectj-autoproxy} tag, @@ -38,6 +39,7 @@ import org.springframework.beans.factory.xml.ParserContext; class AspectJAutoProxyBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { AopNamespaceUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary(parserContext, element); extendBeanDefinition(element, parserContext); diff --git a/spring-aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java b/spring-aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java index 08c8a2591e2..90fe0f0543a 100644 --- a/spring-aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java +++ b/spring-aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java @@ -97,6 +97,7 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { CompositeComponentDefinition compositeDef = new CompositeComponentDefinition(element.getTagName(), parserContext.extractSource(element)); diff --git a/spring-aop/src/main/java/org/springframework/aop/config/MethodLocatingFactoryBean.java b/spring-aop/src/main/java/org/springframework/aop/config/MethodLocatingFactoryBean.java index 78407f87dc0..993bad509e8 100644 --- a/spring-aop/src/main/java/org/springframework/aop/config/MethodLocatingFactoryBean.java +++ b/spring-aop/src/main/java/org/springframework/aop/config/MethodLocatingFactoryBean.java @@ -84,6 +84,7 @@ public class MethodLocatingFactoryBean implements FactoryBean, BeanFacto @Override + @Nullable public Method getObject() throws Exception { return this.method; } diff --git a/spring-aop/src/main/java/org/springframework/aop/config/PointcutComponentDefinition.java b/spring-aop/src/main/java/org/springframework/aop/config/PointcutComponentDefinition.java index 3cbf472e588..7b82314e64f 100644 --- a/spring-aop/src/main/java/org/springframework/aop/config/PointcutComponentDefinition.java +++ b/spring-aop/src/main/java/org/springframework/aop/config/PointcutComponentDefinition.java @@ -18,6 +18,7 @@ package org.springframework.aop.config; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.parsing.AbstractComponentDefinition; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -62,6 +63,7 @@ public class PointcutComponentDefinition extends AbstractComponentDefinition { } @Override + @Nullable public Object getSource() { return this.pointcutDefinition.getSource(); } diff --git a/spring-aop/src/main/java/org/springframework/aop/config/SimpleBeanFactoryAwareAspectInstanceFactory.java b/spring-aop/src/main/java/org/springframework/aop/config/SimpleBeanFactoryAwareAspectInstanceFactory.java index 2afacfe91ba..b432821bf36 100644 --- a/spring-aop/src/main/java/org/springframework/aop/config/SimpleBeanFactoryAwareAspectInstanceFactory.java +++ b/spring-aop/src/main/java/org/springframework/aop/config/SimpleBeanFactoryAwareAspectInstanceFactory.java @@ -69,6 +69,7 @@ public class SimpleBeanFactoryAwareAspectInstanceFactory implements AspectInstan } @Override + @Nullable public ClassLoader getAspectClassLoader() { if (this.beanFactory instanceof ConfigurableBeanFactory) { return ((ConfigurableBeanFactory) this.beanFactory).getBeanClassLoader(); diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.java b/spring-aop/src/main/java/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.java index 76264439479..f26af490880 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.java @@ -221,6 +221,7 @@ public abstract class AbstractSingletonProxyFactoryBean extends ProxyConfig } @Override + @Nullable public Class getObjectType() { if (this.proxy != null) { return this.proxy.getClass(); diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/ProxyFactoryBean.java b/spring-aop/src/main/java/org/springframework/aop/framework/ProxyFactoryBean.java index d224a93a1a6..a806b4037e8 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/ProxyFactoryBean.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/ProxyFactoryBean.java @@ -247,6 +247,7 @@ public class ProxyFactoryBean extends ProxyCreatorSupport * @return a fresh AOP proxy reflecting the current state of this factory */ @Override + @Nullable public Object getObject() throws BeansException { initializeAdvisorChain(); if (isSingleton()) { diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/ReflectiveMethodInvocation.java b/spring-aop/src/main/java/org/springframework/aop/framework/ReflectiveMethodInvocation.java index bad0ad68196..c8a2ece2731 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/ReflectiveMethodInvocation.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/ReflectiveMethodInvocation.java @@ -262,6 +262,7 @@ public class ReflectiveMethodInvocation implements ProxyMethodInvocation, Clonea } @Override + @Nullable public Object getUserAttribute(String key) { return (this.userAttributes != null ? this.userAttributes.get(key) : null); } diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAutoProxyCreator.java b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAutoProxyCreator.java index 81b4714d3a8..ee7d751b7f2 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAutoProxyCreator.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAutoProxyCreator.java @@ -218,6 +218,7 @@ public abstract class AbstractAutoProxyCreator extends ProxyProcessorSupport @Override + @Nullable public Class predictBeanType(Class beanClass, String beanName) { if (this.proxyTypes.isEmpty()) { return null; @@ -227,6 +228,7 @@ public abstract class AbstractAutoProxyCreator extends ProxyProcessorSupport } @Override + @Nullable public Constructor[] determineCandidateConstructors(Class beanClass, String beanName) throws BeansException { return null; } diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/AbstractBeanFactoryBasedTargetSourceCreator.java b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/AbstractBeanFactoryBasedTargetSourceCreator.java index 09c2bff44d8..e339e716b4d 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/AbstractBeanFactoryBasedTargetSourceCreator.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/AbstractBeanFactoryBasedTargetSourceCreator.java @@ -89,6 +89,7 @@ public abstract class AbstractBeanFactoryBasedTargetSourceCreator //--------------------------------------------------------------------- @Override + @Nullable public final TargetSource getTargetSource(Class beanClass, String beanName) { AbstractBeanFactoryBasedTargetSource targetSource = createBeanFactoryBasedTargetSource(beanClass, beanName); diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/LazyInitTargetSourceCreator.java b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/LazyInitTargetSourceCreator.java index 55d091394cb..47872f6cada 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/LazyInitTargetSourceCreator.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/LazyInitTargetSourceCreator.java @@ -20,6 +20,7 @@ import org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource; import org.springframework.aop.target.LazyInitTargetSource; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.lang.Nullable; /** * TargetSourceCreator that enforces a LazyInitTargetSource for each bean @@ -59,6 +60,7 @@ public class LazyInitTargetSourceCreator extends AbstractBeanFactoryBasedTargetS } @Override + @Nullable protected AbstractBeanFactoryBasedTargetSource createBeanFactoryBasedTargetSource( Class beanClass, String beanName) { diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/QuickTargetSourceCreator.java b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/QuickTargetSourceCreator.java index 46d6fdbd607..6101658fa45 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/QuickTargetSourceCreator.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/target/QuickTargetSourceCreator.java @@ -20,6 +20,7 @@ import org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource; import org.springframework.aop.target.CommonsPool2TargetSource; import org.springframework.aop.target.PrototypeTargetSource; import org.springframework.aop.target.ThreadLocalTargetSource; +import org.springframework.lang.Nullable; /** * Convenient TargetSourceCreator using bean name prefixes to create one of three @@ -41,6 +42,7 @@ public class QuickTargetSourceCreator extends AbstractBeanFactoryBasedTargetSour public static final String PREFIX_PROTOTYPE = "!"; @Override + @Nullable protected final AbstractBeanFactoryBasedTargetSource createBeanFactoryBasedTargetSource( Class beanClass, String beanName) { diff --git a/spring-aop/src/main/java/org/springframework/aop/interceptor/AsyncExecutionInterceptor.java b/spring-aop/src/main/java/org/springframework/aop/interceptor/AsyncExecutionInterceptor.java index 1e260f26d42..d69442e4743 100644 --- a/spring-aop/src/main/java/org/springframework/aop/interceptor/AsyncExecutionInterceptor.java +++ b/spring-aop/src/main/java/org/springframework/aop/interceptor/AsyncExecutionInterceptor.java @@ -138,6 +138,7 @@ public class AsyncExecutionInterceptor extends AsyncExecutionAspectSupport imple * @see #determineAsyncExecutor(Method) */ @Override + @Nullable protected String getExecutorQualifier(Method method) { return null; } @@ -151,6 +152,7 @@ public class AsyncExecutionInterceptor extends AsyncExecutionAspectSupport imple * @see #DEFAULT_TASK_EXECUTOR_BEAN_NAME */ @Override + @Nullable protected Executor getDefaultExecutor(@Nullable BeanFactory beanFactory) { Executor defaultExecutor = super.getDefaultExecutor(beanFactory); return (defaultExecutor != null ? defaultExecutor : new SimpleAsyncTaskExecutor()); diff --git a/spring-aop/src/main/java/org/springframework/aop/target/AbstractLazyCreationTargetSource.java b/spring-aop/src/main/java/org/springframework/aop/target/AbstractLazyCreationTargetSource.java index 97f3ae8732d..4c23c54c365 100644 --- a/spring-aop/src/main/java/org/springframework/aop/target/AbstractLazyCreationTargetSource.java +++ b/spring-aop/src/main/java/org/springframework/aop/target/AbstractLazyCreationTargetSource.java @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.aop.TargetSource; +import org.springframework.lang.Nullable; /** * {@link org.springframework.aop.TargetSource} implementation that will @@ -65,6 +66,7 @@ public abstract class AbstractLazyCreationTargetSource implements TargetSource { * @see #isInitialized() */ @Override + @Nullable public synchronized Class getTargetClass() { return (this.lazyTarget != null ? this.lazyTarget.getClass() : null); } diff --git a/spring-aop/src/main/java/org/springframework/aop/target/AbstractPoolingTargetSource.java b/spring-aop/src/main/java/org/springframework/aop/target/AbstractPoolingTargetSource.java index 897c05aa37b..bfd4a5f147d 100644 --- a/spring-aop/src/main/java/org/springframework/aop/target/AbstractPoolingTargetSource.java +++ b/spring-aop/src/main/java/org/springframework/aop/target/AbstractPoolingTargetSource.java @@ -22,6 +22,7 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanInitializationException; import org.springframework.beans.factory.DisposableBean; +import org.springframework.lang.Nullable; /** * Abstract base class for pooling {@link org.springframework.aop.TargetSource} @@ -100,6 +101,7 @@ public abstract class AbstractPoolingTargetSource extends AbstractPrototypeBased * APIs, so we're forgiving with our exception signature */ @Override + @Nullable public abstract Object getTarget() throws Exception; /** diff --git a/spring-aop/src/main/java/org/springframework/aop/target/CommonsPool2TargetSource.java b/spring-aop/src/main/java/org/springframework/aop/target/CommonsPool2TargetSource.java index 67748223213..3e8183be219 100644 --- a/spring-aop/src/main/java/org/springframework/aop/target/CommonsPool2TargetSource.java +++ b/spring-aop/src/main/java/org/springframework/aop/target/CommonsPool2TargetSource.java @@ -23,6 +23,8 @@ import org.apache.commons.pool2.impl.DefaultPooledObject; import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; +import org.springframework.lang.Nullable; + /** * {@link org.springframework.aop.TargetSource} implementation that holds * objects in a configurable Apache Commons2 Pool. @@ -78,6 +80,7 @@ public class CommonsPool2TargetSource extends AbstractPoolingTargetSource implem /** * The Apache Commons {@code ObjectPool} used to pool target objects */ + @Nullable private ObjectPool pool; diff --git a/spring-aop/src/main/java/org/springframework/aop/target/EmptyTargetSource.java b/spring-aop/src/main/java/org/springframework/aop/target/EmptyTargetSource.java index fa2e6ad9f00..344d33a8bb3 100644 --- a/spring-aop/src/main/java/org/springframework/aop/target/EmptyTargetSource.java +++ b/spring-aop/src/main/java/org/springframework/aop/target/EmptyTargetSource.java @@ -92,6 +92,7 @@ public class EmptyTargetSource implements TargetSource, Serializable { * Always returns the specified target Class, or {@code null} if none. */ @Override + @Nullable public Class getTargetClass() { return this.targetClass; } @@ -108,6 +109,7 @@ public class EmptyTargetSource implements TargetSource, Serializable { * Always returns {@code null}. */ @Override + @Nullable public Object getTarget() { return null; } diff --git a/spring-aop/src/main/java/org/springframework/aop/target/LazyInitTargetSource.java b/spring-aop/src/main/java/org/springframework/aop/target/LazyInitTargetSource.java index bad59acf1b0..e31a83c1922 100644 --- a/spring-aop/src/main/java/org/springframework/aop/target/LazyInitTargetSource.java +++ b/spring-aop/src/main/java/org/springframework/aop/target/LazyInitTargetSource.java @@ -17,6 +17,7 @@ package org.springframework.aop.target; import org.springframework.beans.BeansException; +import org.springframework.lang.Nullable; /** * {@link org.springframework.aop.TargetSource} that lazily accesses a @@ -59,10 +60,12 @@ import org.springframework.beans.BeansException; @SuppressWarnings("serial") public class LazyInitTargetSource extends AbstractBeanFactoryBasedTargetSource { + @Nullable private Object target; @Override + @Nullable public synchronized Object getTarget() throws BeansException { if (this.target == null) { this.target = getBeanFactory().getBean(getTargetBeanName()); diff --git a/spring-aop/src/main/java/org/springframework/aop/target/dynamic/AbstractRefreshableTargetSource.java b/spring-aop/src/main/java/org/springframework/aop/target/dynamic/AbstractRefreshableTargetSource.java index 7bab7e07711..75d698db9d8 100644 --- a/spring-aop/src/main/java/org/springframework/aop/target/dynamic/AbstractRefreshableTargetSource.java +++ b/spring-aop/src/main/java/org/springframework/aop/target/dynamic/AbstractRefreshableTargetSource.java @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.aop.TargetSource; +import org.springframework.lang.Nullable; /** * Abstract {@link org.springframework.aop.TargetSource} implementation that @@ -41,6 +42,7 @@ public abstract class AbstractRefreshableTargetSource implements TargetSource, R /** Logger available to subclasses */ protected final Log logger = LogFactory.getLog(getClass()); + @Nullable protected Object targetObject; private long refreshCheckDelay = -1; @@ -80,6 +82,7 @@ public abstract class AbstractRefreshableTargetSource implements TargetSource, R } @Override + @Nullable public final synchronized Object getTarget() { if ((refreshCheckDelayElapsed() && requiresRefresh()) || this.targetObject == null) { refresh(); diff --git a/spring-aop/src/main/java/org/springframework/aop/target/package.html b/spring-aop/src/main/java/org/springframework/aop/target/package.html deleted file mode 100644 index 26f9d79a879..00000000000 --- a/spring-aop/src/main/java/org/springframework/aop/target/package.html +++ /dev/null @@ -1,15 +0,0 @@ - - - -This package contains implementations of the org.springframework.aop.TargetSource interface. -
-The simplest implementation is the SingletonTargetSource, used by default in the AOP framework -to wrap a single target instance. This is normally appropriate. - -
-Other provided implementations include pooling implementations, that provide a target -from a pool for each request, ensuring a single threaded programming model; and a -"prototype" implementation, that uses a new target instance for each invocation. - - - diff --git a/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java b/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java index 5ab67b7558e..bf960b1ba67 100644 --- a/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java @@ -483,6 +483,7 @@ public abstract class AbstractNestablePropertyAccessor extends AbstractPropertyA } @Override + @Nullable public Class getPropertyType(String propertyName) throws BeansException { try { PropertyHandler ph = getPropertyHandler(propertyName); @@ -510,6 +511,7 @@ public abstract class AbstractNestablePropertyAccessor extends AbstractPropertyA } @Override + @Nullable public TypeDescriptor getPropertyTypeDescriptor(String propertyName) throws BeansException { try { AbstractNestablePropertyAccessor nestedPa = getPropertyAccessorForPropertyPath(propertyName); @@ -603,6 +605,7 @@ public abstract class AbstractNestablePropertyAccessor extends AbstractPropertyA } @Override + @Nullable public Object getPropertyValue(String propertyName) throws BeansException { AbstractNestablePropertyAccessor nestedPa = getPropertyAccessorForPropertyPath(propertyName); PropertyTokenHolder tokens = getPropertyNameTokens(getFinalPath(nestedPa, propertyName)); diff --git a/spring-beans/src/main/java/org/springframework/beans/AbstractPropertyAccessor.java b/spring-beans/src/main/java/org/springframework/beans/AbstractPropertyAccessor.java index eb551fbd663..34310708f7f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/AbstractPropertyAccessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/AbstractPropertyAccessor.java @@ -127,6 +127,7 @@ public abstract class AbstractPropertyAccessor extends TypeConverterSupport impl // Redefined with public visibility. @Override + @Nullable public Class getPropertyType(String propertyPath) { return null; } @@ -141,6 +142,7 @@ public abstract class AbstractPropertyAccessor extends TypeConverterSupport impl * accessor method failed */ @Override + @Nullable public abstract Object getPropertyValue(String propertyName) throws BeansException; /** diff --git a/spring-beans/src/main/java/org/springframework/beans/BeanMetadataAttributeAccessor.java b/spring-beans/src/main/java/org/springframework/beans/BeanMetadataAttributeAccessor.java index 644655902a5..d68c5769b5d 100644 --- a/spring-beans/src/main/java/org/springframework/beans/BeanMetadataAttributeAccessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/BeanMetadataAttributeAccessor.java @@ -74,12 +74,14 @@ public class BeanMetadataAttributeAccessor extends AttributeAccessorSupport impl } @Override + @Nullable public Object getAttribute(String name) { BeanMetadataAttribute attribute = (BeanMetadataAttribute) super.getAttribute(name); return (attribute != null ? attribute.getValue() : null); } @Override + @Nullable public Object removeAttribute(String name) { BeanMetadataAttribute attribute = (BeanMetadataAttribute) super.removeAttribute(name); return (attribute != null ? attribute.getValue() : null); diff --git a/spring-beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java b/spring-beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java index aaff2e63c51..3225a458f4b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java +++ b/spring-beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java @@ -225,6 +225,7 @@ public class BeanWrapperImpl extends AbstractNestablePropertyAccessor implements } @Override + @Nullable protected BeanPropertyHandler getLocalPropertyHandler(String propertyName) { PropertyDescriptor pd = getCachedIntrospectionResults().getPropertyDescriptor(propertyName); if (pd != null) { @@ -284,11 +285,13 @@ public class BeanWrapperImpl extends AbstractNestablePropertyAccessor implements } @Override + @Nullable public TypeDescriptor nested(int level) { return TypeDescriptor.nested(property(pd), level); } @Override + @Nullable public Object getValue() throws Exception { final Method readMethod = this.pd.getReadMethod(); if (System.getSecurityManager() != null) { diff --git a/spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java b/spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java index 912f32e0775..bffe0eec2d1 100644 --- a/spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java @@ -117,11 +117,13 @@ public class DirectFieldAccessor extends AbstractNestablePropertyAccessor { } @Override + @Nullable public TypeDescriptor nested(int level) { return TypeDescriptor.nested(this.field, level); } @Override + @Nullable public Object getValue() throws Exception { try { ReflectionUtils.makeAccessible(this.field); diff --git a/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java b/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java index f3759739bf9..c48dbd1890b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java @@ -22,6 +22,7 @@ import java.beans.Introspector; import java.lang.reflect.Method; import org.springframework.core.Ordered; +import org.springframework.lang.Nullable; /** * {@link BeanInfoFactory} implementation that evaluates whether bean classes have @@ -42,6 +43,7 @@ public class ExtendedBeanInfoFactory implements BeanInfoFactory, Ordered { * Return an {@link ExtendedBeanInfo} for the given bean class, if applicable. */ @Override + @Nullable public BeanInfo getBeanInfo(Class beanClass) throws IntrospectionException { return (supports(beanClass) ? new ExtendedBeanInfo(Introspector.getBeanInfo(beanClass)) : null); } diff --git a/spring-beans/src/main/java/org/springframework/beans/MutablePropertyValues.java b/spring-beans/src/main/java/org/springframework/beans/MutablePropertyValues.java index af3ff3ad923..49a84cb60aa 100644 --- a/spring-beans/src/main/java/org/springframework/beans/MutablePropertyValues.java +++ b/spring-beans/src/main/java/org/springframework/beans/MutablePropertyValues.java @@ -250,6 +250,7 @@ public class MutablePropertyValues implements PropertyValues, Serializable { } @Override + @Nullable public PropertyValue getPropertyValue(String propertyName) { for (PropertyValue pv : this.propertyValueList) { if (pv.getName().equals(propertyName)) { diff --git a/spring-beans/src/main/java/org/springframework/beans/TypeConverterSupport.java b/spring-beans/src/main/java/org/springframework/beans/TypeConverterSupport.java index 9c875389618..809cd61250b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/TypeConverterSupport.java +++ b/spring-beans/src/main/java/org/springframework/beans/TypeConverterSupport.java @@ -39,11 +39,13 @@ public abstract class TypeConverterSupport extends PropertyEditorRegistrySupport @Override + @Nullable public T convertIfNecessary(@Nullable Object value, @Nullable Class requiredType) throws TypeMismatchException { return doConvert(value, requiredType, null, null); } @Override + @Nullable public T convertIfNecessary(@Nullable Object value, @Nullable Class requiredType, @Nullable MethodParameter methodParam) throws TypeMismatchException { @@ -51,6 +53,7 @@ public abstract class TypeConverterSupport extends PropertyEditorRegistrySupport } @Override + @Nullable public T convertIfNecessary(@Nullable Object value, @Nullable Class requiredType, @Nullable Field field) throws TypeMismatchException { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AnnotationBeanWiringInfoResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AnnotationBeanWiringInfoResolver.java index 78fe8fe86af..78a690b475f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AnnotationBeanWiringInfoResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AnnotationBeanWiringInfoResolver.java @@ -18,6 +18,7 @@ package org.springframework.beans.factory.annotation; import org.springframework.beans.factory.wiring.BeanWiringInfo; import org.springframework.beans.factory.wiring.BeanWiringInfoResolver; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -37,6 +38,7 @@ import org.springframework.util.ClassUtils; public class AnnotationBeanWiringInfoResolver implements BeanWiringInfoResolver { @Override + @Nullable public BeanWiringInfo resolveWiringInfo(Object beanInstance) { Assert.notNull(beanInstance, "Bean instance must not be null"); Configurable annotation = beanInstance.getClass().getAnnotation(Configurable.class); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java index 10055b9c500..3c256571354 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java @@ -234,6 +234,7 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean } @Override + @Nullable public Constructor[] determineCandidateConstructors(Class beanClass, final String beanName) throws BeanCreationException { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java index 35fc98e21ff..19a64242314 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java @@ -330,6 +330,7 @@ public class QualifierAnnotationAutowireCandidateResolver extends GenericTypeAwa * @see Value */ @Override + @Nullable public Object getSuggestedValue(DependencyDescriptor descriptor) { Object value = findValue(descriptor.getAnnotations()); if (value == null) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/AbstractFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/AbstractFactoryBean.java index 7f230919cd9..fe1dcf8bdd4 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/AbstractFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/AbstractFactoryBean.java @@ -206,6 +206,7 @@ public abstract class AbstractFactoryBean * @see org.springframework.beans.factory.FactoryBean#getObjectType() */ @Override + @Nullable public abstract Class getObjectType(); /** diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionHolder.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionHolder.java index 26e02b62af9..8556c3affbf 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionHolder.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionHolder.java @@ -113,6 +113,7 @@ public class BeanDefinitionHolder implements BeanMetadataElement { * @see BeanDefinition#getSource() */ @Override + @Nullable public Object getSource() { return this.beanDefinition.getSource(); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/EmbeddedValueResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/EmbeddedValueResolver.java index 99925990a9f..c4fb65d55dc 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/EmbeddedValueResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/EmbeddedValueResolver.java @@ -49,6 +49,7 @@ public class EmbeddedValueResolver implements StringValueResolver { @Override + @Nullable public String resolveStringValue(String strVal) { String value = this.exprContext.getBeanFactory().resolveEmbeddedValue(strVal); if (this.exprResolver != null && value != null) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/FieldRetrievingFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/FieldRetrievingFactoryBean.java index ec6b9dd95cb..c537ee2f85b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/FieldRetrievingFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/FieldRetrievingFactoryBean.java @@ -208,6 +208,7 @@ public class FieldRetrievingFactoryBean @Override + @Nullable public Object getObject() throws IllegalAccessException { if (this.fieldObject == null) { throw new FactoryBeanNotInitializedException(); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/InstantiationAwareBeanPostProcessorAdapter.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/InstantiationAwareBeanPostProcessorAdapter.java index 3f7e1746b70..abe387968c9 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/InstantiationAwareBeanPostProcessorAdapter.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/InstantiationAwareBeanPostProcessorAdapter.java @@ -21,6 +21,7 @@ import java.lang.reflect.Constructor; import org.springframework.beans.BeansException; import org.springframework.beans.PropertyValues; +import org.springframework.lang.Nullable; /** * Adapter that implements all methods on {@link SmartInstantiationAwareBeanPostProcessor} @@ -40,11 +41,13 @@ import org.springframework.beans.PropertyValues; public abstract class InstantiationAwareBeanPostProcessorAdapter implements SmartInstantiationAwareBeanPostProcessor { @Override + @Nullable public Class predictBeanType(Class beanClass, String beanName) { return null; } @Override + @Nullable public Constructor[] determineCandidateConstructors(Class beanClass, String beanName) throws BeansException { return null; } @@ -55,6 +58,7 @@ public abstract class InstantiationAwareBeanPostProcessorAdapter implements Smar } @Override + @Nullable public Object postProcessBeforeInstantiation(Class beanClass, String beanName) throws BeansException { return null; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/MethodInvokingFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/MethodInvokingFactoryBean.java index 8091ed3a51e..f3d1243f23a 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/MethodInvokingFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/MethodInvokingFactoryBean.java @@ -116,6 +116,7 @@ public class MethodInvokingFactoryBean extends MethodInvokingBean implements Fac * specified method on the fly. */ @Override + @Nullable public Object getObject() throws Exception { if (this.singleton) { if (!this.initialized) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertiesFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertiesFactoryBean.java index 17fbc9c4edf..444ca98ba93 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertiesFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertiesFactoryBean.java @@ -75,6 +75,7 @@ public class PropertiesFactoryBean extends PropertiesLoaderSupport } @Override + @Nullable public final Properties getObject() throws IOException { if (this.singleton) { return this.singletonInstance; diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPathFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPathFactoryBean.java index 0e903911f02..c9a8d42cedd 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPathFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPathFactoryBean.java @@ -201,6 +201,7 @@ public class PropertyPathFactoryBean implements FactoryBean, BeanNameAwa @Override + @Nullable public Object getObject() throws BeansException { BeanWrapper target = this.targetBeanWrapper; if (target != null) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.java index 6aa5551fd24..34fe7ec5f5b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.java @@ -239,6 +239,7 @@ public class PropertyPlaceholderConfigurer extends PlaceholderConfigurerSupport } @Override + @Nullable public String resolveStringValue(String strVal) throws BeansException { String resolved = this.helper.replacePlaceholders(strVal, this.resolver); if (trimValues) { @@ -258,6 +259,7 @@ public class PropertyPlaceholderConfigurer extends PlaceholderConfigurerSupport } @Override + @Nullable public String resolvePlaceholder(String placeholderName) { return PropertyPlaceholderConfigurer.this.resolvePlaceholder(placeholderName, props, systemPropertiesMode); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.java index 24707690420..d507556fbf4 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.java @@ -329,6 +329,7 @@ public class ServiceLocatorFactoryBean implements FactoryBean, BeanFacto @Override + @Nullable public Object getObject() { return this.proxy; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java index 38e846a4d98..d8f6e41a996 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java @@ -97,6 +97,7 @@ public class YamlMapFactoryBean extends YamlProcessor implements FactoryBean getObject() { return (this.map != null ? this.map : createMap()); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.java index c4dc698b07e..dec79025063 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.java @@ -108,6 +108,7 @@ public class YamlPropertiesFactoryBean extends YamlProcessor implements FactoryB } @Override + @Nullable public Properties getObject() { return (this.properties != null ? this.properties : createProperties()); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/serviceloader/ServiceFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/serviceloader/ServiceFactoryBean.java index c337ba19b46..3c546e96759 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/serviceloader/ServiceFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/serviceloader/ServiceFactoryBean.java @@ -20,6 +20,7 @@ import java.util.Iterator; import java.util.ServiceLoader; import org.springframework.beans.factory.BeanClassLoaderAware; +import org.springframework.lang.Nullable; /** * {@link org.springframework.beans.factory.FactoryBean} that exposes the @@ -43,6 +44,7 @@ public class ServiceFactoryBean extends AbstractServiceLoaderBasedFactoryBean im } @Override + @Nullable public Class getObjectType() { return getServiceType(); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java index cb5403f6f1d..40270cb502f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java @@ -340,6 +340,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac } @Override + @Nullable public Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName) throws BeansException { return resolveDependency(descriptor, requestingBeanName, null, null); } @@ -409,11 +410,13 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac } @Override + @Nullable public Object initializeBean(Object existingBean, String beanName) { return initializeBean(beanName, existingBean, null); } @Override + @Nullable public Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName) throws BeansException { @@ -428,6 +431,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac } @Override + @Nullable public Object applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName) throws BeansException { @@ -457,6 +461,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac * @see #doCreateBean */ @Override + @Nullable protected Object createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) throws BeanCreationException { @@ -634,6 +639,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac } @Override + @Nullable protected Class predictBeanType(String beanName, RootBeanDefinition mbd, Class... typesToMatch) { Class targetType = determineTargetType(beanName, mbd, typesToMatch); @@ -800,6 +806,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac * it will be fully created to check the type of its exposed object. */ @Override + @Nullable protected Class getTypeForFactoryBean(String beanName, RootBeanDefinition mbd) { String factoryBeanName = mbd.getFactoryBeanName(); String factoryMethodName = mbd.getFactoryMethodName(); @@ -1177,6 +1184,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac * @see #obtainFromSupplier */ @Override + @Nullable protected Object getObjectForBeanInstance( @Nullable Object beanInstance, String name, String beanName, @Nullable RootBeanDefinition mbd) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java index 346b11cb271..581e2673912 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java @@ -358,6 +358,7 @@ public abstract class AbstractBeanDefinition extends BeanMetadataAttributeAccess * Return the current bean class name of this bean definition. */ @Override + @Nullable public String getBeanClassName() { Object beanClassObject = this.beanClass; if (beanClassObject instanceof Class) { @@ -971,6 +972,7 @@ public abstract class AbstractBeanDefinition extends BeanMetadataAttributeAccess * came from (for the purpose of showing context in case of errors). */ @Override + @Nullable public String getResourceDescription() { return (this.resource != null ? this.resource.getDescription() : null); } @@ -989,6 +991,7 @@ public abstract class AbstractBeanDefinition extends BeanMetadataAttributeAccess * originator chain to find the original BeanDefinition as defined by the user. */ @Override + @Nullable public BeanDefinition getOriginatingBeanDefinition() { return (this.resource instanceof BeanDefinitionResource ? ((BeanDefinitionResource) this.resource).getBeanDefinition() : null); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java index 8118772eb25..a55b541655b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java @@ -599,6 +599,7 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp } @Override + @Nullable public Class getType(String name) throws NoSuchBeanDefinitionException { String beanName = transformedBeanName(name); @@ -840,6 +841,7 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp } @Override + @Nullable public String resolveEmbeddedValue(@Nullable String value) { if (value == null) { return null; @@ -926,6 +928,7 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp } @Override + @Nullable public Scope getRegisteredScope(String scopeName) { Assert.notNull(scopeName, "Scope identifier must not be null"); return this.scopes.get(scopeName); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java index 6547d004e56..03ff2b76df3 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java @@ -570,6 +570,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto * if not found on the exposed bean reference (e.g. in case of a proxy). */ @Override + @Nullable public A findAnnotationOnBean(String beanName, Class annotationType) throws NoSuchBeanDefinitionException{ @@ -1037,6 +1038,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto } @Override + @Nullable public Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName, @Nullable Set autowiredBeanNames, @Nullable TypeConverter typeConverter) throws BeansException { @@ -1613,6 +1615,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto } @Override + @Nullable public Object getObject() throws BeansException { if (this.optional) { return createOptionalDependency(this.descriptor, this.beanName); @@ -1623,6 +1626,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto } @Override + @Nullable public Object getObject(final Object... args) throws BeansException { if (this.optional) { return createOptionalDependency(this.descriptor, this.beanName, args); @@ -1639,6 +1643,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto } @Override + @Nullable public Object getIfAvailable() throws BeansException { if (this.optional) { return createOptionalDependency(this.descriptor, this.beanName); @@ -1655,6 +1660,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto } @Override + @Nullable public Object getIfUnique() throws BeansException { DependencyDescriptor descriptorToUse = new DependencyDescriptor(descriptor) { @Override @@ -1662,6 +1668,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto return false; } @Override + @Nullable public Object resolveNotUnique(Class type, Map matchingBeans) { return null; } @@ -1720,6 +1727,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto } @Override + @Nullable public Object getOrderSource(Object obj) { RootBeanDefinition beanDefinition = getRootBeanDefinition(this.instancesToBeanNames.get(obj)); if (beanDefinition == null) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java index 52320a452e7..62a0105e30c 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java @@ -171,6 +171,7 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements } @Override + @Nullable public Object getSingleton(String beanName) { return getSingleton(beanName, true); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/SimpleAutowireCandidateResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/SimpleAutowireCandidateResolver.java index ddbf3b4127c..2d4577e81a7 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/SimpleAutowireCandidateResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/SimpleAutowireCandidateResolver.java @@ -41,11 +41,13 @@ public class SimpleAutowireCandidateResolver implements AutowireCandidateResolve } @Override + @Nullable public Object getSuggestedValue(DependencyDescriptor descriptor) { return null; } @Override + @Nullable public Object getLazyResolutionProxyIfNecessary(DependencyDescriptor descriptor, @Nullable String beanName) { return null; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java index d72031c8b08..21a5318445c 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java @@ -355,6 +355,7 @@ public class StaticListableBeanFactory implements ListableBeanFactory { } @Override + @Nullable public A findAnnotationOnBean(String beanName, Class annotationType) throws NoSuchBeanDefinitionException{ diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/AbstractBeanDefinitionParser.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/AbstractBeanDefinitionParser.java index aeba4e7741c..2300573a213 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/AbstractBeanDefinitionParser.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/AbstractBeanDefinitionParser.java @@ -58,6 +58,7 @@ public abstract class AbstractBeanDefinitionParser implements BeanDefinitionPars @Override + @Nullable public final BeanDefinition parse(Element element, ParserContext parserContext) { AbstractBeanDefinition definition = parseInternal(element, parserContext); if (definition != null && !parserContext.isNested()) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java index 24744dc7942..cd4a9399af7 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java @@ -113,6 +113,7 @@ public class DefaultNamespaceHandlerResolver implements NamespaceHandlerResolver * @return the located {@link NamespaceHandler}, or {@code null} if none found */ @Override + @Nullable public NamespaceHandler resolve(String namespaceUri) { Map handlerMappings = getHandlerMappings(); Object handlerOrClassName = handlerMappings.get(namespaceUri); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/NamespaceHandlerSupport.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/NamespaceHandlerSupport.java index 4869d095274..5582837fa93 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/NamespaceHandlerSupport.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/NamespaceHandlerSupport.java @@ -68,6 +68,7 @@ public abstract class NamespaceHandlerSupport implements NamespaceHandler { * registered for that {@link Element}. */ @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { BeanDefinitionParser parser = findParserForElement(element, parserContext); return (parser != null ? parser.parse(element, parserContext) : null); @@ -93,6 +94,7 @@ public abstract class NamespaceHandlerSupport implements NamespaceHandler { * is registered to handle that {@link Node}. */ @Override + @Nullable public BeanDefinitionHolder decorate( Node node, BeanDefinitionHolder definition, ParserContext parserContext) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/ResourceEntityResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/ResourceEntityResolver.java index 2882ac7ce3a..53d9e807caa 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/ResourceEntityResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/ResourceEntityResolver.java @@ -71,6 +71,7 @@ public class ResourceEntityResolver extends DelegatingEntityResolver { @Override + @Nullable public InputSource resolveEntity(String publicId, @Nullable String systemId) throws SAXException, IOException { InputSource source = super.resolveEntity(publicId, systemId); if (source == null && systemId != null) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/SimpleConstructorNamespaceHandler.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/SimpleConstructorNamespaceHandler.java index 3f305146984..da1f062dbee 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/SimpleConstructorNamespaceHandler.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/SimpleConstructorNamespaceHandler.java @@ -28,6 +28,7 @@ import org.springframework.beans.factory.config.ConstructorArgumentValues; import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder; import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.core.Conventions; +import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** @@ -68,6 +69,7 @@ public class SimpleConstructorNamespaceHandler implements NamespaceHandler { } @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { parserContext.getReaderContext().error( "Class [" + getClass().getName() + "] does not support custom elements.", element); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/SimplePropertyNamespaceHandler.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/SimplePropertyNamespaceHandler.java index e6716d2900b..7a1e1604da1 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/SimplePropertyNamespaceHandler.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/SimplePropertyNamespaceHandler.java @@ -25,6 +25,7 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.core.Conventions; +import org.springframework.lang.Nullable; /** * Simple {@code NamespaceHandler} implementation that maps custom attributes @@ -57,6 +58,7 @@ public class SimplePropertyNamespaceHandler implements NamespaceHandler { } @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { parserContext.getReaderContext().error( "Class [" + getClass().getName() + "] does not support custom elements.", element); diff --git a/spring-context-support/src/main/java/org/springframework/cache/caffeine/CaffeineCache.java b/spring-context-support/src/main/java/org/springframework/cache/caffeine/CaffeineCache.java index f7be4ea94ed..fa673b87422 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/caffeine/CaffeineCache.java +++ b/spring-context-support/src/main/java/org/springframework/cache/caffeine/CaffeineCache.java @@ -83,6 +83,7 @@ public class CaffeineCache extends AbstractValueAdaptingCache { } @Override + @Nullable public ValueWrapper get(Object key) { if (this.cache instanceof LoadingCache) { Object value = ((LoadingCache) this.cache).get(key); diff --git a/spring-context-support/src/main/java/org/springframework/cache/caffeine/CaffeineCacheManager.java b/spring-context-support/src/main/java/org/springframework/cache/caffeine/CaffeineCacheManager.java index a886df6b091..bf0ec1ff4cc 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/caffeine/CaffeineCacheManager.java +++ b/spring-context-support/src/main/java/org/springframework/cache/caffeine/CaffeineCacheManager.java @@ -176,6 +176,7 @@ public class CaffeineCacheManager implements CacheManager { } @Override + @Nullable public Cache getCache(String name) { Cache cache = this.cacheMap.get(name); if (cache == null && this.dynamic) { diff --git a/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheCache.java b/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheCache.java index 2bcc663a9b6..38b3bd193b7 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheCache.java +++ b/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheCache.java @@ -64,6 +64,7 @@ public class EhCacheCache implements Cache { } @Override + @Nullable public ValueWrapper get(Object key) { Element element = lookup(key); return toValueWrapper(element); @@ -125,6 +126,7 @@ public class EhCacheCache implements Cache { } @Override + @Nullable public ValueWrapper putIfAbsent(Object key, @Nullable Object value) { Element existingElement = this.cache.putIfAbsent(new Element(key, value)); return toValueWrapper(existingElement); diff --git a/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheFactoryBean.java b/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheFactoryBean.java index a18910b6447..1622741711c 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheFactoryBean.java @@ -287,6 +287,7 @@ public class EhCacheFactoryBean extends CacheConfiguration implements FactoryBea @Override + @Nullable public Ehcache getObject() { return this.cache; } diff --git a/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheManagerFactoryBean.java b/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheManagerFactoryBean.java index bc760edfdb4..4e41ae91a46 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheManagerFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheManagerFactoryBean.java @@ -169,6 +169,7 @@ public class EhCacheManagerFactoryBean implements FactoryBean, Ini @Override + @Nullable public CacheManager getObject() { return this.cacheManager; } diff --git a/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCache.java b/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCache.java index 4269afb8252..7dfea6c3ab2 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCache.java +++ b/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCache.java @@ -76,6 +76,7 @@ public class JCacheCache extends AbstractValueAdaptingCache { } @Override + @Nullable public T get(Object key, Callable valueLoader) { try { return this.cache.invoke(key, new ValueLoaderEntryProcessor(), valueLoader); @@ -91,6 +92,7 @@ public class JCacheCache extends AbstractValueAdaptingCache { } @Override + @Nullable public ValueWrapper putIfAbsent(Object key, @Nullable Object value) { boolean set = this.cache.putIfAbsent(key, toStoreValue(value)); return (set ? null : get(key)); diff --git a/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheManagerFactoryBean.java b/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheManagerFactoryBean.java index 8408d218779..50938bf20eb 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheManagerFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheManagerFactoryBean.java @@ -85,6 +85,7 @@ public class JCacheManagerFactoryBean @Override + @Nullable public CacheManager getObject() { return this.cacheManager; } diff --git a/spring-context-support/src/main/java/org/springframework/cache/transaction/TransactionAwareCacheDecorator.java b/spring-context-support/src/main/java/org/springframework/cache/transaction/TransactionAwareCacheDecorator.java index 1f00abbf39f..bd4da577efb 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/transaction/TransactionAwareCacheDecorator.java +++ b/spring-context-support/src/main/java/org/springframework/cache/transaction/TransactionAwareCacheDecorator.java @@ -72,6 +72,7 @@ public class TransactionAwareCacheDecorator implements Cache { } @Override + @Nullable public ValueWrapper get(Object key) { return this.targetCache.get(key); } @@ -82,6 +83,7 @@ public class TransactionAwareCacheDecorator implements Cache { } @Override + @Nullable public T get(Object key, Callable valueLoader) { return this.targetCache.get(key, valueLoader); } @@ -102,6 +104,7 @@ public class TransactionAwareCacheDecorator implements Cache { } @Override + @Nullable public ValueWrapper putIfAbsent(Object key, @Nullable Object value) { return this.targetCache.putIfAbsent(key, value); } diff --git a/spring-context-support/src/main/java/org/springframework/cache/transaction/TransactionAwareCacheManagerProxy.java b/spring-context-support/src/main/java/org/springframework/cache/transaction/TransactionAwareCacheManagerProxy.java index e56f69d282f..f20f894ea25 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/transaction/TransactionAwareCacheManagerProxy.java +++ b/spring-context-support/src/main/java/org/springframework/cache/transaction/TransactionAwareCacheManagerProxy.java @@ -76,6 +76,7 @@ public class TransactionAwareCacheManagerProxy implements CacheManager, Initiali @Override + @Nullable public Cache getCache(String name) { Assert.state(this.targetCacheManager != null, "No target CacheManager set"); Cache targetCache = this.targetCacheManager.getCache(name); diff --git a/spring-context-support/src/main/java/org/springframework/mail/MailSendException.java b/spring-context-support/src/main/java/org/springframework/mail/MailSendException.java index 5b7fd6e050a..b0c66d26877 100644 --- a/spring-context-support/src/main/java/org/springframework/mail/MailSendException.java +++ b/spring-context-support/src/main/java/org/springframework/mail/MailSendException.java @@ -123,6 +123,7 @@ public class MailSendException extends MailException { @Override + @Nullable public String getMessage() { if (ObjectUtils.isEmpty(this.messageExceptions)) { return super.getMessage(); diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/commonj/TimerManagerFactoryBean.java b/spring-context-support/src/main/java/org/springframework/scheduling/commonj/TimerManagerFactoryBean.java index a1fe4568e39..0e63817e3c7 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/commonj/TimerManagerFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/commonj/TimerManagerFactoryBean.java @@ -110,6 +110,7 @@ public class TimerManagerFactoryBean extends TimerManagerAccessor //--------------------------------------------------------------------- @Override + @Nullable public TimerManager getObject() { return getTimerManager(); } diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/commonj/TimerManagerTaskScheduler.java b/spring-context-support/src/main/java/org/springframework/scheduling/commonj/TimerManagerTaskScheduler.java index aabe2226a50..b77a5073fba 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/commonj/TimerManagerTaskScheduler.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/commonj/TimerManagerTaskScheduler.java @@ -56,6 +56,7 @@ public class TimerManagerTaskScheduler extends TimerManagerAccessor implements T @Override + @Nullable public ScheduledFuture schedule(Runnable task, Trigger trigger) { return new ReschedulingTimerListener(errorHandlingTask(task, true), trigger).schedule(); } diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/CronTriggerFactoryBean.java b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/CronTriggerFactoryBean.java index 41ddc931601..ae5cee80076 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/CronTriggerFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/CronTriggerFactoryBean.java @@ -266,6 +266,7 @@ public class CronTriggerFactoryBean implements FactoryBean, BeanNam @Override + @Nullable public CronTrigger getObject() { return this.cronTrigger; } diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/JobDetailFactoryBean.java b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/JobDetailFactoryBean.java index 01c79210549..7cc703bdf15 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/JobDetailFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/JobDetailFactoryBean.java @@ -218,6 +218,7 @@ public class JobDetailFactoryBean @Override + @Nullable public JobDetail getObject() { return this.jobDetail; } diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/MethodInvokingJobDetailFactoryBean.java b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/MethodInvokingJobDetailFactoryBean.java index de36084c922..33992a60321 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/MethodInvokingJobDetailFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/MethodInvokingJobDetailFactoryBean.java @@ -223,6 +223,7 @@ public class MethodInvokingJobDetailFactoryBean extends ArgumentConvertingMethod @Override + @Nullable public JobDetail getObject() { return this.jobDetail; } diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBean.java b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBean.java index 35307d5f725..e4923e042d0 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBean.java @@ -708,6 +708,7 @@ public class SchedulerFactoryBean extends SchedulerAccessor implements FactoryBe } @Override + @Nullable public Scheduler getObject() { return this.scheduler; } diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleTriggerFactoryBean.java b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleTriggerFactoryBean.java index c5e6e17e193..8d010bbdd0f 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleTriggerFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleTriggerFactoryBean.java @@ -251,6 +251,7 @@ public class SimpleTriggerFactoryBean implements FactoryBean, Bea @Override + @Nullable public SimpleTrigger getObject() { return this.simpleTrigger; } diff --git a/spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerConfigurationFactoryBean.java b/spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerConfigurationFactoryBean.java index b9d90101bd6..3f4841ca83a 100644 --- a/spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerConfigurationFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerConfigurationFactoryBean.java @@ -65,6 +65,7 @@ public class FreeMarkerConfigurationFactoryBean extends FreeMarkerConfigurationF @Override + @Nullable public Configuration getObject() { return this.configuration; } diff --git a/spring-context/src/main/java/org/springframework/cache/Cache.java b/spring-context/src/main/java/org/springframework/cache/Cache.java index a4b97d3e3f5..37f814181ef 100644 --- a/spring-context/src/main/java/org/springframework/cache/Cache.java +++ b/spring-context/src/main/java/org/springframework/cache/Cache.java @@ -157,7 +157,8 @@ public interface Cache { /** * Return the actual value in the cache. */ - @Nullable Object get(); + @Nullable + Object get(); } diff --git a/spring-context/src/main/java/org/springframework/cache/annotation/AnnotationCacheOperationSource.java b/spring-context/src/main/java/org/springframework/cache/annotation/AnnotationCacheOperationSource.java index c6fdeaa2afa..0c805052557 100644 --- a/spring-context/src/main/java/org/springframework/cache/annotation/AnnotationCacheOperationSource.java +++ b/spring-context/src/main/java/org/springframework/cache/annotation/AnnotationCacheOperationSource.java @@ -106,11 +106,13 @@ public class AnnotationCacheOperationSource extends AbstractFallbackCacheOperati @Override + @Nullable protected Collection findCacheOperations(final Class clazz) { return determineCacheOperations(parser -> parser.parseCacheAnnotations(clazz)); } @Override + @Nullable protected Collection findCacheOperations(final Method method) { return determineCacheOperations(parser -> parser.parseCacheAnnotations(method)); } diff --git a/spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurerSupport.java b/spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurerSupport.java index de53ffa5850..6719efa137a 100644 --- a/spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurerSupport.java +++ b/spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurerSupport.java @@ -20,6 +20,7 @@ import org.springframework.cache.CacheManager; import org.springframework.cache.interceptor.CacheErrorHandler; import org.springframework.cache.interceptor.CacheResolver; import org.springframework.cache.interceptor.KeyGenerator; +import org.springframework.lang.Nullable; /** * An implementation of {@link CachingConfigurer} with empty methods allowing @@ -32,21 +33,25 @@ import org.springframework.cache.interceptor.KeyGenerator; public class CachingConfigurerSupport implements CachingConfigurer { @Override + @Nullable public CacheManager cacheManager() { return null; } @Override + @Nullable public KeyGenerator keyGenerator() { return null; } @Override + @Nullable public CacheResolver cacheResolver() { return null; } @Override + @Nullable public CacheErrorHandler errorHandler() { return null; } diff --git a/spring-context/src/main/java/org/springframework/cache/annotation/SpringCacheAnnotationParser.java b/spring-context/src/main/java/org/springframework/cache/annotation/SpringCacheAnnotationParser.java index 3134029bd61..17874bba4e5 100644 --- a/spring-context/src/main/java/org/springframework/cache/annotation/SpringCacheAnnotationParser.java +++ b/spring-context/src/main/java/org/springframework/cache/annotation/SpringCacheAnnotationParser.java @@ -48,12 +48,14 @@ import org.springframework.util.StringUtils; public class SpringCacheAnnotationParser implements CacheAnnotationParser, Serializable { @Override + @Nullable public Collection parseCacheAnnotations(Class type) { DefaultCacheConfig defaultConfig = getDefaultCacheConfig(type); return parseCacheAnnotations(defaultConfig, type); } @Override + @Nullable public Collection parseCacheAnnotations(Method method) { DefaultCacheConfig defaultConfig = getDefaultCacheConfig(method.getDeclaringClass()); return parseCacheAnnotations(defaultConfig, method); diff --git a/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheFactoryBean.java b/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheFactoryBean.java index 1ec7322b663..9b64a041e8e 100644 --- a/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheFactoryBean.java @@ -92,6 +92,7 @@ public class ConcurrentMapCacheFactoryBean @Override + @Nullable public ConcurrentMapCache getObject() { return this.cache; } diff --git a/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheManager.java b/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheManager.java index 7958bc8c24e..217ea350956 100644 --- a/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheManager.java +++ b/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheManager.java @@ -162,6 +162,7 @@ public class ConcurrentMapCacheManager implements CacheManager, BeanClassLoaderA } @Override + @Nullable public Cache getCache(String name) { Cache cache = this.cacheMap.get(name); if (cache == null && this.dynamic) { diff --git a/spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java b/spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java index 26ff1e8021a..a0d3c10200c 100644 --- a/spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java +++ b/spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java @@ -75,6 +75,7 @@ class AnnotationDrivenCacheBeanDefinitionParser implements BeanDefinitionParser * register an AutoProxyCreator} with the container as necessary. */ @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { String mode = element.getAttribute("mode"); if ("aspectj".equals(mode)) { diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/AbstractFallbackCacheOperationSource.java b/spring-context/src/main/java/org/springframework/cache/interceptor/AbstractFallbackCacheOperationSource.java index db4788c67d4..9cd38014786 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/AbstractFallbackCacheOperationSource.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/AbstractFallbackCacheOperationSource.java @@ -83,6 +83,7 @@ public abstract class AbstractFallbackCacheOperationSource implements CacheOpera * is not cacheable */ @Override + @Nullable public Collection getCacheOperations(Method method, @Nullable Class targetClass) { if (method.getDeclaringClass() == Object.class) { return null; diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/BeanFactoryCacheOperationSourceAdvisor.java b/spring-context/src/main/java/org/springframework/cache/interceptor/BeanFactoryCacheOperationSourceAdvisor.java index 929bc667e2c..9375095c1c5 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/BeanFactoryCacheOperationSourceAdvisor.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/BeanFactoryCacheOperationSourceAdvisor.java @@ -36,6 +36,7 @@ public class BeanFactoryCacheOperationSourceAdvisor extends AbstractBeanFactoryP private final CacheOperationSourcePointcut pointcut = new CacheOperationSourcePointcut() { @Override + @Nullable protected CacheOperationSource getCacheOperationSource() { return cacheOperationSource; } diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheEvaluationContext.java b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheEvaluationContext.java index 7e3ad6078c7..985c55befc0 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheEvaluationContext.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheEvaluationContext.java @@ -22,6 +22,7 @@ import java.util.Set; import org.springframework.context.expression.MethodBasedEvaluationContext; import org.springframework.core.ParameterNameDiscoverer; +import org.springframework.lang.Nullable; /** * Cache specific evaluation context that adds a method parameters as SpEL @@ -69,6 +70,7 @@ class CacheEvaluationContext extends MethodBasedEvaluationContext { * Load the param information only when needed. */ @Override + @Nullable public Object lookupVariable(String name) { if (this.unavailableVariables.contains(name)) { throw new VariableNotAvailableException(name); diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/CompositeCacheOperationSource.java b/spring-context/src/main/java/org/springframework/cache/interceptor/CompositeCacheOperationSource.java index a4fe20c588a..a5baa2cc43e 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/CompositeCacheOperationSource.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/CompositeCacheOperationSource.java @@ -55,6 +55,7 @@ public class CompositeCacheOperationSource implements CacheOperationSource, Seri } @Override + @Nullable public Collection getCacheOperations(Method method, @Nullable Class targetClass) { Collection ops = null; diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/NameMatchCacheOperationSource.java b/spring-context/src/main/java/org/springframework/cache/interceptor/NameMatchCacheOperationSource.java index 71b2b173617..515261b9d71 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/NameMatchCacheOperationSource.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/NameMatchCacheOperationSource.java @@ -75,6 +75,7 @@ public class NameMatchCacheOperationSource implements CacheOperationSource, Seri } @Override + @Nullable public Collection getCacheOperations(Method method, @Nullable Class targetClass) { // look for direct name match String methodName = method.getName(); diff --git a/spring-context/src/main/java/org/springframework/cache/support/AbstractCacheManager.java b/spring-context/src/main/java/org/springframework/cache/support/AbstractCacheManager.java index 7acb7deb1b2..18ddddb39c8 100644 --- a/spring-context/src/main/java/org/springframework/cache/support/AbstractCacheManager.java +++ b/spring-context/src/main/java/org/springframework/cache/support/AbstractCacheManager.java @@ -85,6 +85,7 @@ public abstract class AbstractCacheManager implements CacheManager, Initializing // Lazy cache initialization on access @Override + @Nullable public Cache getCache(String name) { Cache cache = this.cacheMap.get(name); if (cache != null) { diff --git a/spring-context/src/main/java/org/springframework/cache/support/CompositeCacheManager.java b/spring-context/src/main/java/org/springframework/cache/support/CompositeCacheManager.java index f10ec707bf8..0d250b83960 100644 --- a/spring-context/src/main/java/org/springframework/cache/support/CompositeCacheManager.java +++ b/spring-context/src/main/java/org/springframework/cache/support/CompositeCacheManager.java @@ -27,6 +27,7 @@ import java.util.Set; import org.springframework.beans.factory.InitializingBean; import org.springframework.cache.Cache; import org.springframework.cache.CacheManager; +import org.springframework.lang.Nullable; /** * Composite {@link CacheManager} implementation that iterates over @@ -98,6 +99,7 @@ public class CompositeCacheManager implements CacheManager, InitializingBean { @Override + @Nullable public Cache getCache(String name) { for (CacheManager cacheManager : this.cacheManagers) { Cache cache = cacheManager.getCache(name); diff --git a/spring-context/src/main/java/org/springframework/cache/support/NoOpCache.java b/spring-context/src/main/java/org/springframework/cache/support/NoOpCache.java index df16dbbc84d..144f69f8e94 100644 --- a/spring-context/src/main/java/org/springframework/cache/support/NoOpCache.java +++ b/spring-context/src/main/java/org/springframework/cache/support/NoOpCache.java @@ -58,16 +58,19 @@ public class NoOpCache implements Cache { } @Override + @Nullable public ValueWrapper get(Object key) { return null; } @Override + @Nullable public T get(Object key, @Nullable Class type) { return null; } @Override + @Nullable public T get(Object key, Callable valueLoader) { try { return valueLoader.call(); diff --git a/spring-context/src/main/java/org/springframework/cache/support/NoOpCacheManager.java b/spring-context/src/main/java/org/springframework/cache/support/NoOpCacheManager.java index ce8176ff22e..d6ba68b99f6 100644 --- a/spring-context/src/main/java/org/springframework/cache/support/NoOpCacheManager.java +++ b/spring-context/src/main/java/org/springframework/cache/support/NoOpCacheManager.java @@ -25,6 +25,7 @@ import java.util.concurrent.ConcurrentMap; import org.springframework.cache.Cache; import org.springframework.cache.CacheManager; +import org.springframework.lang.Nullable; /** * A basic, no operation {@link CacheManager} implementation suitable @@ -50,6 +51,7 @@ public class NoOpCacheManager implements CacheManager { * Additionally, the request cache will be remembered by the manager for consistency. */ @Override + @Nullable public Cache getCache(String name) { Cache cache = this.caches.get(name); if (cache == null) { diff --git a/spring-context/src/main/java/org/springframework/cache/support/SimpleValueWrapper.java b/spring-context/src/main/java/org/springframework/cache/support/SimpleValueWrapper.java index 4524dd39350..d44c19a7486 100644 --- a/spring-context/src/main/java/org/springframework/cache/support/SimpleValueWrapper.java +++ b/spring-context/src/main/java/org/springframework/cache/support/SimpleValueWrapper.java @@ -45,6 +45,7 @@ public class SimpleValueWrapper implements ValueWrapper { * Simply returns the value as given at construction time. */ @Override + @Nullable public Object get() { return this.value; } 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..24402a48de8 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.Nullable; /** * Parser for the <context:annotation-config/> element. @@ -39,6 +40,7 @@ import org.springframework.beans.factory.xml.ParserContext; public class AnnotationConfigBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { Object source = parserContext.extractSource(element); 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 aefd00d5beb..085eebdb0d5 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 @@ -173,6 +173,7 @@ public class ClassPathBeanDefinitionScanner extends ClassPathScanningCandidateCo /** * Return the BeanDefinitionRegistry that this scanner operates on. */ + @Override public final BeanDefinitionRegistry getRegistry() { return this.registry; } 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 4b056d0032c..6b5958eeb8f 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 @@ -79,6 +79,7 @@ public class ComponentScanBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { String basePackage = element.getAttribute(BASE_PACKAGE_ATTRIBUTE); basePackage = parserContext.getReaderContext().getEnvironment().resolvePlaceholders(basePackage); 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 a8ed2ad816c..6d72e89e3ce 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 @@ -714,6 +714,7 @@ class ConfigurationClassParser { } @Override + @Nullable public AnnotationMetadata getImportingClassFor(String importedClass) { List list = this.imports.get(importedClass); return (!CollectionUtils.isEmpty(list) ? list.get(list.size() - 1) : null); 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 ea899bb70ac..6e2ba609a6e 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 @@ -47,6 +47,7 @@ import org.springframework.util.Assert; public class ContextAnnotationAutowireCandidateResolver extends QualifierAnnotationAutowireCandidateResolver { @Override + @Nullable public Object getLazyResolutionProxyIfNecessary(DependencyDescriptor descriptor, @Nullable String beanName) { return (isLazy(descriptor) ? buildLazyResolutionProxy(descriptor, beanName) : null); } 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..6a8129702f8 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.Nullable; import org.springframework.util.Assert; /** @@ -68,6 +69,7 @@ public class ScannedGenericBeanDefinition extends GenericBeanDefinition implemen } @Override + @Nullable public MethodMetadata getFactoryMethodMetadata() { return null; } diff --git a/spring-context/src/main/java/org/springframework/context/expression/MethodBasedEvaluationContext.java b/spring-context/src/main/java/org/springframework/context/expression/MethodBasedEvaluationContext.java index 32f904f5f31..a20446fd9cb 100644 --- a/spring-context/src/main/java/org/springframework/context/expression/MethodBasedEvaluationContext.java +++ b/spring-context/src/main/java/org/springframework/context/expression/MethodBasedEvaluationContext.java @@ -21,6 +21,7 @@ import java.util.Arrays; import org.springframework.core.ParameterNameDiscoverer; import org.springframework.expression.spel.support.StandardEvaluationContext; +import org.springframework.lang.Nullable; import org.springframework.util.ObjectUtils; /** @@ -60,6 +61,7 @@ public class MethodBasedEvaluationContext extends StandardEvaluationContext { @Override + @Nullable public Object lookupVariable(String name) { Object variable = super.lookupVariable(name); if (variable != null) { diff --git a/spring-context/src/main/java/org/springframework/context/expression/StandardBeanExpressionResolver.java b/spring-context/src/main/java/org/springframework/context/expression/StandardBeanExpressionResolver.java index 28a4c8db665..c1767e8baff 100644 --- a/spring-context/src/main/java/org/springframework/context/expression/StandardBeanExpressionResolver.java +++ b/spring-context/src/main/java/org/springframework/context/expression/StandardBeanExpressionResolver.java @@ -132,6 +132,7 @@ public class StandardBeanExpressionResolver implements BeanExpressionResolver { @Override + @Nullable public Object evaluate(@Nullable String value, BeanExpressionContext evalContext) throws BeansException { if (!StringUtils.hasLength(value)) { return value; diff --git a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java index 76e05a5b45c..276ac7cec5b 100644 --- a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java @@ -1137,6 +1137,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader } @Override + @Nullable public Class getType(String name) throws NoSuchBeanDefinitionException { assertBeanFactoryActive(); return getBeanFactory().getType(name); @@ -1214,6 +1215,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader } @Override + @Nullable public A findAnnotationOnBean(String beanName, Class annotationType) throws NoSuchBeanDefinitionException{ @@ -1227,6 +1229,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader //--------------------------------------------------------------------- @Override + @Nullable public BeanFactory getParentBeanFactory() { return getParent(); } diff --git a/spring-context/src/main/java/org/springframework/context/support/ApplicationContextAwareProcessor.java b/spring-context/src/main/java/org/springframework/context/support/ApplicationContextAwareProcessor.java index ef071f4b335..c5843342b4e 100644 --- a/spring-context/src/main/java/org/springframework/context/support/ApplicationContextAwareProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/support/ApplicationContextAwareProcessor.java @@ -31,6 +31,7 @@ import org.springframework.context.EmbeddedValueResolverAware; import org.springframework.context.EnvironmentAware; import org.springframework.context.MessageSourceAware; import org.springframework.context.ResourceLoaderAware; +import org.springframework.lang.Nullable; import org.springframework.util.StringValueResolver; /** @@ -74,6 +75,7 @@ class ApplicationContextAwareProcessor implements BeanPostProcessor { @Override + @Nullable public Object postProcessBeforeInitialization(final Object bean, String beanName) throws BeansException { AccessControlContext acc = null; diff --git a/spring-context/src/main/java/org/springframework/context/support/ConversionServiceFactoryBean.java b/spring-context/src/main/java/org/springframework/context/support/ConversionServiceFactoryBean.java index 4991136b058..f7234203086 100644 --- a/spring-context/src/main/java/org/springframework/context/support/ConversionServiceFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/context/support/ConversionServiceFactoryBean.java @@ -87,6 +87,7 @@ public class ConversionServiceFactoryBean implements FactoryBean(ENVIRONMENT_PROPERTIES_PROPERTY_SOURCE_NAME, this.environment) { @Override + @Nullable public String getProperty(String key) { return this.source.getProperty(key); } diff --git a/spring-context/src/main/java/org/springframework/context/support/ReloadableResourceBundleMessageSource.java b/spring-context/src/main/java/org/springframework/context/support/ReloadableResourceBundleMessageSource.java index e5f5f1a6c0c..1f7f50b2b14 100644 --- a/spring-context/src/main/java/org/springframework/context/support/ReloadableResourceBundleMessageSource.java +++ b/spring-context/src/main/java/org/springframework/context/support/ReloadableResourceBundleMessageSource.java @@ -201,6 +201,7 @@ public class ReloadableResourceBundleMessageSource extends AbstractResourceBased * using a cached MessageFormat instance per message code. */ @Override + @Nullable protected MessageFormat resolveCode(String code, Locale locale) { if (getCacheMillis() < 0) { PropertiesHolder propHolder = getMergedProperties(locale); diff --git a/spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java b/spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java index 93f1a68c371..15395a9fd8c 100644 --- a/spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java +++ b/spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java @@ -145,6 +145,7 @@ public class ResourceBundleMessageSource extends AbstractResourceBasedMessageSou * using a cached MessageFormat instance per message code. */ @Override + @Nullable protected MessageFormat resolveCode(String code, Locale locale) { Set basenames = getBasenameSet(); for (String basename : basenames) { diff --git a/spring-context/src/main/java/org/springframework/context/support/SimpleThreadScope.java b/spring-context/src/main/java/org/springframework/context/support/SimpleThreadScope.java index c0caf4d572b..6101de2a100 100644 --- a/spring-context/src/main/java/org/springframework/context/support/SimpleThreadScope.java +++ b/spring-context/src/main/java/org/springframework/context/support/SimpleThreadScope.java @@ -25,6 +25,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.config.Scope; import org.springframework.core.NamedThreadLocal; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -78,6 +79,7 @@ public class SimpleThreadScope implements Scope { } @Override + @Nullable public Object remove(String name) { Map scope = this.threadScope.get(); return scope.remove(name); @@ -90,6 +92,7 @@ public class SimpleThreadScope implements Scope { } @Override + @Nullable public Object resolveContextualObject(String key) { return null; } diff --git a/spring-context/src/main/java/org/springframework/context/support/StaticMessageSource.java b/spring-context/src/main/java/org/springframework/context/support/StaticMessageSource.java index 9efe2b141f6..ec336dd1407 100644 --- a/spring-context/src/main/java/org/springframework/context/support/StaticMessageSource.java +++ b/spring-context/src/main/java/org/springframework/context/support/StaticMessageSource.java @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.Locale; import java.util.Map; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -47,6 +48,7 @@ public class StaticMessageSource extends AbstractMessageSource { } @Override + @Nullable protected MessageFormat resolveCode(String code, Locale locale) { String key = code + '_' + locale.toString(); String msg = this.messages.get(key); diff --git a/spring-context/src/main/java/org/springframework/ejb/access/AbstractRemoteSlsbInvokerInterceptor.java b/spring-context/src/main/java/org/springframework/ejb/access/AbstractRemoteSlsbInvokerInterceptor.java index 4170852332a..8b752d09434 100644 --- a/spring-context/src/main/java/org/springframework/ejb/access/AbstractRemoteSlsbInvokerInterceptor.java +++ b/spring-context/src/main/java/org/springframework/ejb/access/AbstractRemoteSlsbInvokerInterceptor.java @@ -95,6 +95,7 @@ public abstract class AbstractRemoteSlsbInvokerInterceptor extends AbstractSlsbI * @see #refreshAndRetry */ @Override + @Nullable public Object invokeInContext(MethodInvocation invocation) throws Throwable { try { return doInvoke(invocation); diff --git a/spring-context/src/main/java/org/springframework/ejb/access/LocalSlsbInvokerInterceptor.java b/spring-context/src/main/java/org/springframework/ejb/access/LocalSlsbInvokerInterceptor.java index d54621eb9a7..ece921cadfb 100644 --- a/spring-context/src/main/java/org/springframework/ejb/access/LocalSlsbInvokerInterceptor.java +++ b/spring-context/src/main/java/org/springframework/ejb/access/LocalSlsbInvokerInterceptor.java @@ -62,6 +62,7 @@ public class LocalSlsbInvokerInterceptor extends AbstractSlsbInvokerInterceptor * for example to hold a single shared EJB instance. */ @Override + @Nullable public Object invokeInContext(MethodInvocation invocation) throws Throwable { Object ejb = null; try { diff --git a/spring-context/src/main/java/org/springframework/ejb/access/LocalStatelessSessionProxyFactoryBean.java b/spring-context/src/main/java/org/springframework/ejb/access/LocalStatelessSessionProxyFactoryBean.java index b0edf884ddf..9d73b7fb444 100644 --- a/spring-context/src/main/java/org/springframework/ejb/access/LocalStatelessSessionProxyFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/ejb/access/LocalStatelessSessionProxyFactoryBean.java @@ -98,6 +98,7 @@ public class LocalStatelessSessionProxyFactoryBean extends LocalSlsbInvokerInter @Override + @Nullable public Object getObject() { return this.proxy; } diff --git a/spring-context/src/main/java/org/springframework/ejb/access/SimpleRemoteSlsbInvokerInterceptor.java b/spring-context/src/main/java/org/springframework/ejb/access/SimpleRemoteSlsbInvokerInterceptor.java index bf7aa03b14b..56681ddcdbc 100644 --- a/spring-context/src/main/java/org/springframework/ejb/access/SimpleRemoteSlsbInvokerInterceptor.java +++ b/spring-context/src/main/java/org/springframework/ejb/access/SimpleRemoteSlsbInvokerInterceptor.java @@ -93,6 +93,7 @@ public class SimpleRemoteSlsbInvokerInterceptor extends AbstractRemoteSlsbInvoke * for example to hold a single shared EJB component instance. */ @Override + @Nullable protected Object doInvoke(MethodInvocation invocation) throws Throwable { Object ejb = null; try { diff --git a/spring-context/src/main/java/org/springframework/ejb/access/SimpleRemoteStatelessSessionProxyFactoryBean.java b/spring-context/src/main/java/org/springframework/ejb/access/SimpleRemoteStatelessSessionProxyFactoryBean.java index fd32d9de807..7d9f5221265 100644 --- a/spring-context/src/main/java/org/springframework/ejb/access/SimpleRemoteStatelessSessionProxyFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/ejb/access/SimpleRemoteStatelessSessionProxyFactoryBean.java @@ -112,6 +112,7 @@ public class SimpleRemoteStatelessSessionProxyFactoryBean extends SimpleRemoteSl @Override + @Nullable public Object getObject() { return this.proxy; } diff --git a/spring-context/src/main/java/org/springframework/format/datetime/joda/DateTimeFormatterFactoryBean.java b/spring-context/src/main/java/org/springframework/format/datetime/joda/DateTimeFormatterFactoryBean.java index 08b43009034..a5ef98c8352 100644 --- a/spring-context/src/main/java/org/springframework/format/datetime/joda/DateTimeFormatterFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/format/datetime/joda/DateTimeFormatterFactoryBean.java @@ -47,6 +47,7 @@ public class DateTimeFormatterFactoryBean extends DateTimeFormatterFactory } @Override + @Nullable public DateTimeFormatter getObject() { return this.dateTimeFormatter; } diff --git a/spring-context/src/main/java/org/springframework/format/datetime/standard/DateTimeFormatterFactoryBean.java b/spring-context/src/main/java/org/springframework/format/datetime/standard/DateTimeFormatterFactoryBean.java index 4c805ab1dc1..ef999079e27 100644 --- a/spring-context/src/main/java/org/springframework/format/datetime/standard/DateTimeFormatterFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/format/datetime/standard/DateTimeFormatterFactoryBean.java @@ -47,6 +47,7 @@ public class DateTimeFormatterFactoryBean extends DateTimeFormatterFactory } @Override + @Nullable public DateTimeFormatter getObject() { return this.dateTimeFormatter; } diff --git a/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java b/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java index 8cf286a2a44..6136727225e 100644 --- a/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java +++ b/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java @@ -189,6 +189,7 @@ public class FormattingConversionService extends GenericConversionService } @Override + @Nullable public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { String text = (String) source; if (!StringUtils.hasText(text)) { @@ -247,6 +248,7 @@ public class FormattingConversionService extends GenericConversionService @Override @SuppressWarnings("unchecked") + @Nullable public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { Annotation ann = sourceType.getAnnotation(this.annotationType); if (ann == null) { @@ -301,6 +303,7 @@ public class FormattingConversionService extends GenericConversionService @Override @SuppressWarnings("unchecked") + @Nullable public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { Annotation ann = targetType.getAnnotation(this.annotationType); if (ann == null) { diff --git a/spring-context/src/main/java/org/springframework/format/support/FormattingConversionServiceFactoryBean.java b/spring-context/src/main/java/org/springframework/format/support/FormattingConversionServiceFactoryBean.java index 491a7bf8394..4a9c130fbbd 100644 --- a/spring-context/src/main/java/org/springframework/format/support/FormattingConversionServiceFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/format/support/FormattingConversionServiceFactoryBean.java @@ -167,6 +167,7 @@ public class FormattingConversionServiceFactoryBean @Override + @Nullable public FormattingConversionService getObject() { return this.conversionService; } diff --git a/spring-context/src/main/java/org/springframework/jmx/access/MBeanProxyFactoryBean.java b/spring-context/src/main/java/org/springframework/jmx/access/MBeanProxyFactoryBean.java index d2c4f96d8f3..1f5c0a2e660 100644 --- a/spring-context/src/main/java/org/springframework/jmx/access/MBeanProxyFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/jmx/access/MBeanProxyFactoryBean.java @@ -99,6 +99,7 @@ public class MBeanProxyFactoryBean extends MBeanClientInterceptor @Override + @Nullable public Object getObject() { return this.mbeanProxy; } diff --git a/spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java b/spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java index 97d567b416d..a5825c8fa0e 100644 --- a/spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java +++ b/spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java @@ -1102,6 +1102,7 @@ public class MBeanExporter extends MBeanRegistrationSupport implements MBeanExpo } @Override + @Nullable public Object getTarget() { try { return super.getTarget(); diff --git a/spring-context/src/main/java/org/springframework/jmx/export/annotation/AnnotationJmxAttributeSource.java b/spring-context/src/main/java/org/springframework/jmx/export/annotation/AnnotationJmxAttributeSource.java index 7beb0eb02ef..7036d867c17 100644 --- a/spring-context/src/main/java/org/springframework/jmx/export/annotation/AnnotationJmxAttributeSource.java +++ b/spring-context/src/main/java/org/springframework/jmx/export/annotation/AnnotationJmxAttributeSource.java @@ -63,6 +63,7 @@ public class AnnotationJmxAttributeSource implements JmxAttributeSource, BeanFac @Override + @Nullable public org.springframework.jmx.export.metadata.ManagedResource getManagedResource(Class beanClass) throws InvalidMetadataException { ManagedResource ann = AnnotationUtils.findAnnotation(beanClass, ManagedResource.class); if (ann == null) { @@ -79,6 +80,7 @@ public class AnnotationJmxAttributeSource implements JmxAttributeSource, BeanFac } @Override + @Nullable public org.springframework.jmx.export.metadata.ManagedAttribute getManagedAttribute(Method method) throws InvalidMetadataException { ManagedAttribute ann = AnnotationUtils.findAnnotation(method, ManagedAttribute.class); if (ann == null) { @@ -93,12 +95,14 @@ public class AnnotationJmxAttributeSource implements JmxAttributeSource, BeanFac } @Override + @Nullable public org.springframework.jmx.export.metadata.ManagedMetric getManagedMetric(Method method) throws InvalidMetadataException { ManagedMetric ann = AnnotationUtils.findAnnotation(method, ManagedMetric.class); return copyPropertiesToBean(ann, org.springframework.jmx.export.metadata.ManagedMetric.class); } @Override + @Nullable public org.springframework.jmx.export.metadata.ManagedOperation getManagedOperation(Method method) throws InvalidMetadataException { ManagedOperation ann = AnnotationUtils.findAnnotation(method, ManagedOperation.class); return copyPropertiesToBean(ann, org.springframework.jmx.export.metadata.ManagedOperation.class); diff --git a/spring-context/src/main/java/org/springframework/jmx/support/ConnectorServerFactoryBean.java b/spring-context/src/main/java/org/springframework/jmx/support/ConnectorServerFactoryBean.java index f26d0ec2d58..9dc4f17a6b4 100644 --- a/spring-context/src/main/java/org/springframework/jmx/support/ConnectorServerFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/jmx/support/ConnectorServerFactoryBean.java @@ -205,6 +205,7 @@ public class ConnectorServerFactoryBean extends MBeanRegistrationSupport @Override + @Nullable public JMXConnectorServer getObject() { return this.connectorServer; } diff --git a/spring-context/src/main/java/org/springframework/jmx/support/MBeanServerConnectionFactoryBean.java b/spring-context/src/main/java/org/springframework/jmx/support/MBeanServerConnectionFactoryBean.java index 034085d639b..274bf0dd9db 100644 --- a/spring-context/src/main/java/org/springframework/jmx/support/MBeanServerConnectionFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/jmx/support/MBeanServerConnectionFactoryBean.java @@ -157,6 +157,7 @@ public class MBeanServerConnectionFactoryBean @Override + @Nullable public MBeanServerConnection getObject() { return this.connection; } diff --git a/spring-context/src/main/java/org/springframework/jmx/support/MBeanServerFactoryBean.java b/spring-context/src/main/java/org/springframework/jmx/support/MBeanServerFactoryBean.java index b262da33db3..b366214f911 100644 --- a/spring-context/src/main/java/org/springframework/jmx/support/MBeanServerFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/jmx/support/MBeanServerFactoryBean.java @@ -185,6 +185,7 @@ public class MBeanServerFactoryBean implements FactoryBean, Initial @Override + @Nullable public MBeanServer getObject() { return this.server; } diff --git a/spring-context/src/main/java/org/springframework/jmx/support/WebSphereMBeanServerFactoryBean.java b/spring-context/src/main/java/org/springframework/jmx/support/WebSphereMBeanServerFactoryBean.java index 200bee62bcf..8d22bb87bea 100644 --- a/spring-context/src/main/java/org/springframework/jmx/support/WebSphereMBeanServerFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/jmx/support/WebSphereMBeanServerFactoryBean.java @@ -84,6 +84,7 @@ public class WebSphereMBeanServerFactoryBean implements FactoryBean @Override + @Nullable public MBeanServer getObject() { return this.mbeanServer; } diff --git a/spring-context/src/main/java/org/springframework/jndi/JndiObjectFactoryBean.java b/spring-context/src/main/java/org/springframework/jndi/JndiObjectFactoryBean.java index 4ce061a6ba9..10c9688b059 100644 --- a/spring-context/src/main/java/org/springframework/jndi/JndiObjectFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/jndi/JndiObjectFactoryBean.java @@ -266,6 +266,7 @@ public class JndiObjectFactoryBean extends JndiObjectLocator * Return the singleton JNDI object. */ @Override + @Nullable public Object getObject() { return this.jndiObject; } diff --git a/spring-context/src/main/java/org/springframework/jndi/JndiObjectTargetSource.java b/spring-context/src/main/java/org/springframework/jndi/JndiObjectTargetSource.java index 146306c5e52..c5b24106e68 100644 --- a/spring-context/src/main/java/org/springframework/jndi/JndiObjectTargetSource.java +++ b/spring-context/src/main/java/org/springframework/jndi/JndiObjectTargetSource.java @@ -109,6 +109,7 @@ public class JndiObjectTargetSource extends JndiObjectLocator implements TargetS @Override + @Nullable public Class getTargetClass() { if (this.cachedObject != null) { return this.cachedObject.getClass(); @@ -127,6 +128,7 @@ public class JndiObjectTargetSource extends JndiObjectLocator implements TargetS } @Override + @Nullable public Object getTarget() { try { if (this.lookupOnStartup || !this.cache) { diff --git a/spring-context/src/main/java/org/springframework/jndi/JndiPropertySource.java b/spring-context/src/main/java/org/springframework/jndi/JndiPropertySource.java index e2c40f34a89..a55d369226c 100644 --- a/spring-context/src/main/java/org/springframework/jndi/JndiPropertySource.java +++ b/spring-context/src/main/java/org/springframework/jndi/JndiPropertySource.java @@ -19,6 +19,7 @@ package org.springframework.jndi; import javax.naming.NamingException; import org.springframework.core.env.PropertySource; +import org.springframework.lang.Nullable; /** * {@link PropertySource} implementation that reads properties from an underlying Spring @@ -77,6 +78,7 @@ public class JndiPropertySource extends PropertySource { * {@code null} and issues a DEBUG-level log statement with the exception message. */ @Override + @Nullable public Object getProperty(String name) { if (getSource().isResourceRef() && name.indexOf(':') != -1) { // We're in resource-ref (prefixing with "java:comp/env") mode. Let's not bother diff --git a/spring-context/src/main/java/org/springframework/jndi/support/SimpleJndiBeanFactory.java b/spring-context/src/main/java/org/springframework/jndi/support/SimpleJndiBeanFactory.java index 61fd29d5a3d..42927b64bf4 100644 --- a/spring-context/src/main/java/org/springframework/jndi/support/SimpleJndiBeanFactory.java +++ b/spring-context/src/main/java/org/springframework/jndi/support/SimpleJndiBeanFactory.java @@ -187,6 +187,7 @@ public class SimpleJndiBeanFactory extends JndiLocatorSupport implements BeanFac } @Override + @Nullable public Class getType(String name) throws NoSuchBeanDefinitionException { try { return doGetType(name); diff --git a/spring-context/src/main/java/org/springframework/remoting/rmi/RmiInvocationWrapper.java b/spring-context/src/main/java/org/springframework/remoting/rmi/RmiInvocationWrapper.java index df766c67cee..d93ea62ad46 100644 --- a/spring-context/src/main/java/org/springframework/remoting/rmi/RmiInvocationWrapper.java +++ b/spring-context/src/main/java/org/springframework/remoting/rmi/RmiInvocationWrapper.java @@ -19,6 +19,7 @@ package org.springframework.remoting.rmi; import java.lang.reflect.InvocationTargetException; import java.rmi.RemoteException; +import org.springframework.lang.Nullable; import org.springframework.remoting.support.RemoteInvocation; import org.springframework.util.Assert; @@ -58,6 +59,7 @@ class RmiInvocationWrapper implements RmiInvocationHandler { * @see RmiBasedExporter#getServiceInterface() */ @Override + @Nullable public String getTargetInterfaceName() { Class ifc = this.rmiExporter.getServiceInterface(); return (ifc != null ? ifc.getName() : null); @@ -68,6 +70,7 @@ class RmiInvocationWrapper implements RmiInvocationHandler { * @see RmiBasedExporter#invoke(org.springframework.remoting.support.RemoteInvocation, Object) */ @Override + @Nullable public Object invoke(RemoteInvocation invocation) throws RemoteException, NoSuchMethodException, IllegalAccessException, InvocationTargetException { diff --git a/spring-context/src/main/java/org/springframework/scheduling/annotation/AnnotationAsyncExecutionInterceptor.java b/spring-context/src/main/java/org/springframework/scheduling/annotation/AnnotationAsyncExecutionInterceptor.java index dce1c0182a3..e5700a0d4d2 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/annotation/AnnotationAsyncExecutionInterceptor.java +++ b/spring-context/src/main/java/org/springframework/scheduling/annotation/AnnotationAsyncExecutionInterceptor.java @@ -76,6 +76,7 @@ public class AnnotationAsyncExecutionInterceptor extends AsyncExecutionIntercept * @see #determineAsyncExecutor(Method) */ @Override + @Nullable protected String getExecutorQualifier(Method method) { // Maintainer's note: changes made here should also be made in // AnnotationAsyncExecutionAspect#getExecutorQualifier diff --git a/spring-context/src/main/java/org/springframework/scheduling/annotation/AsyncConfigurationSelector.java b/spring-context/src/main/java/org/springframework/scheduling/annotation/AsyncConfigurationSelector.java index e509f4e7c2d..1263db9ae67 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/annotation/AsyncConfigurationSelector.java +++ b/spring-context/src/main/java/org/springframework/scheduling/annotation/AsyncConfigurationSelector.java @@ -18,6 +18,7 @@ package org.springframework.scheduling.annotation; import org.springframework.context.annotation.AdviceMode; import org.springframework.context.annotation.AdviceModeImportSelector; +import org.springframework.lang.Nullable; /** * Selects which implementation of {@link AbstractAsyncConfiguration} should be used based @@ -39,6 +40,7 @@ public class AsyncConfigurationSelector extends AdviceModeImportSelector schedule(Runnable task, Trigger trigger) { try { if (this.enterpriseConcurrentScheduler) { diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ForkJoinPoolFactoryBean.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ForkJoinPoolFactoryBean.java index 4801edbbea1..0c6501189a9 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ForkJoinPoolFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ForkJoinPoolFactoryBean.java @@ -134,6 +134,7 @@ public class ForkJoinPoolFactoryBean implements FactoryBean, Initi @Override + @Nullable public ForkJoinPool getObject() { return this.forkJoinPool; } diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ScheduledExecutorFactoryBean.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ScheduledExecutorFactoryBean.java index 3bc04692041..15c83502b8d 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ScheduledExecutorFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ScheduledExecutorFactoryBean.java @@ -232,6 +232,7 @@ public class ScheduledExecutorFactoryBean extends ExecutorConfigurationSupport @Override + @Nullable public ScheduledExecutorService getObject() { return this.exposedExecutor; } diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolExecutorFactoryBean.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolExecutorFactoryBean.java index 561e3e7e213..d637f374f25 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolExecutorFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolExecutorFactoryBean.java @@ -192,6 +192,7 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport @Override + @Nullable public ExecutorService getObject() { return this.exposedExecutor; } diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java index 2c098b27615..aeb6a973481 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java @@ -284,6 +284,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport // TaskScheduler implementation @Override + @Nullable public ScheduledFuture schedule(Runnable task, Trigger trigger) { ScheduledExecutorService executor = getScheduledExecutor(); try { diff --git a/spring-context/src/main/java/org/springframework/scheduling/config/AnnotationDrivenBeanDefinitionParser.java b/spring-context/src/main/java/org/springframework/scheduling/config/AnnotationDrivenBeanDefinitionParser.java index f70b84066ee..197a379e68b 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/config/AnnotationDrivenBeanDefinitionParser.java +++ b/spring-context/src/main/java/org/springframework/scheduling/config/AnnotationDrivenBeanDefinitionParser.java @@ -27,6 +27,7 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** @@ -46,6 +47,7 @@ public class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParse @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { Object source = parserContext.extractSource(element); diff --git a/spring-context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java b/spring-context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java index 9a9420ce6c2..921600db52e 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java +++ b/spring-context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java @@ -144,6 +144,7 @@ public class TaskExecutorFactoryBean implements @Override + @Nullable public TaskExecutor getObject() { return this.target; } diff --git a/spring-context/src/main/java/org/springframework/scheduling/support/SimpleTriggerContext.java b/spring-context/src/main/java/org/springframework/scheduling/support/SimpleTriggerContext.java index afad1f594f9..e36d0c82b52 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/support/SimpleTriggerContext.java +++ b/spring-context/src/main/java/org/springframework/scheduling/support/SimpleTriggerContext.java @@ -72,16 +72,19 @@ public class SimpleTriggerContext implements TriggerContext { @Override + @Nullable public Date lastScheduledExecutionTime() { return this.lastScheduledExecutionTime; } @Override + @Nullable public Date lastActualExecutionTime() { return this.lastActualExecutionTime; } @Override + @Nullable public Date lastCompletionTime() { return this.lastCompletionTime; } diff --git a/spring-context/src/main/java/org/springframework/scripting/bsh/BshScriptFactory.java b/spring-context/src/main/java/org/springframework/scripting/bsh/BshScriptFactory.java index 074edfa43d6..66bc5c4727d 100644 --- a/spring-context/src/main/java/org/springframework/scripting/bsh/BshScriptFactory.java +++ b/spring-context/src/main/java/org/springframework/scripting/bsh/BshScriptFactory.java @@ -122,6 +122,7 @@ public class BshScriptFactory implements ScriptFactory, BeanClassLoaderAware { * @see BshScriptUtils#createBshObject(String, Class[], ClassLoader) */ @Override + @Nullable public Object getScriptedObject(ScriptSource scriptSource, @Nullable Class... actualInterfaces) throws IOException, ScriptCompilationException { @@ -180,6 +181,7 @@ public class BshScriptFactory implements ScriptFactory, BeanClassLoaderAware { } @Override + @Nullable public Class getScriptedObjectType(ScriptSource scriptSource) throws IOException, ScriptCompilationException { diff --git a/spring-context/src/main/java/org/springframework/scripting/config/ScriptBeanDefinitionParser.java b/spring-context/src/main/java/org/springframework/scripting/config/ScriptBeanDefinitionParser.java index 1beb649a9b6..e0e906ad931 100644 --- a/spring-context/src/main/java/org/springframework/scripting/config/ScriptBeanDefinitionParser.java +++ b/spring-context/src/main/java/org/springframework/scripting/config/ScriptBeanDefinitionParser.java @@ -104,6 +104,7 @@ class ScriptBeanDefinitionParser extends AbstractBeanDefinitionParser { */ @Override @SuppressWarnings("deprecation") + @Nullable protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { // Engine attribute only supported for String engine = element.getAttribute(ENGINE_ATTRIBUTE); diff --git a/spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java b/spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java index 68b82eddae0..d06d71363b1 100644 --- a/spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java +++ b/spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java @@ -195,6 +195,7 @@ public class GroovyScriptFactory implements ScriptFactory, BeanFactoryAware, Bea * @return {@code null} always */ @Override + @Nullable public Class[] getScriptInterfaces() { return null; } @@ -214,6 +215,7 @@ public class GroovyScriptFactory implements ScriptFactory, BeanFactoryAware, Bea * @see groovy.lang.GroovyClassLoader */ @Override + @Nullable public Object getScriptedObject(ScriptSource scriptSource, @Nullable Class... actualInterfaces) throws IOException, ScriptCompilationException { @@ -257,6 +259,7 @@ public class GroovyScriptFactory implements ScriptFactory, BeanFactoryAware, Bea } @Override + @Nullable public Class getScriptedObjectType(ScriptSource scriptSource) throws IOException, ScriptCompilationException { diff --git a/spring-context/src/main/java/org/springframework/scripting/support/ResourceScriptSource.java b/spring-context/src/main/java/org/springframework/scripting/support/ResourceScriptSource.java index db8236e3a4b..e6abca378a8 100644 --- a/spring-context/src/main/java/org/springframework/scripting/support/ResourceScriptSource.java +++ b/spring-context/src/main/java/org/springframework/scripting/support/ResourceScriptSource.java @@ -128,6 +128,7 @@ public class ResourceScriptSource implements ScriptSource { } @Override + @Nullable public String suggestedClassName() { String filename = getResource().getFilename(); return (filename != null ? StringUtils.stripFilenameExtension(filename) : null); diff --git a/spring-context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java b/spring-context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java index 88c22ad6a61..0e379c8ebf6 100644 --- a/spring-context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java @@ -244,6 +244,7 @@ public class ScriptFactoryPostProcessor extends InstantiationAwareBeanPostProces @Override + @Nullable public Class predictBeanType(Class beanClass, String beanName) { // We only apply special treatment to ScriptFactory implementations here. if (!ScriptFactory.class.isAssignableFrom(beanClass)) { diff --git a/spring-context/src/main/java/org/springframework/scripting/support/StandardScriptEvaluator.java b/spring-context/src/main/java/org/springframework/scripting/support/StandardScriptEvaluator.java index e792a1aeb70..112b3400bd3 100644 --- a/spring-context/src/main/java/org/springframework/scripting/support/StandardScriptEvaluator.java +++ b/spring-context/src/main/java/org/springframework/scripting/support/StandardScriptEvaluator.java @@ -131,11 +131,13 @@ public class StandardScriptEvaluator implements ScriptEvaluator, BeanClassLoader @Override + @Nullable public Object evaluate(ScriptSource script) { return evaluate(script, null); } @Override + @Nullable public Object evaluate(ScriptSource script, @Nullable Map argumentBindings) { ScriptEngine engine = getScriptEngine(script); try { diff --git a/spring-context/src/main/java/org/springframework/scripting/support/StandardScriptFactory.java b/spring-context/src/main/java/org/springframework/scripting/support/StandardScriptFactory.java index 0c48b931cc0..4c684b35b63 100644 --- a/spring-context/src/main/java/org/springframework/scripting/support/StandardScriptFactory.java +++ b/spring-context/src/main/java/org/springframework/scripting/support/StandardScriptFactory.java @@ -139,6 +139,7 @@ public class StandardScriptFactory implements ScriptFactory, BeanClassLoaderAwar * Load and parse the script via JSR-223's ScriptEngine. */ @Override + @Nullable public Object getScriptedObject(ScriptSource scriptSource, @Nullable Class... actualInterfaces) throws IOException, ScriptCompilationException { @@ -259,6 +260,7 @@ public class StandardScriptFactory implements ScriptFactory, BeanClassLoaderAwar } @Override + @Nullable public Class getScriptedObjectType(ScriptSource scriptSource) throws IOException, ScriptCompilationException { diff --git a/spring-context/src/main/java/org/springframework/scripting/support/StaticScriptSource.java b/spring-context/src/main/java/org/springframework/scripting/support/StaticScriptSource.java index 839c65aad1f..01f0b72bb37 100644 --- a/spring-context/src/main/java/org/springframework/scripting/support/StaticScriptSource.java +++ b/spring-context/src/main/java/org/springframework/scripting/support/StaticScriptSource.java @@ -82,6 +82,7 @@ public class StaticScriptSource implements ScriptSource { } @Override + @Nullable public String suggestedClassName() { return this.className; } diff --git a/spring-context/src/main/java/org/springframework/ui/context/support/DelegatingThemeSource.java b/spring-context/src/main/java/org/springframework/ui/context/support/DelegatingThemeSource.java index a222d11a0ad..7faaac57a5f 100644 --- a/spring-context/src/main/java/org/springframework/ui/context/support/DelegatingThemeSource.java +++ b/spring-context/src/main/java/org/springframework/ui/context/support/DelegatingThemeSource.java @@ -51,6 +51,7 @@ public class DelegatingThemeSource implements HierarchicalThemeSource { @Override + @Nullable public Theme getTheme(String themeName) { if (this.parentThemeSource != null) { return this.parentThemeSource.getTheme(themeName); diff --git a/spring-context/src/main/java/org/springframework/ui/context/support/ResourceBundleThemeSource.java b/spring-context/src/main/java/org/springframework/ui/context/support/ResourceBundleThemeSource.java index 80d1d7cb029..ce47df387b5 100644 --- a/spring-context/src/main/java/org/springframework/ui/context/support/ResourceBundleThemeSource.java +++ b/spring-context/src/main/java/org/springframework/ui/context/support/ResourceBundleThemeSource.java @@ -136,6 +136,7 @@ public class ResourceBundleThemeSource implements HierarchicalThemeSource, BeanC * @see #createMessageSource */ @Override + @Nullable public Theme getTheme(String themeName) { Theme theme = this.themeCache.get(themeName); if (theme == null) { diff --git a/spring-context/src/main/java/org/springframework/validation/AbstractBindingResult.java b/spring-context/src/main/java/org/springframework/validation/AbstractBindingResult.java index ec53fbc1f1f..2599919e228 100644 --- a/spring-context/src/main/java/org/springframework/validation/AbstractBindingResult.java +++ b/spring-context/src/main/java/org/springframework/validation/AbstractBindingResult.java @@ -168,6 +168,7 @@ public abstract class AbstractBindingResult extends AbstractErrors implements Bi } @Override + @Nullable public ObjectError getGlobalError() { for (ObjectError objectError : this.errors) { if (!(objectError instanceof FieldError)) { @@ -189,6 +190,7 @@ public abstract class AbstractBindingResult extends AbstractErrors implements Bi } @Override + @Nullable public FieldError getFieldError() { for (ObjectError objectError : this.errors) { if (objectError instanceof FieldError) { @@ -211,6 +213,7 @@ public abstract class AbstractBindingResult extends AbstractErrors implements Bi } @Override + @Nullable public FieldError getFieldError(String field) { String fixedField = fixedField(field); for (ObjectError objectError : this.errors) { @@ -225,6 +228,7 @@ public abstract class AbstractBindingResult extends AbstractErrors implements Bi } @Override + @Nullable public Object getFieldValue(String field) { FieldError fieldError = getFieldError(field); // Use rejected value in case of error, current bean property value else. @@ -244,6 +248,7 @@ public abstract class AbstractBindingResult extends AbstractErrors implements Bi * @see #getActualFieldValue */ @Override + @Nullable public Class getFieldType(@Nullable String field) { Object value = getActualFieldValue(fixedField(field)); if (value != null) { @@ -280,6 +285,7 @@ public abstract class AbstractBindingResult extends AbstractErrors implements Bi } @Override + @Nullable public Object getRawFieldValue(String field) { return getActualFieldValue(fixedField(field)); } @@ -290,6 +296,7 @@ public abstract class AbstractBindingResult extends AbstractErrors implements Bi * editor lookup facility, if available. */ @Override + @Nullable public PropertyEditor findEditor(@Nullable String field, @Nullable Class valueType) { PropertyEditorRegistry editorRegistry = getPropertyEditorRegistry(); if (editorRegistry != null) { @@ -308,6 +315,7 @@ public abstract class AbstractBindingResult extends AbstractErrors implements Bi * This implementation returns {@code null}. */ @Override + @Nullable public PropertyEditorRegistry getPropertyEditorRegistry() { return null; } @@ -363,6 +371,7 @@ public abstract class AbstractBindingResult extends AbstractErrors implements Bi * Return the wrapped target object. */ @Override + @Nullable public abstract Object getTarget(); /** diff --git a/spring-context/src/main/java/org/springframework/validation/AbstractErrors.java b/spring-context/src/main/java/org/springframework/validation/AbstractErrors.java index be95eb8725e..f432739f02a 100644 --- a/spring-context/src/main/java/org/springframework/validation/AbstractErrors.java +++ b/spring-context/src/main/java/org/springframework/validation/AbstractErrors.java @@ -162,6 +162,7 @@ public abstract class AbstractErrors implements Errors, Serializable { } @Override + @Nullable public ObjectError getGlobalError() { List globalErrors = getGlobalErrors(); return (!globalErrors.isEmpty() ? globalErrors.get(0) : null); @@ -178,6 +179,7 @@ public abstract class AbstractErrors implements Errors, Serializable { } @Override + @Nullable public FieldError getFieldError() { List fieldErrors = getFieldErrors(); return (!fieldErrors.isEmpty() ? fieldErrors.get(0) : null); @@ -207,13 +209,14 @@ public abstract class AbstractErrors implements Errors, Serializable { } @Override + @Nullable public FieldError getFieldError(String field) { List fieldErrors = getFieldErrors(field); return (!fieldErrors.isEmpty() ? fieldErrors.get(0) : null); } - @Override + @Nullable public Class getFieldType(String field) { Object value = getFieldValue(field); return (value != null ? value.getClass() : null); diff --git a/spring-context/src/main/java/org/springframework/validation/AbstractPropertyBindingResult.java b/spring-context/src/main/java/org/springframework/validation/AbstractPropertyBindingResult.java index ecedb35fe23..191a68934a0 100644 --- a/spring-context/src/main/java/org/springframework/validation/AbstractPropertyBindingResult.java +++ b/spring-context/src/main/java/org/springframework/validation/AbstractPropertyBindingResult.java @@ -88,6 +88,7 @@ public abstract class AbstractPropertyBindingResult extends AbstractBindingResul * @see #getPropertyAccessor() */ @Override + @Nullable public Class getFieldType(@Nullable String field) { return getPropertyAccessor().getPropertyType(fixedField(field)); } @@ -97,6 +98,7 @@ public abstract class AbstractPropertyBindingResult extends AbstractBindingResul * @see #getPropertyAccessor() */ @Override + @Nullable protected Object getActualFieldValue(String field) { return getPropertyAccessor().getPropertyValue(field); } @@ -150,6 +152,7 @@ public abstract class AbstractPropertyBindingResult extends AbstractBindingResul * if applicable. */ @Override + @Nullable public PropertyEditor findEditor(@Nullable String field, @Nullable Class valueType) { Class valueTypeForLookup = valueType; if (valueTypeForLookup == null) { diff --git a/spring-context/src/main/java/org/springframework/validation/BindException.java b/spring-context/src/main/java/org/springframework/validation/BindException.java index 18a5b84bf42..ebf34f3fd14 100644 --- a/spring-context/src/main/java/org/springframework/validation/BindException.java +++ b/spring-context/src/main/java/org/springframework/validation/BindException.java @@ -171,6 +171,7 @@ public class BindException extends Exception implements BindingResult { } @Override + @Nullable public ObjectError getGlobalError() { return this.bindingResult.getGlobalError(); } @@ -191,6 +192,7 @@ public class BindException extends Exception implements BindingResult { } @Override + @Nullable public FieldError getFieldError() { return this.bindingResult.getFieldError(); } @@ -211,16 +213,19 @@ public class BindException extends Exception implements BindingResult { } @Override + @Nullable public FieldError getFieldError(String field) { return this.bindingResult.getFieldError(field); } @Override + @Nullable public Object getFieldValue(String field) { return this.bindingResult.getFieldValue(field); } @Override + @Nullable public Class getFieldType(String field) { return this.bindingResult.getFieldType(field); } @@ -236,6 +241,7 @@ public class BindException extends Exception implements BindingResult { } @Override + @Nullable public Object getRawFieldValue(String field) { return this.bindingResult.getRawFieldValue(field); } diff --git a/spring-context/src/main/java/org/springframework/validation/DataBinder.java b/spring-context/src/main/java/org/springframework/validation/DataBinder.java index 9367f21aa2e..f8fe8df2bc9 100644 --- a/spring-context/src/main/java/org/springframework/validation/DataBinder.java +++ b/spring-context/src/main/java/org/springframework/validation/DataBinder.java @@ -672,16 +672,19 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter { } @Override + @Nullable public PropertyEditor findCustomEditor(@Nullable Class requiredType, @Nullable String propertyPath) { return getPropertyEditorRegistry().findCustomEditor(requiredType, propertyPath); } @Override + @Nullable public T convertIfNecessary(@Nullable Object value, @Nullable Class requiredType) throws TypeMismatchException { return getTypeConverter().convertIfNecessary(value, requiredType); } @Override + @Nullable public T convertIfNecessary(@Nullable Object value, @Nullable Class requiredType, @Nullable MethodParameter methodParam) throws TypeMismatchException { @@ -689,6 +692,7 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter { } @Override + @Nullable public T convertIfNecessary(@Nullable Object value, @Nullable Class requiredType, @Nullable Field field) throws TypeMismatchException { diff --git a/spring-context/src/main/java/org/springframework/validation/MapBindingResult.java b/spring-context/src/main/java/org/springframework/validation/MapBindingResult.java index 1fc7c5616cb..b2c33732052 100644 --- a/spring-context/src/main/java/org/springframework/validation/MapBindingResult.java +++ b/spring-context/src/main/java/org/springframework/validation/MapBindingResult.java @@ -19,6 +19,7 @@ package org.springframework.validation; import java.io.Serializable; import java.util.Map; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -61,6 +62,7 @@ public class MapBindingResult extends AbstractBindingResult implements Serializa } @Override + @Nullable protected Object getActualFieldValue(String field) { return this.target.get(field); } diff --git a/spring-context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java b/spring-context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java index 68cb263a141..3483f3f97ec 100644 --- a/spring-context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java +++ b/spring-context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java @@ -367,6 +367,7 @@ public class SpringValidatorAdapter implements SmartValidator, javax.validation. } @Override + @Nullable public Object[] getArguments() { return null; } diff --git a/spring-core/src/main/java/org/springframework/core/AttributeAccessorSupport.java b/spring-core/src/main/java/org/springframework/core/AttributeAccessorSupport.java index 6b72f9262a3..4595a08ce93 100644 --- a/spring-core/src/main/java/org/springframework/core/AttributeAccessorSupport.java +++ b/spring-core/src/main/java/org/springframework/core/AttributeAccessorSupport.java @@ -52,12 +52,14 @@ public abstract class AttributeAccessorSupport implements AttributeAccessor, Ser } @Override + @Nullable public Object getAttribute(String name) { Assert.notNull(name, "Name must not be null"); return this.attributes.get(name); } @Override + @Nullable public Object removeAttribute(String name) { Assert.notNull(name, "Name must not be null"); return this.attributes.remove(name); diff --git a/spring-core/src/main/java/org/springframework/core/GenericTypeResolver.java b/spring-core/src/main/java/org/springframework/core/GenericTypeResolver.java index 609567dfa5b..36f5397bd46 100644 --- a/spring-core/src/main/java/org/springframework/core/GenericTypeResolver.java +++ b/spring-core/src/main/java/org/springframework/core/GenericTypeResolver.java @@ -282,6 +282,7 @@ public abstract class GenericTypeResolver { } @Override + @Nullable public ResolvableType resolveVariable(TypeVariable variable) { Type type = this.typeVariableMap.get(variable); return (type != null ? ResolvableType.forType(type) : null); diff --git a/spring-core/src/main/java/org/springframework/core/LocalVariableTableParameterNameDiscoverer.java b/spring-core/src/main/java/org/springframework/core/LocalVariableTableParameterNameDiscoverer.java index 1944a342349..1f12d2f2f57 100644 --- a/spring-core/src/main/java/org/springframework/core/LocalVariableTableParameterNameDiscoverer.java +++ b/spring-core/src/main/java/org/springframework/core/LocalVariableTableParameterNameDiscoverer.java @@ -65,6 +65,7 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD @Override + @Nullable public String[] getParameterNames(Method method) { Method originalMethod = BridgeMethodResolver.findBridgedMethod(method); Class declaringClass = originalMethod.getDeclaringClass(); @@ -80,6 +81,7 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD } @Override + @Nullable public String[] getParameterNames(Constructor ctor) { Class declaringClass = ctor.getDeclaringClass(); Map map = this.parameterNamesCache.get(declaringClass); diff --git a/spring-core/src/main/java/org/springframework/core/PrioritizedParameterNameDiscoverer.java b/spring-core/src/main/java/org/springframework/core/PrioritizedParameterNameDiscoverer.java index 0aa80aa9594..9706280ed94 100644 --- a/spring-core/src/main/java/org/springframework/core/PrioritizedParameterNameDiscoverer.java +++ b/spring-core/src/main/java/org/springframework/core/PrioritizedParameterNameDiscoverer.java @@ -21,6 +21,8 @@ import java.lang.reflect.Method; import java.util.LinkedList; import java.util.List; +import org.springframework.lang.Nullable; + /** * {@link ParameterNameDiscoverer} implementation that tries several discoverer * delegates in succession. Those added first in the {@code addDiscoverer} method @@ -47,6 +49,7 @@ public class PrioritizedParameterNameDiscoverer implements ParameterNameDiscover @Override + @Nullable public String[] getParameterNames(Method method) { for (ParameterNameDiscoverer pnd : this.parameterNameDiscoverers) { String[] result = pnd.getParameterNames(method); @@ -58,6 +61,7 @@ public class PrioritizedParameterNameDiscoverer implements ParameterNameDiscover } @Override + @Nullable public String[] getParameterNames(Constructor ctor) { for (ParameterNameDiscoverer pnd : this.parameterNameDiscoverers) { String[] result = pnd.getParameterNames(ctor); diff --git a/spring-core/src/main/java/org/springframework/core/ResolvableType.java b/spring-core/src/main/java/org/springframework/core/ResolvableType.java index f9fabf2c800..66a35ab9830 100644 --- a/spring-core/src/main/java/org/springframework/core/ResolvableType.java +++ b/spring-core/src/main/java/org/springframework/core/ResolvableType.java @@ -1419,6 +1419,7 @@ public class ResolvableType implements Serializable { private class DefaultVariableResolver implements VariableResolver { @Override + @Nullable public ResolvableType resolveVariable(TypeVariable variable) { return ResolvableType.this.resolveVariable(variable); } @@ -1443,6 +1444,7 @@ public class ResolvableType implements Serializable { } @Override + @Nullable public ResolvableType resolveVariable(TypeVariable variable) { for (int i = 0; i < this.variables.length; i++) { if (ObjectUtils.nullSafeEquals(SerializableTypeWrapper.unwrap(this.variables[i]), diff --git a/spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java b/spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java index 9cd318b0bbb..272a9c9cbee 100644 --- a/spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java +++ b/spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java @@ -372,6 +372,7 @@ abstract class SerializableTypeWrapper { } @Override + @Nullable public Type getType() { Object result = this.result; if (result == null) { @@ -384,6 +385,7 @@ abstract class SerializableTypeWrapper { } @Override + @Nullable public Object getSource() { return null; } diff --git a/spring-core/src/main/java/org/springframework/core/StandardReflectionParameterNameDiscoverer.java b/spring-core/src/main/java/org/springframework/core/StandardReflectionParameterNameDiscoverer.java index 47259fc361a..72e9d859b0a 100644 --- a/spring-core/src/main/java/org/springframework/core/StandardReflectionParameterNameDiscoverer.java +++ b/spring-core/src/main/java/org/springframework/core/StandardReflectionParameterNameDiscoverer.java @@ -20,6 +20,8 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.lang.reflect.Parameter; +import org.springframework.lang.Nullable; + /** * {@link ParameterNameDiscoverer} implementation which uses JDK 8's reflection facilities * for introspecting parameter names (based on the "-parameters" compiler flag). @@ -32,15 +34,18 @@ import java.lang.reflect.Parameter; public class StandardReflectionParameterNameDiscoverer implements ParameterNameDiscoverer { @Override + @Nullable public String[] getParameterNames(Method method) { return getParameterNames(method.getParameters()); } @Override + @Nullable public String[] getParameterNames(Constructor ctor) { return getParameterNames(ctor.getParameters()); } + @Nullable private String[] getParameterNames(Parameter[] parameters) { String[] parameterNames = new String[parameters.length]; for (int i = 0; i < parameters.length; i++) { diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AbstractAliasAwareAnnotationAttributeExtractor.java b/spring-core/src/main/java/org/springframework/core/annotation/AbstractAliasAwareAnnotationAttributeExtractor.java index d7a7ed3561e..03551e35ee9 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AbstractAliasAwareAnnotationAttributeExtractor.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AbstractAliasAwareAnnotationAttributeExtractor.java @@ -85,6 +85,7 @@ abstract class AbstractAliasAwareAnnotationAttributeExtractor implements Anno } @Override + @Nullable public final Object getAttributeValue(Method attributeMethod) { String attributeName = attributeMethod.getName(); Object attributeValue = getRawAttributeValue(attributeMethod); diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAwareOrderComparator.java b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAwareOrderComparator.java index f9c07c81f11..0e19e8cf441 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAwareOrderComparator.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAwareOrderComparator.java @@ -24,6 +24,7 @@ import java.util.List; import org.springframework.core.DecoratingProxy; import org.springframework.core.OrderComparator; +import org.springframework.lang.Nullable; /** * {@code AnnotationAwareOrderComparator} is an extension of @@ -58,6 +59,8 @@ public class AnnotationAwareOrderComparator extends OrderComparator { * elements, in addition to the {@link org.springframework.core.Ordered} * check in the superclass. */ + @Override + @Nullable protected Integer findOrder(Object obj) { // Check for regular Ordered interface Integer order = super.findOrder(obj); @@ -97,6 +100,8 @@ public class AnnotationAwareOrderComparator extends OrderComparator { * annotation: typically, selecting one object over another in case of * multiple matches but only one object to be returned. */ + @Override + @Nullable public Integer getPriority(Object obj) { if (obj instanceof Class) { return OrderUtils.getPriority((Class) obj); diff --git a/spring-core/src/main/java/org/springframework/core/annotation/DefaultAnnotationAttributeExtractor.java b/spring-core/src/main/java/org/springframework/core/annotation/DefaultAnnotationAttributeExtractor.java index 743444a8607..06d5a8af541 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/DefaultAnnotationAttributeExtractor.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/DefaultAnnotationAttributeExtractor.java @@ -48,12 +48,14 @@ class DefaultAnnotationAttributeExtractor extends AbstractAliasAwareAnnotationAt @Override + @Nullable protected Object getRawAttributeValue(Method attributeMethod) { ReflectionUtils.makeAccessible(attributeMethod); return ReflectionUtils.invokeMethod(attributeMethod, getSource()); } @Override + @Nullable protected Object getRawAttributeValue(String attributeName) { Method attributeMethod = ReflectionUtils.findMethod(getAnnotationType(), attributeName); return (attributeMethod != null ? getRawAttributeValue(attributeMethod) : null); diff --git a/spring-core/src/main/java/org/springframework/core/annotation/MapAnnotationAttributeExtractor.java b/spring-core/src/main/java/org/springframework/core/annotation/MapAnnotationAttributeExtractor.java index 6eed1d0d57b..4ef4abd7b12 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/MapAnnotationAttributeExtractor.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/MapAnnotationAttributeExtractor.java @@ -60,11 +60,13 @@ class MapAnnotationAttributeExtractor extends AbstractAliasAwareAnnotationAttrib @Override + @Nullable protected Object getRawAttributeValue(Method attributeMethod) { return getRawAttributeValue(attributeMethod.getName()); } @Override + @Nullable protected Object getRawAttributeValue(String attributeName) { return getSource().get(attributeName); } diff --git a/spring-core/src/main/java/org/springframework/core/convert/converter/ConvertingComparator.java b/spring-core/src/main/java/org/springframework/core/convert/converter/ConvertingComparator.java index 7dbfed09931..c5af0d7631a 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/converter/ConvertingComparator.java +++ b/spring-core/src/main/java/org/springframework/core/convert/converter/ConvertingComparator.java @@ -20,6 +20,7 @@ import java.util.Comparator; import java.util.Map; import org.springframework.core.convert.ConversionService; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.comparator.Comparators; @@ -119,6 +120,7 @@ public class ConvertingComparator implements Comparator { } @Override + @Nullable public T convert(S source) { return this.conversionService.convert(source, this.targetType); } diff --git a/spring-core/src/main/java/org/springframework/core/convert/support/ArrayToArrayConverter.java b/spring-core/src/main/java/org/springframework/core/convert/support/ArrayToArrayConverter.java index fb5962c585a..fbeba2bfa61 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/support/ArrayToArrayConverter.java +++ b/spring-core/src/main/java/org/springframework/core/convert/support/ArrayToArrayConverter.java @@ -60,6 +60,7 @@ final class ArrayToArrayConverter implements ConditionalGenericConverter { } @Override + @Nullable public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { if (this.conversionService instanceof GenericConversionService) { TypeDescriptor targetElement = targetType.getElementTypeDescriptor(); diff --git a/spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java b/spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java index 08f2dbfa28b..aca727f40c5 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java +++ b/spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java @@ -168,12 +168,14 @@ public class GenericConversionService implements ConfigurableConversionService { @Override @SuppressWarnings("unchecked") + @Nullable public T convert(@Nullable Object source, Class targetType) { Assert.notNull(targetType, "Target type to convert to cannot be null"); return (T) convert(source, TypeDescriptor.forObject(source), TypeDescriptor.valueOf(targetType)); } @Override + @Nullable public Object convert(@Nullable Object source, @Nullable TypeDescriptor sourceType, TypeDescriptor targetType) { Assert.notNull(targetType, "Target type to convert to cannot be null"); if (sourceType == null) { @@ -426,6 +428,7 @@ public class GenericConversionService implements ConfigurableConversionService { } @Override + @Nullable public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { if (source == null) { return convertNullSource(sourceType, targetType); @@ -694,6 +697,7 @@ public class GenericConversionService implements ConfigurableConversionService { } @Override + @Nullable public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { return source; } diff --git a/spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java b/spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java index 28b4fbd1dc9..308ec075921 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java +++ b/spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java @@ -62,6 +62,7 @@ final class MapToMapConverter implements ConditionalGenericConverter { @Override @SuppressWarnings("unchecked") + @Nullable public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { if (source == null) { return null; diff --git a/spring-core/src/main/java/org/springframework/core/convert/support/ObjectToOptionalConverter.java b/spring-core/src/main/java/org/springframework/core/convert/support/ObjectToOptionalConverter.java index c5e30021c3d..b7564bcb618 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/support/ObjectToOptionalConverter.java +++ b/spring-core/src/main/java/org/springframework/core/convert/support/ObjectToOptionalConverter.java @@ -60,7 +60,6 @@ final class ObjectToOptionalConverter implements ConditionalGenericConverter { } @Override - @Nullable public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { if (source == null) { return Optional.empty(); 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 5b2db4a4955..b50b8b8242d 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 @@ -386,6 +386,7 @@ public abstract class AbstractEnvironment implements ConfigurableEnvironment { catch (AccessControlException ex) { return (Map) new ReadOnlySystemAttributesMap() { @Override + @Nullable protected String getSystemAttribute(String attributeName) { try { return System.getenv(attributeName); @@ -426,6 +427,7 @@ public abstract class AbstractEnvironment implements ConfigurableEnvironment { catch (AccessControlException ex) { return (Map) new ReadOnlySystemAttributesMap() { @Override + @Nullable protected String getSystemAttribute(String attributeName) { try { return System.getProperty(attributeName); @@ -524,6 +526,7 @@ public abstract class AbstractEnvironment implements ConfigurableEnvironment { } @Override + @Nullable public String getProperty(String key) { return this.propertyResolver.getProperty(key); } @@ -534,6 +537,7 @@ public abstract class AbstractEnvironment implements ConfigurableEnvironment { } @Override + @Nullable public T getProperty(String key, Class targetType) { return this.propertyResolver.getProperty(key, targetType); } 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 dfec9f14382..62b17613dbb 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 @@ -160,6 +160,7 @@ public abstract class AbstractPropertyResolver implements ConfigurablePropertyRe } @Override + @Nullable public String getProperty(String key) { return getProperty(key, String.class); } 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..c06d7028df8 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 @@ -266,6 +266,7 @@ public abstract class CommandLinePropertySource extends EnumerablePropertySou * #getOptionValues(String)} method. */ @Override + @Nullable public final String getProperty(String name) { if (this.nonOptionArgsPropertyName.equals(name)) { Collection nonOptionArguments = this.getNonOptionArgs(); 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 103f92b1197..f54c0e97a46 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.Nullable; import org.springframework.util.StringUtils; /** @@ -54,6 +55,7 @@ public class CompositePropertySource extends EnumerablePropertySource { @Override + @Nullable public Object getProperty(String name) { for (PropertySource propertySource : this.propertySources) { Object candidate = propertySource.getProperty(name); 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..161802f7fae 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.Nullable; + /** * {@link CommandLinePropertySource} implementation backed by a JOpt {@link OptionSet}. * @@ -94,6 +96,7 @@ public class JOptCommandLinePropertySource extends CommandLinePropertySource getOptionValues(String name) { List argValues = this.source.valuesOf(name); List stringArgValues = new ArrayList<>(); 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..0d1dab096a1 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.Nullable; import org.springframework.util.StringUtils; /** @@ -36,6 +37,7 @@ public class MapPropertySource extends EnumerablePropertySource get(String name) { int index = this.propertySourceList.indexOf(PropertySource.named(name)); return (index != -1 ? this.propertySourceList.get(index) : null); 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 b6275ac6f13..a983fff3ff8 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 @@ -210,6 +210,7 @@ public abstract class PropertySource { * Always returns {@code null}. */ @Override + @Nullable public String getProperty(String name) { return null; } @@ -239,6 +240,7 @@ public abstract class PropertySource { } @Override + @Nullable public String getProperty(String name) { throw new UnsupportedOperationException(USAGE_ERROR); } 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 d2cf0bfea81..92580212c98 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 @@ -57,16 +57,19 @@ public class PropertySourcesPropertyResolver extends AbstractPropertyResolver { } @Override + @Nullable public String getProperty(String key) { return getProperty(key, String.class, true); } @Override + @Nullable public T getProperty(String key, Class targetValueType) { return getProperty(key, targetValueType, true); } @Override + @Nullable protected String getPropertyAsRawString(String key) { return getProperty(key, String.class, false); } 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..c29e5f5a13c 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.Nullable; + /** * {@link CommandLinePropertySource} implementation backed by a simple String array. * @@ -109,6 +111,7 @@ public class SimpleCommandLinePropertySource extends CommandLinePropertySource getOptionValues(String name) { return this.source.getOptionValues(name); } 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 c942d521c28..bcfd91580ae 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 @@ -88,6 +88,7 @@ public class SystemEnvironmentPropertySource extends MapPropertySource { * any underscore/uppercase variant thereof exists in this property source. */ @Override + @Nullable public Object getProperty(String name) { String actualName = resolvePropertyName(name); if (logger.isDebugEnabled() && !name.equals(actualName)) { diff --git a/spring-core/src/main/java/org/springframework/core/io/AbstractResource.java b/spring-core/src/main/java/org/springframework/core/io/AbstractResource.java index 9e42a43e18f..6beef08a30d 100644 --- a/spring-core/src/main/java/org/springframework/core/io/AbstractResource.java +++ b/spring-core/src/main/java/org/springframework/core/io/AbstractResource.java @@ -27,6 +27,7 @@ import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; import org.springframework.core.NestedIOException; +import org.springframework.lang.Nullable; import org.springframework.util.ResourceUtils; /** @@ -202,6 +203,7 @@ public abstract class AbstractResource implements Resource { * assuming that this resource type does not have a filename. */ @Override + @Nullable public String getFilename() { return null; } diff --git a/spring-core/src/main/java/org/springframework/core/io/ClassPathResource.java b/spring-core/src/main/java/org/springframework/core/io/ClassPathResource.java index 2e6be9ddd40..a4384dea9b1 100644 --- a/spring-core/src/main/java/org/springframework/core/io/ClassPathResource.java +++ b/spring-core/src/main/java/org/springframework/core/io/ClassPathResource.java @@ -211,6 +211,7 @@ public class ClassPathResource extends AbstractFileResolvingResource { * @see org.springframework.util.StringUtils#getFilename(String) */ @Override + @Nullable public String getFilename() { return StringUtils.getFilename(this.path); } diff --git a/spring-core/src/main/java/org/springframework/core/io/DefaultResourceLoader.java b/spring-core/src/main/java/org/springframework/core/io/DefaultResourceLoader.java index 4b9febb05f0..cde09fe8e54 100644 --- a/spring-core/src/main/java/org/springframework/core/io/DefaultResourceLoader.java +++ b/spring-core/src/main/java/org/springframework/core/io/DefaultResourceLoader.java @@ -91,6 +91,7 @@ public class DefaultResourceLoader implements ResourceLoader { * @see ClassPathResource */ @Override + @Nullable public ClassLoader getClassLoader() { return (this.classLoader != null ? this.classLoader : ClassUtils.getDefaultClassLoader()); } diff --git a/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java b/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java index 128f532c7f2..1500b179d37 100644 --- a/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java +++ b/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java @@ -244,6 +244,7 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol } @Override + @Nullable public ClassLoader getClassLoader() { return getResourceLoader().getClassLoader(); } diff --git a/spring-core/src/main/java/org/springframework/core/type/StandardAnnotationMetadata.java b/spring-core/src/main/java/org/springframework/core/type/StandardAnnotationMetadata.java index 397d17abdf3..46d28f407c0 100644 --- a/spring-core/src/main/java/org/springframework/core/type/StandardAnnotationMetadata.java +++ b/spring-core/src/main/java/org/springframework/core/type/StandardAnnotationMetadata.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.Set; import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.lang.Nullable; import org.springframework.util.MultiValueMap; /** @@ -115,17 +116,20 @@ public class StandardAnnotationMetadata extends StandardClassMetadata implements } @Override + @Nullable public Map getAnnotationAttributes(String annotationName, boolean classValuesAsString) { return (this.annotations.length > 0 ? AnnotatedElementUtils.getMergedAnnotationAttributes( getIntrospectedClass(), annotationName, classValuesAsString, this.nestedAnnotationsAsMap) : null); } @Override + @Nullable public MultiValueMap getAllAnnotationAttributes(String annotationName) { return getAllAnnotationAttributes(annotationName, false); } @Override + @Nullable public MultiValueMap getAllAnnotationAttributes(String annotationName, boolean classValuesAsString) { return (this.annotations.length > 0 ? AnnotatedElementUtils.getAllAnnotationAttributes( getIntrospectedClass(), annotationName, classValuesAsString, this.nestedAnnotationsAsMap) : null); diff --git a/spring-core/src/main/java/org/springframework/core/type/StandardClassMetadata.java b/spring-core/src/main/java/org/springframework/core/type/StandardClassMetadata.java index 9330e29b1a2..9a0eee891e4 100644 --- a/spring-core/src/main/java/org/springframework/core/type/StandardClassMetadata.java +++ b/spring-core/src/main/java/org/springframework/core/type/StandardClassMetadata.java @@ -19,6 +19,7 @@ package org.springframework.core.type; import java.lang.reflect.Modifier; import java.util.LinkedHashSet; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -93,6 +94,7 @@ public class StandardClassMetadata implements ClassMetadata { } @Override + @Nullable public String getEnclosingClassName() { Class enclosingClass = this.introspectedClass.getEnclosingClass(); return (enclosingClass != null ? enclosingClass.getName() : null); @@ -104,6 +106,7 @@ public class StandardClassMetadata implements ClassMetadata { } @Override + @Nullable public String getSuperClassName() { Class superClass = this.introspectedClass.getSuperclass(); return (superClass != null ? superClass.getName() : null); diff --git a/spring-core/src/main/java/org/springframework/core/type/StandardMethodMetadata.java b/spring-core/src/main/java/org/springframework/core/type/StandardMethodMetadata.java index 485dd3b6b2d..d745d43a012 100644 --- a/spring-core/src/main/java/org/springframework/core/type/StandardMethodMetadata.java +++ b/spring-core/src/main/java/org/springframework/core/type/StandardMethodMetadata.java @@ -21,6 +21,7 @@ import java.lang.reflect.Modifier; import java.util.Map; import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.MultiValueMap; @@ -115,22 +116,26 @@ public class StandardMethodMetadata implements MethodMetadata { } @Override + @Nullable public Map getAnnotationAttributes(String annotationName) { return getAnnotationAttributes(annotationName, false); } @Override + @Nullable public Map getAnnotationAttributes(String annotationName, boolean classValuesAsString) { return AnnotatedElementUtils.getMergedAnnotationAttributes(this.introspectedMethod, annotationName, classValuesAsString, this.nestedAnnotationsAsMap); } @Override + @Nullable public MultiValueMap getAllAnnotationAttributes(String annotationName) { return getAllAnnotationAttributes(annotationName, false); } @Override + @Nullable public MultiValueMap getAllAnnotationAttributes(String annotationName, boolean classValuesAsString) { return AnnotatedElementUtils.getAllAnnotationAttributes(this.introspectedMethod, annotationName, classValuesAsString, this.nestedAnnotationsAsMap); diff --git a/spring-core/src/main/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitor.java b/spring-core/src/main/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitor.java index 1158c0dce63..b66a8265414 100644 --- a/spring-core/src/main/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitor.java +++ b/spring-core/src/main/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitor.java @@ -124,11 +124,13 @@ public class AnnotationMetadataReadingVisitor extends ClassMetadataReadingVisito } @Override + @Nullable public AnnotationAttributes getAnnotationAttributes(String annotationName) { return getAnnotationAttributes(annotationName, false); } @Override + @Nullable public AnnotationAttributes getAnnotationAttributes(String annotationName, boolean classValuesAsString) { AnnotationAttributes raw = AnnotationReadingVisitorUtils.getMergedAnnotationAttributes( this.attributesMap, this.metaAnnotationMap, annotationName); @@ -140,11 +142,13 @@ public class AnnotationMetadataReadingVisitor extends ClassMetadataReadingVisito } @Override + @Nullable public MultiValueMap getAllAnnotationAttributes(String annotationName) { return getAllAnnotationAttributes(annotationName, false); } @Override + @Nullable public MultiValueMap getAllAnnotationAttributes(String annotationName, boolean classValuesAsString) { MultiValueMap allAttributes = new LinkedMultiValueMap<>(); List attributes = this.attributesMap.get(annotationName); diff --git a/spring-core/src/main/java/org/springframework/core/type/classreading/MethodMetadataReadingVisitor.java b/spring-core/src/main/java/org/springframework/core/type/classreading/MethodMetadataReadingVisitor.java index fdf8f213de0..98540888291 100644 --- a/spring-core/src/main/java/org/springframework/core/type/classreading/MethodMetadataReadingVisitor.java +++ b/spring-core/src/main/java/org/springframework/core/type/classreading/MethodMetadataReadingVisitor.java @@ -116,11 +116,13 @@ public class MethodMetadataReadingVisitor extends MethodVisitor implements Metho } @Override + @Nullable public AnnotationAttributes getAnnotationAttributes(String annotationName) { return getAnnotationAttributes(annotationName, false); } @Override + @Nullable public AnnotationAttributes getAnnotationAttributes(String annotationName, boolean classValuesAsString) { AnnotationAttributes raw = AnnotationReadingVisitorUtils.getMergedAnnotationAttributes( this.attributesMap, this.metaAnnotationMap, annotationName); @@ -132,11 +134,13 @@ public class MethodMetadataReadingVisitor extends MethodVisitor implements Metho } @Override + @Nullable public MultiValueMap getAllAnnotationAttributes(String annotationName) { return getAllAnnotationAttributes(annotationName, false); } @Override + @Nullable public MultiValueMap getAllAnnotationAttributes(String annotationName, boolean classValuesAsString) { if (!this.attributesMap.containsKey(annotationName)) { return null; diff --git a/spring-core/src/main/java/org/springframework/core/type/filter/AnnotationTypeFilter.java b/spring-core/src/main/java/org/springframework/core/type/filter/AnnotationTypeFilter.java index 74fd6fab2a1..7416f22662d 100644 --- a/spring-core/src/main/java/org/springframework/core/type/filter/AnnotationTypeFilter.java +++ b/spring-core/src/main/java/org/springframework/core/type/filter/AnnotationTypeFilter.java @@ -94,11 +94,13 @@ public class AnnotationTypeFilter extends AbstractTypeHierarchyTraversingFilter } @Override + @Nullable protected Boolean matchSuperClass(String superClassName) { return hasAnnotation(superClassName); } @Override + @Nullable protected Boolean matchInterface(String interfaceName) { return hasAnnotation(interfaceName); } diff --git a/spring-core/src/main/java/org/springframework/core/type/filter/AssignableTypeFilter.java b/spring-core/src/main/java/org/springframework/core/type/filter/AssignableTypeFilter.java index 79665b8d3e3..1e5b6f6e194 100644 --- a/spring-core/src/main/java/org/springframework/core/type/filter/AssignableTypeFilter.java +++ b/spring-core/src/main/java/org/springframework/core/type/filter/AssignableTypeFilter.java @@ -55,11 +55,13 @@ public class AssignableTypeFilter extends AbstractTypeHierarchyTraversingFilter } @Override + @Nullable protected Boolean matchSuperClass(String superClassName) { return matchTargetType(superClassName); } @Override + @Nullable protected Boolean matchInterface(String interfaceName) { return matchTargetType(interfaceName); } diff --git a/spring-core/src/main/java/org/springframework/lang/Nullable.java b/spring-core/src/main/java/org/springframework/lang/Nullable.java index 547b3cfd0ab..a1cb932b4e9 100644 --- a/spring-core/src/main/java/org/springframework/lang/Nullable.java +++ b/spring-core/src/main/java/org/springframework/lang/Nullable.java @@ -29,8 +29,9 @@ import javax.annotation.meta.When; * A common Spring annotation to declare that the annotated parameter, * return value or field could be {@code null} under some circumstances. * - *

Should be used at parameters and return values level in association - * with {@link NonNullApi} package-level annotations. + *

Should be used at parameters, return values and optionally field level in association + * with {@link NonNullApi} package-level annotations. Methods overrides should repeat parent + * parameter or return value {@code @Nullable} annotations unless they behave differently. * *

Leverages JSR-305 meta-annotations to indicate its semantics to * common tools with JSR-305 support. diff --git a/spring-core/src/main/java/org/springframework/util/CollectionUtils.java b/spring-core/src/main/java/org/springframework/util/CollectionUtils.java index 12718ac3006..1cdfa35b549 100644 --- a/spring-core/src/main/java/org/springframework/util/CollectionUtils.java +++ b/spring-core/src/main/java/org/springframework/util/CollectionUtils.java @@ -405,6 +405,7 @@ public abstract class CollectionUtils { } @Override + @Nullable public V getFirst(K key) { List values = this.map.get(key); return (values != null ? values.get(0) : null); diff --git a/spring-core/src/main/java/org/springframework/util/ConcurrentReferenceHashMap.java b/spring-core/src/main/java/org/springframework/util/ConcurrentReferenceHashMap.java index 598b49325cb..03f9f241fc0 100644 --- a/spring-core/src/main/java/org/springframework/util/ConcurrentReferenceHashMap.java +++ b/spring-core/src/main/java/org/springframework/util/ConcurrentReferenceHashMap.java @@ -1005,6 +1005,7 @@ public class ConcurrentReferenceHashMap extends AbstractMap implemen } @Override + @Nullable public Reference getNext() { return this.nextReference; } @@ -1041,6 +1042,7 @@ public class ConcurrentReferenceHashMap extends AbstractMap implemen } @Override + @Nullable public Reference getNext() { return this.nextReference; } diff --git a/spring-core/src/main/java/org/springframework/util/LinkedMultiValueMap.java b/spring-core/src/main/java/org/springframework/util/LinkedMultiValueMap.java index 9c9187e5594..5c20bf35f5b 100644 --- a/spring-core/src/main/java/org/springframework/util/LinkedMultiValueMap.java +++ b/spring-core/src/main/java/org/springframework/util/LinkedMultiValueMap.java @@ -76,6 +76,7 @@ public class LinkedMultiValueMap implements MultiValueMap, Serializa // MultiValueMap implementation @Override + @Nullable public V getFirst(K key) { List values = this.targetMap.get(key); return (values != null ? values.get(0) : null); diff --git a/spring-core/src/main/java/org/springframework/util/SystemPropertyUtils.java b/spring-core/src/main/java/org/springframework/util/SystemPropertyUtils.java index 23ddd15c81a..269da7d5a64 100644 --- a/spring-core/src/main/java/org/springframework/util/SystemPropertyUtils.java +++ b/spring-core/src/main/java/org/springframework/util/SystemPropertyUtils.java @@ -16,6 +16,8 @@ package org.springframework.util; +import org.springframework.lang.Nullable; + /** * Helper class for resolving placeholders in texts. Usually applied to file paths. * @@ -94,6 +96,7 @@ public abstract class SystemPropertyUtils { } @Override + @Nullable public String resolvePlaceholder(String placeholderName) { try { String propVal = System.getProperty(placeholderName); diff --git a/spring-expression/src/main/java/org/springframework/expression/common/CompositeStringExpression.java b/spring-expression/src/main/java/org/springframework/expression/common/CompositeStringExpression.java index 7eab31a4452..8a44241881e 100644 --- a/spring-expression/src/main/java/org/springframework/expression/common/CompositeStringExpression.java +++ b/spring-expression/src/main/java/org/springframework/expression/common/CompositeStringExpression.java @@ -76,6 +76,7 @@ public class CompositeStringExpression implements Expression { } @Override + @Nullable public T getValue(@Nullable Class expectedResultType) throws EvaluationException { Object value = getValue(); return ExpressionUtils.convertTypedValue(null, new TypedValue(value), expectedResultType); @@ -94,6 +95,7 @@ public class CompositeStringExpression implements Expression { } @Override + @Nullable public T getValue(Object rootObject, @Nullable Class desiredResultType) throws EvaluationException { Object value = getValue(rootObject); return ExpressionUtils.convertTypedValue(null, new TypedValue(value), desiredResultType); @@ -112,6 +114,7 @@ public class CompositeStringExpression implements Expression { } @Override + @Nullable public T getValue(EvaluationContext context, @Nullable Class expectedResultType) throws EvaluationException { @@ -132,6 +135,7 @@ public class CompositeStringExpression implements Expression { } @Override + @Nullable public T getValue(EvaluationContext context, Object rootObject, @Nullable Class desiredResultType) throws EvaluationException { diff --git a/spring-expression/src/main/java/org/springframework/expression/common/LiteralExpression.java b/spring-expression/src/main/java/org/springframework/expression/common/LiteralExpression.java index abbe36e33dc..9fb60b340f7 100644 --- a/spring-expression/src/main/java/org/springframework/expression/common/LiteralExpression.java +++ b/spring-expression/src/main/java/org/springframework/expression/common/LiteralExpression.java @@ -60,6 +60,7 @@ public class LiteralExpression implements Expression { } @Override + @Nullable public T getValue(@Nullable Class expectedResultType) throws EvaluationException { Object value = getValue(); return ExpressionUtils.convertTypedValue(null, new TypedValue(value), expectedResultType); @@ -71,6 +72,7 @@ public class LiteralExpression implements Expression { } @Override + @Nullable public T getValue(Object rootObject, @Nullable Class desiredResultType) throws EvaluationException { Object value = getValue(rootObject); return ExpressionUtils.convertTypedValue(null, new TypedValue(value), desiredResultType); @@ -82,6 +84,7 @@ public class LiteralExpression implements Expression { } @Override + @Nullable public T getValue(EvaluationContext context, @Nullable Class expectedResultType) throws EvaluationException { @@ -95,6 +98,7 @@ public class LiteralExpression implements Expression { } @Override + @Nullable public T getValue(EvaluationContext context, Object rootObject, @Nullable Class desiredResultType) throws EvaluationException { diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java index 63217330dd2..745bab0006a 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java @@ -104,6 +104,7 @@ public abstract class SpelNodeImpl implements SpelNode, Opcodes { } @Override + @Nullable public final Object getValue(ExpressionState expressionState) throws EvaluationException { return getValueInternal(expressionState).getValue(); } @@ -136,6 +137,7 @@ public abstract class SpelNodeImpl implements SpelNode, Opcodes { } @Override + @Nullable public Class getObjectClass(@Nullable Object obj) { if (obj == null) { return null; diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java b/spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java index ae895ce2883..fbb6fb76978 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java @@ -114,6 +114,7 @@ public class SpelExpression implements Expression { } @Override + @Nullable public Object getValue() throws EvaluationException { if (this.compiledAst != null) { try { @@ -143,6 +144,7 @@ public class SpelExpression implements Expression { @SuppressWarnings("unchecked") @Override + @Nullable public T getValue(@Nullable Class expectedResultType) throws EvaluationException { if (this.compiledAst != null) { try { @@ -179,6 +181,7 @@ public class SpelExpression implements Expression { } @Override + @Nullable public Object getValue(Object rootObject) throws EvaluationException { if (this.compiledAst != null) { try { @@ -206,6 +209,7 @@ public class SpelExpression implements Expression { @SuppressWarnings("unchecked") @Override + @Nullable public T getValue(Object rootObject, @Nullable Class expectedResultType) throws EvaluationException { if (this.compiledAst != null) { try { @@ -240,6 +244,7 @@ public class SpelExpression implements Expression { } @Override + @Nullable public Object getValue(EvaluationContext context) throws EvaluationException { Assert.notNull(context, "EvaluationContext is required"); @@ -269,6 +274,7 @@ public class SpelExpression implements Expression { @SuppressWarnings("unchecked") @Override + @Nullable public T getValue(EvaluationContext context, @Nullable Class expectedResultType) throws EvaluationException { Assert.notNull(context, "EvaluationContext is required"); @@ -303,6 +309,7 @@ public class SpelExpression implements Expression { } @Override + @Nullable public Object getValue(EvaluationContext context, Object rootObject) throws EvaluationException { Assert.notNull(context, "EvaluationContext is required"); @@ -331,6 +338,7 @@ public class SpelExpression implements Expression { @SuppressWarnings("unchecked") @Override + @Nullable public T getValue(EvaluationContext context, Object rootObject, @Nullable Class expectedResultType) throws EvaluationException { @@ -366,16 +374,19 @@ public class SpelExpression implements Expression { } @Override + @Nullable public Class getValueType() throws EvaluationException { return getValueType(getEvaluationContext()); } @Override + @Nullable public Class getValueType(Object rootObject) throws EvaluationException { return getValueType(getEvaluationContext(), rootObject); } @Override + @Nullable public Class getValueType(EvaluationContext context) throws EvaluationException { Assert.notNull(context, "EvaluationContext is required"); ExpressionState expressionState = new ExpressionState(context, this.configuration); @@ -384,6 +395,7 @@ public class SpelExpression implements Expression { } @Override + @Nullable public Class getValueType(EvaluationContext context, Object rootObject) throws EvaluationException { ExpressionState expressionState = new ExpressionState(context, toTypedValue(rootObject), this.configuration); TypeDescriptor typeDescriptor = this.ast.getValueInternal(expressionState).getTypeDescriptor(); @@ -391,11 +403,13 @@ public class SpelExpression implements Expression { } @Override + @Nullable public TypeDescriptor getValueTypeDescriptor() throws EvaluationException { return getValueTypeDescriptor(getEvaluationContext()); } @Override + @Nullable public TypeDescriptor getValueTypeDescriptor(Object rootObject) throws EvaluationException { ExpressionState expressionState = new ExpressionState(getEvaluationContext(), toTypedValue(rootObject), this.configuration); @@ -403,6 +417,7 @@ public class SpelExpression implements Expression { } @Override + @Nullable public TypeDescriptor getValueTypeDescriptor(EvaluationContext context) throws EvaluationException { Assert.notNull(context, "EvaluationContext is required"); ExpressionState expressionState = new ExpressionState(context, this.configuration); @@ -410,6 +425,7 @@ public class SpelExpression implements Expression { } @Override + @Nullable public TypeDescriptor getValueTypeDescriptor(EvaluationContext context, Object rootObject) throws EvaluationException { diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java index 9c0cc004aab..d75b21e9554 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java @@ -29,6 +29,7 @@ import org.springframework.expression.ConstructorResolver; import org.springframework.expression.EvaluationContext; import org.springframework.expression.EvaluationException; import org.springframework.expression.TypeConverter; +import org.springframework.lang.Nullable; /** * A constructor resolver that uses reflection to locate the constructor that should be invoked. @@ -49,6 +50,7 @@ public class ReflectiveConstructorResolver implements ConstructorResolver { * */ @Override + @Nullable public ConstructorExecutor resolve(EvaluationContext context, String typeName, List argumentTypes) throws AccessException { diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java index 42c780354db..09cb807f801 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java @@ -103,6 +103,7 @@ public class ReflectiveMethodResolver implements MethodResolver { * */ @Override + @Nullable public MethodExecutor resolve(EvaluationContext context, Object targetObject, String name, List argumentTypes) throws AccessException { diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java index 81dc0bf12bc..9eb242c0936 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java @@ -84,6 +84,7 @@ public class ReflectivePropertyAccessor implements PropertyAccessor { * Returns {@code null} which means this is a general purpose accessor. */ @Override + @Nullable public Class[] getSpecificTargetClasses() { return null; } @@ -590,6 +591,7 @@ public class ReflectivePropertyAccessor implements PropertyAccessor { } @Override + @Nullable public Class[] getSpecificTargetClasses() { throw new UnsupportedOperationException("Should not be called on an OptimalPropertyAccessor"); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java index 9786eac55b2..ccb72302b5f 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java @@ -222,6 +222,7 @@ public class StandardEvaluationContext implements EvaluationContext { } @Override + @Nullable public Object lookupVariable(String name) { return this.variables.get(name); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeConverter.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeConverter.java index 6bacbd6b133..fce9643b650 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeConverter.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeConverter.java @@ -63,6 +63,7 @@ public class StandardTypeConverter implements TypeConverter { } @Override + @Nullable public Object convertValue(@Nullable Object value, @Nullable TypeDescriptor sourceType, TypeDescriptor targetType) { try { return this.conversionService.convert(value, sourceType, targetType); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcOperations.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcOperations.java index 8118606b02f..465777b5e62 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcOperations.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcOperations.java @@ -147,6 +147,7 @@ public interface JdbcOperations { * @throws DataAccessException if there is any problem executing the query * @see #queryForObject(String, Object[], RowMapper) */ + @Nullable T queryForObject(String sql, RowMapper rowMapper) throws DataAccessException; /** @@ -531,6 +532,7 @@ public interface JdbcOperations { * return exactly one row * @throws DataAccessException if the query fails */ + @Nullable T queryForObject(String sql, Object[] args, int[] argTypes, RowMapper rowMapper) throws DataAccessException; @@ -549,6 +551,7 @@ public interface JdbcOperations { * return exactly one row * @throws DataAccessException if the query fails */ + @Nullable T queryForObject(String sql, Object[] args, RowMapper rowMapper) throws DataAccessException; /** @@ -566,6 +569,7 @@ public interface JdbcOperations { * return exactly one row * @throws DataAccessException if the query fails */ + @Nullable T queryForObject(String sql, RowMapper rowMapper, @Nullable Object... args) throws DataAccessException; /** diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java index b6d58a8b39e..bb0ee338953 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java @@ -316,6 +316,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { //------------------------------------------------------------------------- @Override + @Nullable public T execute(ConnectionCallback action) throws DataAccessException { Assert.notNull(action, "Callback object must not be null"); @@ -361,6 +362,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { //------------------------------------------------------------------------- @Override + @Nullable public T execute(StatementCallback action) throws DataAccessException { Assert.notNull(action, "Callback object must not be null"); @@ -395,6 +397,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } class ExecuteStatementCallback implements StatementCallback, SqlProvider { @Override + @Nullable public Object doInStatement(Statement stmt) throws SQLException { stmt.execute(sql); return null; @@ -408,6 +411,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } @Override + @Nullable public T query(final String sql, final ResultSetExtractor rse) throws DataAccessException { Assert.notNull(sql, "SQL must not be null"); Assert.notNull(rse, "ResultSetExtractor must not be null"); @@ -416,6 +420,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } class QueryStatementCallback implements StatementCallback, SqlProvider { @Override + @Nullable public T doInStatement(Statement stmt) throws SQLException { ResultSet rs = null; try { @@ -452,12 +457,14 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } @Override + @Nullable public T queryForObject(String sql, RowMapper rowMapper) throws DataAccessException { List results = query(sql, rowMapper); return DataAccessUtils.requiredSingleResult(results); } @Override + @Nullable public T queryForObject(String sql, Class requiredType) throws DataAccessException { return queryForObject(sql, getSingleColumnRowMapper(requiredType)); } @@ -561,6 +568,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } @Override + @Nullable public String getSql() { return this.currSql; } @@ -577,6 +585,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { //------------------------------------------------------------------------- @Override + @Nullable public T execute(PreparedStatementCreator psc, PreparedStatementCallback action) throws DataAccessException { @@ -619,6 +628,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } @Override + @Nullable public T execute(String sql, PreparedStatementCallback action) throws DataAccessException { return execute(new SimplePreparedStatementCreator(sql), action); } @@ -645,6 +655,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { return execute(psc, new PreparedStatementCallback() { @Override + @Nullable public T doInPreparedStatement(PreparedStatement ps) throws SQLException { ResultSet rs = null; try { @@ -665,26 +676,31 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } @Override + @Nullable public T query(PreparedStatementCreator psc, ResultSetExtractor rse) throws DataAccessException { return query(psc, null, rse); } @Override + @Nullable public T query(String sql, @Nullable PreparedStatementSetter pss, ResultSetExtractor rse) throws DataAccessException { return query(new SimplePreparedStatementCreator(sql), pss, rse); } @Override + @Nullable public T query(String sql, Object[] args, int[] argTypes, ResultSetExtractor rse) throws DataAccessException { return query(sql, newArgTypePreparedStatementSetter(args, argTypes), rse); } @Override + @Nullable public T query(String sql, @Nullable Object[] args, ResultSetExtractor rse) throws DataAccessException { return query(sql, newArgPreparedStatementSetter(args), rse); } @Override + @Nullable public T query(String sql, ResultSetExtractor rse, @Nullable Object... args) throws DataAccessException { return query(sql, newArgPreparedStatementSetter(args), rse); } @@ -740,6 +756,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } @Override + @Nullable public T queryForObject(String sql, Object[] args, int[] argTypes, RowMapper rowMapper) throws DataAccessException { @@ -748,18 +765,21 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } @Override + @Nullable public T queryForObject(String sql, @Nullable Object[] args, RowMapper rowMapper) throws DataAccessException { List results = query(sql, args, new RowMapperResultSetExtractor<>(rowMapper, 1)); return DataAccessUtils.requiredSingleResult(results); } @Override + @Nullable public T queryForObject(String sql, RowMapper rowMapper, @Nullable Object... args) throws DataAccessException { List results = query(sql, args, new RowMapperResultSetExtractor<>(rowMapper, 1)); return DataAccessUtils.requiredSingleResult(results); } @Override + @Nullable public T queryForObject(String sql, Object[] args, int[] argTypes, Class requiredType) throws DataAccessException { @@ -1010,6 +1030,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { //------------------------------------------------------------------------- @Override + @Nullable public T execute(CallableStatementCreator csc, CallableStatementCallback action) throws DataAccessException { @@ -1052,6 +1073,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } @Override + @Nullable public T execute(String callString, CallableStatementCallback action) throws DataAccessException { return execute(new SimpleCallableStatementCreator(callString), action); } @@ -1523,6 +1545,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { } @Override + @Nullable public Object extractData(ResultSet rs) throws SQLException { while (rs.next()) { this.rch.processRow(rs); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/ParameterMapper.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/ParameterMapper.java index 0c7833ad8cf..8198084ee22 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/ParameterMapper.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/ParameterMapper.java @@ -20,8 +20,6 @@ import java.sql.Connection; import java.sql.SQLException; import java.util.Map; -import org.springframework.lang.Nullable; - /** * Implement this interface when parameters need to be customized based * on the connection. We might need to do this to make use of proprietary @@ -45,7 +43,6 @@ public interface ParameterMapper { * parameter values (that is, there's no need to catch SQLException) * @return Map of input parameters, keyed by name (never {@code null}) */ - @Nullable Map createMap(Connection con) throws SQLException; } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/SingleColumnRowMapper.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/SingleColumnRowMapper.java index b49a01c1094..2b6b66a74b9 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/SingleColumnRowMapper.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/SingleColumnRowMapper.java @@ -86,6 +86,7 @@ public class SingleColumnRowMapper implements RowMapper { */ @Override @SuppressWarnings("unchecked") + @Nullable public T mapRow(ResultSet rs, int rowNum) throws SQLException { // Validate column count. ResultSetMetaData rsmd = rs.getMetaData(); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/Db2CallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/Db2CallMetaDataProvider.java index 8306c952f7b..ca4a4bd1f35 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/Db2CallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/Db2CallMetaDataProvider.java @@ -65,6 +65,7 @@ public class Db2CallMetaDataProvider extends GenericCallMetaDataProvider { } @Override + @Nullable public String metaDataSchemaNameToUse(@Nullable String schemaName) { if (schemaName != null) { return super.metaDataSchemaNameToUse(schemaName); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyCallMetaDataProvider.java index 4de537527de..ceed04db89f 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyCallMetaDataProvider.java @@ -36,6 +36,7 @@ public class DerbyCallMetaDataProvider extends GenericCallMetaDataProvider { } @Override + @Nullable public String metaDataSchemaNameToUse(@Nullable String schemaName) { if (schemaName != null) { return super.metaDataSchemaNameToUse(schemaName); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java index 2e1bbca6c00..2592525cd51 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java @@ -119,6 +119,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider { } @Override + @Nullable public String procedureNameToUse(@Nullable String procedureName) { if (procedureName == null) { return null; @@ -135,6 +136,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider { } @Override + @Nullable public String catalogNameToUse(@Nullable String catalogName) { if (catalogName == null) { return null; @@ -151,6 +153,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider { } @Override + @Nullable public String schemaNameToUse(@Nullable String schemaName) { if (schemaName == null) { return null; @@ -167,6 +170,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider { } @Override + @Nullable public String metaDataCatalogNameToUse(@Nullable String catalogName) { if (isSupportsCatalogsInProcedureCalls()) { return catalogNameToUse(catalogName); @@ -177,6 +181,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider { } @Override + @Nullable public String metaDataSchemaNameToUse(@Nullable String schemaName) { if (isSupportsSchemasInProcedureCalls()) { return schemaNameToUse(schemaName); @@ -187,6 +192,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider { } @Override + @Nullable public String parameterNameToUse(@Nullable String parameterName) { if (parameterName == null) { return null; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java index e00aa84e106..f72d7fd00eb 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java @@ -124,6 +124,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { } @Override + @Nullable public String getSimpleQueryForGetGeneratedKey(String tableName, String keyColumnName) { return null; } @@ -222,6 +223,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { } @Override + @Nullable public String tableNameToUse(@Nullable String tableName) { if (tableName == null) { return null; @@ -238,6 +240,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { } @Override + @Nullable public String catalogNameToUse(@Nullable String catalogName) { if (catalogName == null) { return null; @@ -254,6 +257,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { } @Override + @Nullable public String schemaNameToUse(@Nullable String schemaName) { if (schemaName == null) { return null; @@ -270,11 +274,13 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { } @Override + @Nullable public String metaDataCatalogNameToUse(@Nullable String catalogName) { return catalogNameToUse(catalogName); } @Override + @Nullable public String metaDataSchemaNameToUse(@Nullable String schemaName) { if (schemaName == null) { return schemaNameToUse(getDefaultSchema()); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/OracleCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/OracleCallMetaDataProvider.java index 78cec6c5a71..5a6b5d277ac 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/OracleCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/OracleCallMetaDataProvider.java @@ -58,12 +58,14 @@ public class OracleCallMetaDataProvider extends GenericCallMetaDataProvider { } @Override + @Nullable public String metaDataCatalogNameToUse(@Nullable String catalogName) { // Oracle uses catalog name for package name or an empty string if no package return (catalogName == null ? "" : catalogNameToUse(catalogName)); } @Override + @Nullable public String metaDataSchemaNameToUse(@Nullable String schemaName) { // Use current user schema if no schema specified return (schemaName == null ? getUserName() : super.metaDataSchemaNameToUse(schemaName)); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/OracleTableMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/OracleTableMetaDataProvider.java index 6f20d85c736..0cd2419f949 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/OracleTableMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/OracleTableMetaDataProvider.java @@ -95,6 +95,7 @@ public class OracleTableMetaDataProvider extends GenericTableMetaDataProvider { } @Override + @Nullable protected String getDefaultSchema() { if (this.defaultSchema != null) { return defaultSchema; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/PostgresCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/PostgresCallMetaDataProvider.java index 0388f795152..b87f98346de 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/PostgresCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/PostgresCallMetaDataProvider.java @@ -58,6 +58,7 @@ public class PostgresCallMetaDataProvider extends GenericCallMetaDataProvider { } @Override + @Nullable public String metaDataSchemaNameToUse(@Nullable String schemaName) { // Use public schema if no schema specified return (schemaName == null ? "public" : super.metaDataSchemaNameToUse(schemaName)); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/SqlServerCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/SqlServerCallMetaDataProvider.java index e9b2dde324c..67cae69dd31 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/SqlServerCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/SqlServerCallMetaDataProvider.java @@ -41,6 +41,7 @@ public class SqlServerCallMetaDataProvider extends GenericCallMetaDataProvider { @Override + @Nullable public String parameterNameToUse(@Nullable String parameterName) { if (parameterName == null) { return null; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/SybaseCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/SybaseCallMetaDataProvider.java index 0c5c0a1acb8..4f5ab456386 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/SybaseCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/SybaseCallMetaDataProvider.java @@ -41,6 +41,7 @@ public class SybaseCallMetaDataProvider extends GenericCallMetaDataProvider { @Override + @Nullable public String parameterNameToUse(@Nullable String parameterName) { if (parameterName == null) { return null; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/AbstractSqlParameterSource.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/AbstractSqlParameterSource.java index 626cfb5f078..34eaa7fd1e6 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/AbstractSqlParameterSource.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/AbstractSqlParameterSource.java @@ -19,6 +19,7 @@ package org.springframework.jdbc.core.namedparam; import java.util.HashMap; import java.util.Map; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -74,6 +75,7 @@ public abstract class AbstractSqlParameterSource implements SqlParameterSource { * or {@code null} if not registered */ @Override + @Nullable public String getTypeName(String paramName) { Assert.notNull(paramName, "Parameter name must not be null"); return this.typeNames.get(paramName); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/BeanPropertySqlParameterSource.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/BeanPropertySqlParameterSource.java index 5c3bc9ad5bf..bd345c9e71c 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/BeanPropertySqlParameterSource.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/BeanPropertySqlParameterSource.java @@ -63,6 +63,7 @@ public class BeanPropertySqlParameterSource extends AbstractSqlParameterSource { } @Override + @Nullable public Object getValue(String paramName) throws IllegalArgumentException { try { return this.beanWrapper.getPropertyValue(paramName); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/EmptySqlParameterSource.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/EmptySqlParameterSource.java index e90d4085954..7a25fd0d3c4 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/EmptySqlParameterSource.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/EmptySqlParameterSource.java @@ -16,6 +16,8 @@ package org.springframework.jdbc.core.namedparam; +import org.springframework.lang.Nullable; + /** * A simple empty implementation of the {@link SqlParameterSource} interface. * @@ -36,6 +38,7 @@ public class EmptySqlParameterSource implements SqlParameterSource { } @Override + @Nullable public Object getValue(String paramName) throws IllegalArgumentException { throw new IllegalArgumentException("This SqlParameterSource is empty"); } @@ -46,6 +49,7 @@ public class EmptySqlParameterSource implements SqlParameterSource { } @Override + @Nullable public String getTypeName(String paramName) { return null; } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/MapSqlParameterSource.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/MapSqlParameterSource.java index a411557bc80..29300163f72 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/MapSqlParameterSource.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/MapSqlParameterSource.java @@ -155,6 +155,7 @@ public class MapSqlParameterSource extends AbstractSqlParameterSource { } @Override + @Nullable public Object getValue(String paramName) { if (!hasValue(paramName)) { throw new IllegalArgumentException("No value registered for key '" + paramName + "'"); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcOperations.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcOperations.java index afd50732be7..176aed75135 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcOperations.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcOperations.java @@ -239,6 +239,7 @@ public interface NamedParameterJdbcOperations { * one column in that row * @throws org.springframework.dao.DataAccessException if the query fails */ + @Nullable T queryForObject(String sql, SqlParameterSource paramSource, RowMapper rowMapper) throws DataAccessException; @@ -256,6 +257,7 @@ public interface NamedParameterJdbcOperations { * one column in that row * @throws org.springframework.dao.DataAccessException if the query fails */ + @Nullable T queryForObject(String sql, Map paramMap, RowMapper rowMapper) throws DataAccessException; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java index f2b7c346d21..f66cc650331 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java @@ -130,6 +130,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations @Override + @Nullable public T execute(String sql, SqlParameterSource paramSource, PreparedStatementCallback action) throws DataAccessException { @@ -137,6 +138,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations } @Override + @Nullable public T execute(String sql, Map paramMap, PreparedStatementCallback action) throws DataAccessException { @@ -144,11 +146,13 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations } @Override + @Nullable public T execute(String sql, PreparedStatementCallback action) throws DataAccessException { return execute(sql, EmptySqlParameterSource.INSTANCE, action); } @Override + @Nullable public T query(String sql, SqlParameterSource paramSource, ResultSetExtractor rse) throws DataAccessException { @@ -156,6 +160,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations } @Override + @Nullable public T query(String sql, Map paramMap, ResultSetExtractor rse) throws DataAccessException { @@ -163,6 +168,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations } @Override + @Nullable public T query(String sql, ResultSetExtractor rse) throws DataAccessException { return query(sql, EmptySqlParameterSource.INSTANCE, rse); } @@ -206,6 +212,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations } @Override + @Nullable public T queryForObject(String sql, SqlParameterSource paramSource, RowMapper rowMapper) throws DataAccessException { @@ -214,6 +221,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations } @Override + @Nullable public T queryForObject(String sql, Map paramMap, RowMapperrowMapper) throws DataAccessException { @@ -221,6 +229,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations } @Override + @Nullable public T queryForObject(String sql, SqlParameterSource paramSource, Class requiredType) throws DataAccessException { @@ -228,6 +237,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations } @Override + @Nullable public T queryForObject(String sql, Map paramMap, Class requiredType) throws DataAccessException { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobStreamingResultSetExtractor.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobStreamingResultSetExtractor.java index 496bbdbfbe9..3883be19f6e 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobStreamingResultSetExtractor.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobStreamingResultSetExtractor.java @@ -25,6 +25,7 @@ import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.dao.IncorrectResultSizeDataAccessException; import org.springframework.jdbc.LobRetrievalFailureException; import org.springframework.jdbc.core.ResultSetExtractor; +import org.springframework.lang.Nullable; /** * Abstract ResultSetExtractor implementation that assumes streaming of LOB data. @@ -65,6 +66,7 @@ public abstract class AbstractLobStreamingResultSetExtractor implements Resul * @see org.springframework.jdbc.LobRetrievalFailureException */ @Override + @Nullable public final T extractData(ResultSet rs) throws SQLException, DataAccessException { if (!rs.next()) { handleNoRowFound(); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseFactoryBean.java b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseFactoryBean.java index d754f435f21..b25180340e4 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseFactoryBean.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseFactoryBean.java @@ -66,6 +66,7 @@ public class EmbeddedDatabaseFactoryBean extends EmbeddedDatabaseFactory @Override + @Nullable public DataSource getObject() { return getDataSource(); } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/lookup/IsolationLevelDataSourceRouter.java b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/lookup/IsolationLevelDataSourceRouter.java index 63bb1b66f93..db5a592ab11 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/lookup/IsolationLevelDataSourceRouter.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/lookup/IsolationLevelDataSourceRouter.java @@ -17,6 +17,7 @@ package org.springframework.jdbc.datasource.lookup; import org.springframework.core.Constants; +import org.springframework.lang.Nullable; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.support.DefaultTransactionDefinition; import org.springframework.transaction.support.TransactionSynchronizationManager; @@ -119,6 +120,7 @@ public class IsolationLevelDataSourceRouter extends AbstractRoutingDataSource { } @Override + @Nullable protected Object determineCurrentLookupKey() { return TransactionSynchronizationManager.getCurrentTransactionIsolationLevel(); } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/object/MappingSqlQuery.java b/spring-jdbc/src/main/java/org/springframework/jdbc/object/MappingSqlQuery.java index 7aa48d82681..7a7aa314223 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/object/MappingSqlQuery.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/object/MappingSqlQuery.java @@ -61,6 +61,7 @@ public abstract class MappingSqlQuery extends MappingSqlQueryWithParameters context) throws SQLException { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/object/MappingSqlQueryWithParameters.java b/spring-jdbc/src/main/java/org/springframework/jdbc/object/MappingSqlQueryWithParameters.java index e862042f2d7..a93cfea308e 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/object/MappingSqlQueryWithParameters.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/object/MappingSqlQueryWithParameters.java @@ -117,6 +117,7 @@ public abstract class MappingSqlQueryWithParameters extends SqlQuery { } @Override + @Nullable public T mapRow(ResultSet rs, int rowNum) throws SQLException { return MappingSqlQueryWithParameters.this.mapRow(rs, rowNum, this.params, this.context); } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlFunction.java b/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlFunction.java index cf0deb8bd8a..4e78ecfb1c5 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlFunction.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlFunction.java @@ -127,6 +127,7 @@ public class SqlFunction extends MappingSqlQuery { * of rows returned, this is treated as an error. */ @Override + @Nullable protected T mapRow(ResultSet rs, int rowNum) throws SQLException { return this.rowMapper.mapRow(rs, rowNum); } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/AbstractFallbackSQLExceptionTranslator.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/AbstractFallbackSQLExceptionTranslator.java index b231cd667e4..cc198cf0d1e 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/AbstractFallbackSQLExceptionTranslator.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/AbstractFallbackSQLExceptionTranslator.java @@ -64,6 +64,7 @@ public abstract class AbstractFallbackSQLExceptionTranslator implements SQLExcep * {@link #getFallbackTranslator() fallback translator} if necessary. */ @Override + @Nullable public DataAccessException translate(@Nullable String task, @Nullable String sql, SQLException ex) { Assert.notNull(ex, "Cannot translate a null SQLException"); if (task == null) { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/GeneratedKeyHolder.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/GeneratedKeyHolder.java index 0de3fcfc43d..d7f8df8fd53 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/GeneratedKeyHolder.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/GeneratedKeyHolder.java @@ -23,6 +23,7 @@ import java.util.Map; import org.springframework.dao.DataRetrievalFailureException; import org.springframework.dao.InvalidDataAccessApiUsageException; +import org.springframework.lang.Nullable; /** * Default implementation of the {@link KeyHolder} interface, to be used for @@ -58,6 +59,7 @@ public class GeneratedKeyHolder implements KeyHolder { @Override + @Nullable public Number getKey() throws InvalidDataAccessApiUsageException, DataRetrievalFailureException { if (this.keyList.size() == 0) { return null; @@ -85,6 +87,7 @@ public class GeneratedKeyHolder implements KeyHolder { } @Override + @Nullable public Map getKeys() throws InvalidDataAccessApiUsageException { if (this.keyList.size() == 0) { return null; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslator.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslator.java index 087a8441b6a..114fc5e7acb 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslator.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslator.java @@ -168,6 +168,7 @@ public class SQLErrorCodeSQLExceptionTranslator extends AbstractFallbackSQLExcep @Override + @Nullable protected DataAccessException doTranslate(String task, String sql, SQLException ex) { SQLException sqlEx = ex; if (sqlEx instanceof BatchUpdateException && sqlEx.getNextException() != null) { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslator.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslator.java index 0c4db4cc739..eb3939a2dd1 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslator.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslator.java @@ -88,6 +88,7 @@ public class SQLStateSQLExceptionTranslator extends AbstractFallbackSQLException @Override + @Nullable protected DataAccessException doTranslate(String task, String sql, SQLException ex) { // First, the getSQLState check... String sqlState = getSqlState(ex); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/AbstractLobHandler.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/AbstractLobHandler.java index 2caea6f2870..6ee0758b634 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/AbstractLobHandler.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/AbstractLobHandler.java @@ -21,6 +21,8 @@ import java.io.Reader; import java.sql.ResultSet; import java.sql.SQLException; +import org.springframework.lang.Nullable; + /** * Abstract base class for {@link LobHandler} implementations. * @@ -34,21 +36,25 @@ import java.sql.SQLException; public abstract class AbstractLobHandler implements LobHandler { @Override + @Nullable public byte[] getBlobAsBytes(ResultSet rs, String columnName) throws SQLException { return getBlobAsBytes(rs, rs.findColumn(columnName)); } @Override + @Nullable public InputStream getBlobAsBinaryStream(ResultSet rs, String columnName) throws SQLException { return getBlobAsBinaryStream(rs, rs.findColumn(columnName)); } @Override + @Nullable public String getClobAsString(ResultSet rs, String columnName) throws SQLException { return getClobAsString(rs, rs.findColumn(columnName)); } @Override + @Nullable public InputStream getClobAsAsciiStream(ResultSet rs, String columnName) throws SQLException { return getClobAsAsciiStream(rs, rs.findColumn(columnName)); } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java index 21e5aee67cb..cf8d6d5ae73 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java @@ -148,6 +148,7 @@ public class DefaultLobHandler extends AbstractLobHandler { @Override + @Nullable public byte[] getBlobAsBytes(ResultSet rs, int columnIndex) throws SQLException { logger.debug("Returning BLOB as bytes"); if (this.wrapAsLob) { @@ -160,6 +161,7 @@ public class DefaultLobHandler extends AbstractLobHandler { } @Override + @Nullable public InputStream getBlobAsBinaryStream(ResultSet rs, int columnIndex) throws SQLException { logger.debug("Returning BLOB as binary stream"); if (this.wrapAsLob) { @@ -172,6 +174,7 @@ public class DefaultLobHandler extends AbstractLobHandler { } @Override + @Nullable public String getClobAsString(ResultSet rs, int columnIndex) throws SQLException { logger.debug("Returning CLOB as string"); if (this.wrapAsLob) { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java index 023c0d93210..f3a2f6aef0a 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java @@ -53,42 +53,49 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler { //------------------------------------------------------------------------- @Override + @Nullable public String getXmlAsString(ResultSet rs, String columnName) throws SQLException { SQLXML xmlObject = rs.getSQLXML(columnName); return (xmlObject != null ? xmlObject.getString() : null); } @Override + @Nullable public String getXmlAsString(ResultSet rs, int columnIndex) throws SQLException { SQLXML xmlObject = rs.getSQLXML(columnIndex); return (xmlObject != null ? xmlObject.getString() : null); } @Override + @Nullable public InputStream getXmlAsBinaryStream(ResultSet rs, String columnName) throws SQLException { SQLXML xmlObject = rs.getSQLXML(columnName); return (xmlObject != null ? xmlObject.getBinaryStream() : null); } @Override + @Nullable public InputStream getXmlAsBinaryStream(ResultSet rs, int columnIndex) throws SQLException { SQLXML xmlObject = rs.getSQLXML(columnIndex); return (xmlObject != null ? xmlObject.getBinaryStream() : null); } @Override + @Nullable public Reader getXmlAsCharacterStream(ResultSet rs, String columnName) throws SQLException { SQLXML xmlObject = rs.getSQLXML(columnName); return (xmlObject != null ? xmlObject.getCharacterStream() : null); } @Override + @Nullable public Reader getXmlAsCharacterStream(ResultSet rs, int columnIndex) throws SQLException { SQLXML xmlObject = rs.getSQLXML(columnIndex); return (xmlObject != null ? xmlObject.getCharacterStream() : null); } @Override + @Nullable public Source getXmlAsSource(ResultSet rs, String columnName, @Nullable Class sourceClass) throws SQLException { @@ -100,6 +107,7 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler { } @Override + @Nullable public Source getXmlAsSource(ResultSet rs, int columnIndex, @Nullable Class sourceClass) throws SQLException { diff --git a/spring-jdbc/src/main/kotlin/org/springframework/jdbc/core/JdbcOperationsExtensions.kt b/spring-jdbc/src/main/kotlin/org/springframework/jdbc/core/JdbcOperationsExtensions.kt index ca9367ed7ea..639bfac9305 100644 --- a/spring-jdbc/src/main/kotlin/org/springframework/jdbc/core/JdbcOperationsExtensions.kt +++ b/spring-jdbc/src/main/kotlin/org/springframework/jdbc/core/JdbcOperationsExtensions.kt @@ -33,7 +33,7 @@ inline fun JdbcOperations.queryForObject(sql: String): T? = qu * @author Mario Arias * @since 5.0 */ -fun JdbcOperations.queryForObject(sql: String, vararg args: Any, function: (ResultSet, Int) -> T): T = +fun JdbcOperations.queryForObject(sql: String, vararg args: Any, function: (ResultSet, Int) -> T): T? = queryForObject(sql, RowMapper { resultSet, i -> function(resultSet, i) }, *args) /** diff --git a/spring-jms/src/main/java/org/springframework/jms/JmsException.java b/spring-jms/src/main/java/org/springframework/jms/JmsException.java index eb656a003f6..2da3fff739b 100644 --- a/spring-jms/src/main/java/org/springframework/jms/JmsException.java +++ b/spring-jms/src/main/java/org/springframework/jms/JmsException.java @@ -83,6 +83,7 @@ public abstract class JmsException extends NestedRuntimeException { * @see javax.jms.JMSException#getLinkedException() */ @Override + @Nullable public String getMessage() { String message = super.getMessage(); Throwable cause = getCause(); diff --git a/spring-jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java b/spring-jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java index 0af4bbb845c..db1388326a6 100644 --- a/spring-jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java +++ b/spring-jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java @@ -103,6 +103,7 @@ abstract class AbstractListenerContainerParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { CompositeComponentDefinition compositeDef = new CompositeComponentDefinition(element.getTagName(), parserContext.extractSource(element)); diff --git a/spring-jms/src/main/java/org/springframework/jms/config/AnnotationDrivenJmsBeanDefinitionParser.java b/spring-jms/src/main/java/org/springframework/jms/config/AnnotationDrivenJmsBeanDefinitionParser.java index 5bec66d4808..b5a4bb93c19 100644 --- a/spring-jms/src/main/java/org/springframework/jms/config/AnnotationDrivenJmsBeanDefinitionParser.java +++ b/spring-jms/src/main/java/org/springframework/jms/config/AnnotationDrivenJmsBeanDefinitionParser.java @@ -38,6 +38,7 @@ import org.springframework.util.StringUtils; class AnnotationDrivenJmsBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { Object source = parserContext.extractSource(element); diff --git a/spring-jms/src/main/java/org/springframework/jms/connection/ConnectionFactoryUtils.java b/spring-jms/src/main/java/org/springframework/jms/connection/ConnectionFactoryUtils.java index 84bc69983f0..ba7d9bfeef3 100644 --- a/spring-jms/src/main/java/org/springframework/jms/connection/ConnectionFactoryUtils.java +++ b/spring-jms/src/main/java/org/springframework/jms/connection/ConnectionFactoryUtils.java @@ -139,10 +139,12 @@ public abstract class ConnectionFactoryUtils { return doGetTransactionalSession(cf, new ResourceFactory() { @Override + @Nullable public Session getSession(JmsResourceHolder holder) { return holder.getSession(Session.class, existingCon); } @Override + @Nullable public Connection getConnection(JmsResourceHolder holder) { return (existingCon != null ? existingCon : holder.getConnection()); } @@ -182,10 +184,12 @@ public abstract class ConnectionFactoryUtils { return (QueueSession) doGetTransactionalSession(cf, new ResourceFactory() { @Override + @Nullable public Session getSession(JmsResourceHolder holder) { return holder.getSession(QueueSession.class, existingCon); } @Override + @Nullable public Connection getConnection(JmsResourceHolder holder) { return (existingCon != null ? existingCon : holder.getConnection(QueueConnection.class)); } @@ -225,10 +229,12 @@ public abstract class ConnectionFactoryUtils { return (TopicSession) doGetTransactionalSession(cf, new ResourceFactory() { @Override + @Nullable public Session getSession(JmsResourceHolder holder) { return holder.getSession(TopicSession.class, existingCon); } @Override + @Nullable public Connection getConnection(JmsResourceHolder holder) { return (existingCon != null ? existingCon : holder.getConnection(TopicConnection.class)); } diff --git a/spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java b/spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java index 4785a1795d1..8dc19c14d4f 100644 --- a/spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java +++ b/spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java @@ -230,6 +230,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable public Message receive() { Destination defaultDestination = getDefaultDestination(); if (defaultDestination != null) { @@ -241,6 +242,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable public T receiveAndConvert(Class targetClass) { Destination defaultDestination = getDefaultDestination(); if (defaultDestination != null) { @@ -252,11 +254,13 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable public Message receive(String destinationName) throws MessagingException { return doReceive(destinationName); } @Override + @Nullable public T receiveAndConvert(String destinationName, Class targetClass) throws MessagingException { Message message = doReceive(destinationName); if (message != null) { @@ -268,6 +272,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable public Message sendAndReceive(Message requestMessage) { Destination defaultDestination = getDefaultDestination(); if (defaultDestination != null) { @@ -279,11 +284,13 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable public Message sendAndReceive(String destinationName, Message requestMessage) throws MessagingException { return doSendAndReceive(destinationName, requestMessage); } @Override + @Nullable public T convertSendAndReceive(String destinationName, Object request, Class targetClass) throws MessagingException { @@ -291,11 +298,13 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable public T convertSendAndReceive(Object request, Class targetClass) { return convertSendAndReceive(request, targetClass, null); } @Override + @Nullable public T convertSendAndReceive(String destinationName, Object request, @Nullable Map headers, Class targetClass) throws MessagingException { @@ -303,6 +312,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable public T convertSendAndReceive(Object request, Class targetClass, @Nullable MessagePostProcessor postProcessor) { Destination defaultDestination = getDefaultDestination(); if (defaultDestination != null) { @@ -314,6 +324,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable public T convertSendAndReceive(String destinationName, Object request, Class targetClass, @Nullable MessagePostProcessor requestPostProcessor) throws MessagingException { @@ -322,6 +333,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate @SuppressWarnings("unchecked") @Override + @Nullable public T convertSendAndReceive(String destinationName, Object request, @Nullable Map headers, Class targetClass, @Nullable MessagePostProcessor postProcessor) { @@ -350,6 +362,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable protected Message doReceive(Destination destination) { try { javax.jms.Message jmsMessage = obtainJmsTemplate().receive(destination); @@ -372,6 +385,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate } @Override + @Nullable protected Message doSendAndReceive(Destination destination, Message requestMessage) { try { javax.jms.Message jmsMessage = obtainJmsTemplate().sendAndReceive( diff --git a/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java b/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java index 794c5bc99a7..02397ef7610 100644 --- a/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java +++ b/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java @@ -463,6 +463,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations //--------------------------------------------------------------------------------------- @Override + @Nullable public T execute(SessionCallback action) throws JmsException { return execute(action, false); } @@ -512,6 +513,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public T execute(ProducerCallback action) throws JmsException { String defaultDestinationName = getDefaultDestinationName(); if (defaultDestinationName != null) { @@ -523,6 +525,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public T execute(final @Nullable Destination destination, final ProducerCallback action) throws JmsException { Assert.notNull(action, "Callback object must not be null"); return execute(session -> { @@ -537,6 +540,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public T execute(final String destinationName, final ProducerCallback action) throws JmsException { Assert.notNull(action, "Callback object must not be null"); return execute(session -> { @@ -700,6 +704,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations //--------------------------------------------------------------------------------------- @Override + @Nullable public Message receive() throws JmsException { Destination defaultDestination = getDefaultDestination(); if (defaultDestination != null) { @@ -711,16 +716,19 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public Message receive(Destination destination) throws JmsException { return receiveSelected(destination, null); } @Override + @Nullable public Message receive(String destinationName) throws JmsException { return receiveSelected(destinationName, null); } - @Override + @Override@Nullable + public Message receiveSelected(String messageSelector) throws JmsException { Destination defaultDestination = getDefaultDestination(); if (defaultDestination != null) { @@ -732,6 +740,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public Message receiveSelected(final Destination destination, @Nullable final String messageSelector) throws JmsException { return execute(session -> { return doReceive(session, destination, messageSelector); @@ -739,6 +748,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public Message receiveSelected(final String destinationName, @Nullable final String messageSelector) throws JmsException { return execute(session -> { Destination destination = resolveDestinationName(session, destinationName); @@ -808,31 +818,37 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations //--------------------------------------------------------------------------------------- @Override + @Nullable public Object receiveAndConvert() throws JmsException { return doConvertFromMessage(receive()); } @Override + @Nullable public Object receiveAndConvert(Destination destination) throws JmsException { return doConvertFromMessage(receive(destination)); } @Override + @Nullable public Object receiveAndConvert(String destinationName) throws JmsException { return doConvertFromMessage(receive(destinationName)); } @Override + @Nullable public Object receiveSelectedAndConvert(String messageSelector) throws JmsException { return doConvertFromMessage(receiveSelected(messageSelector)); } @Override + @Nullable public Object receiveSelectedAndConvert(Destination destination, String messageSelector) throws JmsException { return doConvertFromMessage(receiveSelected(destination, messageSelector)); } @Override + @Nullable public Object receiveSelectedAndConvert(String destinationName, String messageSelector) throws JmsException { return doConvertFromMessage(receiveSelected(destinationName, messageSelector)); } @@ -861,6 +877,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations //--------------------------------------------------------------------------------------- @Override + @Nullable public Message sendAndReceive(MessageCreator messageCreator) throws JmsException { Destination defaultDestination = getDefaultDestination(); if (defaultDestination != null) { @@ -872,11 +889,13 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public Message sendAndReceive(final Destination destination, final MessageCreator messageCreator) throws JmsException { return executeLocal(session -> doSendAndReceive(session, destination, messageCreator), true); } @Override + @Nullable public Message sendAndReceive(final String destinationName, final MessageCreator messageCreator) throws JmsException { return executeLocal(session -> { Destination destination = resolveDestinationName(session, destinationName); @@ -955,6 +974,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations //--------------------------------------------------------------------------------------- @Override + @Nullable public T browse(BrowserCallback action) throws JmsException { Queue defaultQueue = getDefaultQueue(); if (defaultQueue != null) { @@ -966,16 +986,19 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public T browse(Queue queue, BrowserCallback action) throws JmsException { return browseSelected(queue, null, action); } @Override + @Nullable public T browse(String queueName, BrowserCallback action) throws JmsException { return browseSelected(queueName, null, action); } @Override + @Nullable public T browseSelected(String messageSelector, BrowserCallback action) throws JmsException { Queue defaultQueue = getDefaultQueue(); if (defaultQueue != null) { @@ -987,6 +1010,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public T browseSelected(final Queue queue, @Nullable final String messageSelector, final BrowserCallback action) throws JmsException { @@ -1003,6 +1027,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations } @Override + @Nullable public T browseSelected(final String queueName, @Nullable final String messageSelector, final BrowserCallback action) throws JmsException { @@ -1145,11 +1170,13 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations private class JmsTemplateResourceFactory implements ConnectionFactoryUtils.ResourceFactory { @Override + @Nullable public Connection getConnection(JmsResourceHolder holder) { return JmsTemplate.this.getConnection(holder); } @Override + @Nullable public Session getSession(JmsResourceHolder holder) { return JmsTemplate.this.getSession(holder); } diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/AbstractPollingMessageListenerContainer.java b/spring-jms/src/main/java/org/springframework/jms/listener/AbstractPollingMessageListenerContainer.java index 555522b04ec..ca216377ddd 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/AbstractPollingMessageListenerContainer.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/AbstractPollingMessageListenerContainer.java @@ -469,11 +469,13 @@ public abstract class AbstractPollingMessageListenerContainer extends AbstractMe private class MessageListenerContainerResourceFactory implements ConnectionFactoryUtils.ResourceFactory { @Override + @Nullable public Connection getConnection(JmsResourceHolder holder) { return AbstractPollingMessageListenerContainer.this.getConnection(holder); } @Override + @Nullable public Session getSession(JmsResourceHolder holder) { return AbstractPollingMessageListenerContainer.this.getSession(holder); } diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessageListenerAdapter.java b/spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessageListenerAdapter.java index 9da2823f408..ff44538b8ca 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessageListenerAdapter.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessageListenerAdapter.java @@ -256,7 +256,6 @@ public class MessageListenerAdapter extends AbstractAdaptableMessageListener imp * @throws JMSException if thrown by JMS API methods * @see #setDefaultListenerMethod */ - @Nullable protected String getListenerMethodName(Message originalMessage, Object extractedMessage) throws JMSException { return getDefaultListenerMethod(); } diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsMessageEndpointManager.java b/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsMessageEndpointManager.java index a8a255b3b5b..7cf83d25ad6 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsMessageEndpointManager.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsMessageEndpointManager.java @@ -191,6 +191,7 @@ public class JmsMessageEndpointManager extends GenericMessageEndpointManager } @Override + @Nullable public MessageConverter getMessageConverter() { JmsActivationSpecConfig config = getActivationSpecConfig(); if (config != null) { @@ -200,6 +201,7 @@ public class JmsMessageEndpointManager extends GenericMessageEndpointManager } @Override + @Nullable public DestinationResolver getDestinationResolver() { if (this.activationSpecFactory instanceof StandardJmsActivationSpecFactory) { return ((StandardJmsActivationSpecFactory) this.activationSpecFactory).getDestinationResolver(); @@ -226,6 +228,7 @@ public class JmsMessageEndpointManager extends GenericMessageEndpointManager } @Override + @Nullable public QosSettings getReplyQosSettings() { JmsActivationSpecConfig config = getActivationSpecConfig(); if (config != null) { diff --git a/spring-jms/src/main/java/org/springframework/jms/remoting/JmsInvokerProxyFactoryBean.java b/spring-jms/src/main/java/org/springframework/jms/remoting/JmsInvokerProxyFactoryBean.java index 6b0f7630f68..b49130fa2ee 100644 --- a/spring-jms/src/main/java/org/springframework/jms/remoting/JmsInvokerProxyFactoryBean.java +++ b/spring-jms/src/main/java/org/springframework/jms/remoting/JmsInvokerProxyFactoryBean.java @@ -81,6 +81,7 @@ public class JmsInvokerProxyFactoryBean extends JmsInvokerClientInterceptor @Override + @Nullable public Object getObject() { return this.serviceProxy; } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java index 7be22682422..4e7379f252b 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java @@ -167,11 +167,13 @@ public abstract class AbstractMessageConverter implements SmartMessageConverter } @Override + @Nullable public final Object fromMessage(Message message, Class targetClass) { return fromMessage(message, targetClass, null); } @Override + @Nullable public final Object fromMessage(Message message, Class targetClass, @Nullable Object conversionHint) { if (!canConvertFrom(message, targetClass)) { return null; @@ -184,11 +186,13 @@ public abstract class AbstractMessageConverter implements SmartMessageConverter } @Override + @Nullable public final Message toMessage(Object payload, @Nullable MessageHeaders headers) { return toMessage(payload, headers, null); } @Override + @Nullable public final Message toMessage(Object payload, @Nullable MessageHeaders headers, @Nullable Object conversionHint) { if (!canConvertTo(payload, headers)) { return null; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/CompositeMessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/CompositeMessageConverter.java index 30832f86d32..08309ac563b 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/CompositeMessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/CompositeMessageConverter.java @@ -51,6 +51,7 @@ public class CompositeMessageConverter implements SmartMessageConverter { @Override + @Nullable public Object fromMessage(Message message, Class targetClass) { for (MessageConverter converter : getConverters()) { Object result = converter.fromMessage(message, targetClass); @@ -62,6 +63,7 @@ public class CompositeMessageConverter implements SmartMessageConverter { } @Override + @Nullable public Object fromMessage(Message message, Class targetClass, @Nullable Object conversionHint) { for (MessageConverter converter : getConverters()) { Object result = (converter instanceof SmartMessageConverter ? @@ -75,6 +77,7 @@ public class CompositeMessageConverter implements SmartMessageConverter { } @Override + @Nullable public Message toMessage(Object payload, @Nullable MessageHeaders headers) { for (MessageConverter converter : getConverters()) { Message result = converter.toMessage(payload, headers); @@ -86,6 +89,7 @@ public class CompositeMessageConverter implements SmartMessageConverter { } @Override + @Nullable public Message toMessage(Object payload, @Nullable MessageHeaders headers, @Nullable Object conversionHint) { for (MessageConverter converter : getConverters()) { Message result = (converter instanceof SmartMessageConverter ? diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/DefaultContentTypeResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/DefaultContentTypeResolver.java index 0415a72b89b..5d6a10008f6 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/DefaultContentTypeResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/DefaultContentTypeResolver.java @@ -56,6 +56,7 @@ public class DefaultContentTypeResolver implements ContentTypeResolver { @Override + @Nullable public MimeType resolve(@Nullable MessageHeaders headers) { if (headers == null || headers.get(MessageHeaders.CONTENT_TYPE) == null) { return this.defaultMimeType; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/GenericMessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/GenericMessageConverter.java index 858ce2d0417..2b369e98b1c 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/GenericMessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/GenericMessageConverter.java @@ -19,6 +19,7 @@ package org.springframework.messaging.converter; import org.springframework.core.convert.ConversionException; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.support.DefaultConversionService; +import org.springframework.lang.Nullable; import org.springframework.messaging.Message; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -57,6 +58,7 @@ public class GenericMessageConverter extends SimpleMessageConverter { @Override + @Nullable public Object fromMessage(Message message, Class targetClass) { Object payload = message.getPayload(); if (this.conversionService.canConvert(payload.getClass(), targetClass)) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java index 9bba9b244c3..e29834a02c2 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java @@ -205,6 +205,7 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter { } @Override + @Nullable protected Object convertFromInternal(Message message, Class targetClass, @Nullable Object conversionHint) { JavaType javaType = this.objectMapper.constructType(targetClass); Object payload = message.getPayload(); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/SimpleMessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/SimpleMessageConverter.java index e654a3590aa..7ec8bcc13ef 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/SimpleMessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/SimpleMessageConverter.java @@ -36,6 +36,7 @@ import org.springframework.util.ClassUtils; public class SimpleMessageConverter implements MessageConverter { @Override + @Nullable public Object fromMessage(Message message, Class targetClass) { Object payload = message.getPayload(); return (ClassUtils.isAssignableValue(targetClass, payload) ? payload : null); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/StringMessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/StringMessageConverter.java index 48b5c0907a6..3798bf3ffb5 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/StringMessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/StringMessageConverter.java @@ -61,6 +61,7 @@ public class StringMessageConverter extends AbstractMessageConverter { } @Override + @Nullable protected Object convertToInternal( Object payload, @Nullable MessageHeaders headers, @Nullable Object conversionHint) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractDestinationResolvingMessagingTemplate.java b/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractDestinationResolvingMessagingTemplate.java index e2bdb367fcb..b06d8daad6c 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractDestinationResolvingMessagingTemplate.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractDestinationResolvingMessagingTemplate.java @@ -100,30 +100,35 @@ public abstract class AbstractDestinationResolvingMessagingTemplate extends A } @Override + @Nullable public Message receive(String destinationName) { D destination = resolveDestination(destinationName); return super.receive(destination); } @Override + @Nullable public T receiveAndConvert(String destinationName, Class targetClass) { D destination = resolveDestination(destinationName); return super.receiveAndConvert(destination, targetClass); } @Override + @Nullable public Message sendAndReceive(String destinationName, Message requestMessage) { D destination = resolveDestination(destinationName); return super.sendAndReceive(destination, requestMessage); } @Override + @Nullable public T convertSendAndReceive(String destinationName, Object request, Class targetClass) { D destination = resolveDestination(destinationName); return super.convertSendAndReceive(destination, request, targetClass); } @Override + @Nullable public T convertSendAndReceive(String destinationName, Object request, @Nullable Map headers, Class targetClass) { @@ -132,6 +137,7 @@ public abstract class AbstractDestinationResolvingMessagingTemplate extends A } @Override + @Nullable public T convertSendAndReceive(String destinationName, Object request, Class targetClass, @Nullable MessagePostProcessor postProcessor) { @@ -140,6 +146,7 @@ public abstract class AbstractDestinationResolvingMessagingTemplate extends A } @Override + @Nullable public T convertSendAndReceive(String destinationName, Object request, @Nullable Map headers, Class targetClass, @Nullable MessagePostProcessor postProcessor) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessageReceivingTemplate.java b/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessageReceivingTemplate.java index 09f757fe089..67ce6af27b8 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessageReceivingTemplate.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessageReceivingTemplate.java @@ -34,11 +34,13 @@ public abstract class AbstractMessageReceivingTemplate extends AbstractMessag implements MessageReceivingOperations { @Override + @Nullable public Message receive() { return doReceive(getRequiredDefaultDestination()); } @Override + @Nullable public Message receive(D destination) { return doReceive(destination); } @@ -54,11 +56,13 @@ public abstract class AbstractMessageReceivingTemplate extends AbstractMessag @Override + @Nullable public T receiveAndConvert(Class targetClass) { return receiveAndConvert(getRequiredDefaultDestination(), targetClass); } @Override + @Nullable public T receiveAndConvert(D destination, Class targetClass) { Message message = doReceive(destination); if (message != null) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessagingTemplate.java b/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessagingTemplate.java index 6783dfb4d97..f014c234f04 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessagingTemplate.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessagingTemplate.java @@ -34,11 +34,13 @@ public abstract class AbstractMessagingTemplate extends AbstractMessageReceiv implements MessageRequestReplyOperations { @Override + @Nullable public Message sendAndReceive(Message requestMessage) { return sendAndReceive(getRequiredDefaultDestination(), requestMessage); } @Override + @Nullable public Message sendAndReceive(D destination, Message requestMessage) { return doSendAndReceive(destination, requestMessage); } @@ -48,16 +50,19 @@ public abstract class AbstractMessagingTemplate extends AbstractMessageReceiv @Override + @Nullable public T convertSendAndReceive(Object request, Class targetClass) { return convertSendAndReceive(getRequiredDefaultDestination(), request, targetClass); } @Override + @Nullable public T convertSendAndReceive(D destination, Object request, Class targetClass) { return convertSendAndReceive(destination, request, null, targetClass); } @Override + @Nullable public T convertSendAndReceive( D destination, Object request, @Nullable Map headers, Class targetClass) { @@ -65,6 +70,7 @@ public abstract class AbstractMessagingTemplate extends AbstractMessageReceiv } @Override + @Nullable public T convertSendAndReceive( Object request, Class targetClass, @Nullable MessagePostProcessor postProcessor) { @@ -72,6 +78,7 @@ public abstract class AbstractMessagingTemplate extends AbstractMessageReceiv } @Override + @Nullable public T convertSendAndReceive(D destination, Object request, Class targetClass, @Nullable MessagePostProcessor postProcessor) { @@ -80,6 +87,7 @@ public abstract class AbstractMessagingTemplate extends AbstractMessageReceiv @SuppressWarnings("unchecked") @Override + @Nullable public T convertSendAndReceive(D destination, Object request, @Nullable Map headers, Class targetClass, @Nullable MessagePostProcessor postProcessor) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/core/GenericMessagingTemplate.java b/spring-messaging/src/main/java/org/springframework/messaging/core/GenericMessagingTemplate.java index b9905766be7..06ba54316f6 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/core/GenericMessagingTemplate.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/core/GenericMessagingTemplate.java @@ -189,6 +189,7 @@ public class GenericMessagingTemplate extends AbstractDestinationResolvingMessag } @Override + @Nullable protected final Message doReceive(MessageChannel channel) { return doReceive(channel, this.receiveTimeout); } @@ -209,6 +210,7 @@ public class GenericMessagingTemplate extends AbstractDestinationResolvingMessag } @Override + @Nullable protected final Message doSendAndReceive(MessageChannel channel, Message requestMessage) { Assert.notNull(channel, "'channel' is required"); Object originalReplyChannelHeader = requestMessage.getHeaders().getReplyChannel(); @@ -294,11 +296,13 @@ public class GenericMessagingTemplate extends AbstractDestinationResolvingMessag } @Override + @Nullable public Message receive() { return this.receive(-1); } @Override + @Nullable public Message receive(long timeout) { try { if (timeout < 0) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/DestinationPatternsMessageCondition.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/DestinationPatternsMessageCondition.java index 289fb73b0e9..3534cafb2ac 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/DestinationPatternsMessageCondition.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/DestinationPatternsMessageCondition.java @@ -145,6 +145,7 @@ public class DestinationPatternsMessageCondition extends AbstractMessageConditio * or {@code null} either if a destination can not be extracted or there is no match */ @Override + @Nullable public DestinationPatternsMessageCondition getMatchingCondition(Message message) { String destination = (String) message.getHeaders().get(LOOKUP_DESTINATION_HEADER); if (destination == null) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java index 1c460b4bca1..90d46dd06d2 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java @@ -84,6 +84,7 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle @Override + @Nullable public Object resolveArgument(MethodParameter parameter, Message message) throws Exception { NamedValueInfo namedValueInfo = getNamedValueInfo(parameter); MethodParameter nestedParameter = parameter.nestedIfOptional(); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DestinationVariableMethodArgumentResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DestinationVariableMethodArgumentResolver.java index 76e6a8e1bfa..1291cab2c50 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DestinationVariableMethodArgumentResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DestinationVariableMethodArgumentResolver.java @@ -20,6 +20,7 @@ import java.util.Map; import org.springframework.core.MethodParameter; import org.springframework.core.convert.ConversionService; +import org.springframework.lang.Nullable; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHandlingException; import org.springframework.messaging.handler.annotation.DestinationVariable; @@ -55,6 +56,7 @@ public class DestinationVariableMethodArgumentResolver extends AbstractNamedValu } @Override + @Nullable protected Object resolveArgumentInternal(MethodParameter parameter, Message message, String name) throws Exception { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java index a08db6058cf..26a6b842f82 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java @@ -59,6 +59,7 @@ public class HeaderMethodArgumentResolver extends AbstractNamedValueMethodArgume } @Override + @Nullable protected Object resolveArgumentInternal(MethodParameter parameter, Message message, String name) throws Exception { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeadersMethodArgumentResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeadersMethodArgumentResolver.java index 14fcf457214..307a0e8a92c 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeadersMethodArgumentResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeadersMethodArgumentResolver.java @@ -20,6 +20,7 @@ import java.lang.reflect.Method; import java.util.Map; import org.springframework.core.MethodParameter; +import org.springframework.lang.Nullable; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.handler.annotation.Headers; @@ -50,6 +51,7 @@ public class HeadersMethodArgumentResolver implements HandlerMethodArgumentResol } @Override + @Nullable public Object resolveArgument(MethodParameter parameter, Message message) throws Exception { Class paramType = parameter.getParameterType(); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolver.java index df31202e234..022441df4d8 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolver.java @@ -105,6 +105,7 @@ public class PayloadArgumentResolver implements HandlerMethodArgumentResolver { } @Override + @Nullable public Object resolveArgument(MethodParameter parameter, Message message) throws Exception { Payload ann = parameter.getParameterAnnotation(Payload.class); if (ann != null && StringUtils.hasText(ann.expression())) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodArgumentResolverComposite.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodArgumentResolverComposite.java index cd0682b7c58..6a70d1c34a3 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodArgumentResolverComposite.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodArgumentResolverComposite.java @@ -106,6 +106,7 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu * @exception IllegalStateException if no suitable {@link HandlerMethodArgumentResolver} is found. */ @Override + @Nullable public Object resolveArgument(MethodParameter parameter, Message message) throws Exception { HandlerMethodArgumentResolver resolver = getArgumentResolver(parameter); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java index 9389d38e7dd..21f779b9726 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java @@ -115,6 +115,7 @@ public class HandlerMethodReturnValueHandlerComposite implements AsyncHandlerMet } @Override + @Nullable public ListenableFuture toListenableFuture(Object returnValue, MethodParameter returnType) { HandlerMethodReturnValueHandler handler = getReturnValueHandler(returnType); Assert.state(handler instanceof AsyncHandlerMethodReturnValueHandler, diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageMappingInfo.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageMappingInfo.java index eca08f96227..ceb0d541759 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageMappingInfo.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageMappingInfo.java @@ -65,6 +65,7 @@ public class SimpMessageMappingInfo implements MessageCondition message) { SimpMessageTypeMessageCondition typeCond = this.messageTypeMessageCondition.getMatchingCondition(message); if (typeCond == null) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageTypeMessageCondition.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageTypeMessageCondition.java index 9f33e2212da..bcdc4654bb4 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageTypeMessageCondition.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageTypeMessageCondition.java @@ -19,6 +19,7 @@ package org.springframework.messaging.simp; import java.util.Arrays; import java.util.Collection; +import org.springframework.lang.Nullable; import org.springframework.messaging.Message; import org.springframework.messaging.handler.AbstractMessageCondition; import org.springframework.util.Assert; @@ -71,6 +72,7 @@ public class SimpMessageTypeMessageCondition extends AbstractMessageCondition message) { Object actualMessageType = SimpMessageHeaderAccessor.getMessageType(message.getHeaders()); if (actualMessageType == null) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpSessionScope.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpSessionScope.java index 95c8cba664f..cf304368ab4 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpSessionScope.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpSessionScope.java @@ -18,6 +18,7 @@ package org.springframework.messaging.simp; import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.config.Scope; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -51,6 +52,7 @@ public class SimpSessionScope implements Scope { } @Override + @Nullable public Object remove(String name) { SimpAttributes simpAttributes = SimpAttributesContextHolder.currentAttributes(); synchronized (simpAttributes.getSessionMutex()) { @@ -71,6 +73,7 @@ public class SimpSessionScope implements Scope { } @Override + @Nullable public Object resolveContextualObject(String key) { return null; } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SendToMethodReturnValueHandler.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SendToMethodReturnValueHandler.java index 068a7b04ee1..2fbc3931902 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SendToMethodReturnValueHandler.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SendToMethodReturnValueHandler.java @@ -285,6 +285,7 @@ public class SendToMethodReturnValueHandler implements HandlerMethodReturnValueH } @Override + @Nullable public String resolvePlaceholder(String placeholderName) { return (this.vars != null ? this.vars.get(placeholderName) : null); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java index 05b1eb7111f..3404de98355 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java @@ -366,6 +366,7 @@ public class SimpAnnotationMethodMessageHandler extends AbstractMethodMessageHan } @Override + @Nullable protected SimpMessageMappingInfo getMappingForMethod(Method method, Class handlerType) { MessageMapping messageAnn = AnnotatedElementUtils.findMergedAnnotation(method, MessageMapping.class); if (messageAnn != null) { @@ -438,6 +439,7 @@ public class SimpAnnotationMethodMessageHandler extends AbstractMethodMessageHan } @Override + @Nullable protected String getDestination(Message message) { return SimpMessageHeaderAccessor.getDestination(message.getHeaders()); } @@ -464,6 +466,7 @@ public class SimpAnnotationMethodMessageHandler extends AbstractMethodMessageHan } @Override + @Nullable protected SimpMessageMappingInfo getMatchingMapping(SimpMessageMappingInfo mapping, Message message) { return mapping.getMatchingCondition(message); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/DefaultStompSession.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/DefaultStompSession.java index 9e2836621df..8dc7c624007 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/DefaultStompSession.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/DefaultStompSession.java @@ -632,6 +632,7 @@ public class DefaultStompSession implements ConnectionHandlingStompSession { } @Override + @Nullable public String getSubscriptionId() { return this.headers.getId(); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java index a50f87d79e3..9dc38003786 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java @@ -181,6 +181,8 @@ public class StompHeaderAccessor extends SimpMessageHeaderAccessor { } // Redeclared for visibility within simp.stomp + @Override + @Nullable protected Map> getNativeHeaders() { return super.getNativeHeaders(); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaders.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaders.java index 3993f1a888c..6549e76f740 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaders.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaders.java @@ -399,6 +399,7 @@ public class StompHeaders implements MultiValueMap, Serializable * @return the first header value, or {@code null} if none */ @Override + @Nullable public String getFirst(String headerName) { List headerValues = headers.get(headerName); return headerValues != null ? headerValues.get(0) : null; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/DefaultUserDestinationResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/DefaultUserDestinationResolver.java index ed141b94477..ce369aa6eaf 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/DefaultUserDestinationResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/DefaultUserDestinationResolver.java @@ -120,6 +120,7 @@ public class DefaultUserDestinationResolver implements UserDestinationResolver { @Override + @Nullable public UserDestinationResult resolveDestination(Message message) { ParseResult parseResult = parse(message); if (parseResult == null) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java index f76ba0c7661..e7744e3e77c 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java @@ -115,6 +115,7 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati // SimpUserRegistry methods @Override + @Nullable public SimpUser getUser(String userName) { // Prefer remote registries due to cross-server SessionLookup for (UserRegistrySnapshot registry : this.remoteRegistries.values()) { @@ -321,6 +322,7 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati } @Override + @Nullable public SimpSession getSession(String sessionId) { if (this.sessionLookup != null) { return this.sessionLookup.findSessions(getName()).get(sessionId); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/MonoToListenableFutureAdapter.java b/spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/MonoToListenableFutureAdapter.java index 0eb76b88654..698a8edf03d 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/MonoToListenableFutureAdapter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/MonoToListenableFutureAdapter.java @@ -35,6 +35,7 @@ class MonoToListenableFutureAdapter extends AbstractMonoToListenableFutureAda } @Override + @Nullable protected T adapt(@Nullable T result) { return result; } diff --git a/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateExceptionTranslator.java b/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateExceptionTranslator.java index 4e70b21e4fe..ab48f5695ef 100644 --- a/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateExceptionTranslator.java +++ b/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateExceptionTranslator.java @@ -22,6 +22,7 @@ import org.hibernate.HibernateException; import org.springframework.dao.DataAccessException; import org.springframework.dao.support.PersistenceExceptionTranslator; +import org.springframework.lang.Nullable; import org.springframework.orm.jpa.EntityManagerFactoryUtils; /** @@ -44,6 +45,7 @@ import org.springframework.orm.jpa.EntityManagerFactoryUtils; public class HibernateExceptionTranslator implements PersistenceExceptionTranslator { @Override + @Nullable public DataAccessException translateExceptionIfPossible(RuntimeException ex) { if (ex instanceof HibernateException) { return convertHibernateAccessException((HibernateException) ex); diff --git a/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateTemplate.java b/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateTemplate.java index 832d7cf5368..fb32d855984 100644 --- a/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateTemplate.java +++ b/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateTemplate.java @@ -328,6 +328,7 @@ public class HibernateTemplate implements HibernateOperations, InitializingBean @Override + @Nullable public T execute(HibernateCallback action) throws DataAccessException { return doExecute(action, false); } @@ -453,11 +454,13 @@ public class HibernateTemplate implements HibernateOperations, InitializingBean //------------------------------------------------------------------------- @Override + @Nullable public T get(Class entityClass, Serializable id) throws DataAccessException { return get(entityClass, id, null); } @Override + @Nullable public T get(final Class entityClass, final Serializable id, @Nullable final LockMode lockMode) throws DataAccessException { @@ -472,11 +475,13 @@ public class HibernateTemplate implements HibernateOperations, InitializingBean } @Override + @Nullable public Object get(String entityName, Serializable id) throws DataAccessException { return get(entityName, id, null); } @Override + @Nullable public Object get(final String entityName, final Serializable id, @Nullable final LockMode lockMode) throws DataAccessException { diff --git a/spring-orm/src/main/java/org/springframework/orm/hibernate5/LocalSessionFactoryBean.java b/spring-orm/src/main/java/org/springframework/orm/hibernate5/LocalSessionFactoryBean.java index a9b68a83018..2709aecbbd7 100644 --- a/spring-orm/src/main/java/org/springframework/orm/hibernate5/LocalSessionFactoryBean.java +++ b/spring-orm/src/main/java/org/springframework/orm/hibernate5/LocalSessionFactoryBean.java @@ -549,6 +549,7 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator @Override + @Nullable public SessionFactory getObject() { return this.sessionFactory; } diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/AbstractEntityManagerFactoryBean.java b/spring-orm/src/main/java/org/springframework/orm/jpa/AbstractEntityManagerFactoryBean.java index c9e7abf1185..c92f3a28429 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/AbstractEntityManagerFactoryBean.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/AbstractEntityManagerFactoryBean.java @@ -495,6 +495,7 @@ public abstract class AbstractEntityManagerFactoryBean implements * @see EntityManagerFactoryUtils#convertJpaAccessExceptionIfPossible */ @Override + @Nullable public DataAccessException translateExceptionIfPossible(RuntimeException ex) { return (this.jpaDialect != null ? this.jpaDialect.translateExceptionIfPossible(ex) : EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(ex)); @@ -522,11 +523,13 @@ public abstract class AbstractEntityManagerFactoryBean implements } @Override + @Nullable public PersistenceUnitInfo getPersistenceUnitInfo() { return null; } @Override + @Nullable public DataSource getDataSource() { return null; } @@ -536,6 +539,7 @@ public abstract class AbstractEntityManagerFactoryBean implements * Return the singleton EntityManagerFactory. */ @Override + @Nullable public EntityManagerFactory getObject() { return this.entityManagerFactory; } diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/DefaultJpaDialect.java b/spring-orm/src/main/java/org/springframework/orm/jpa/DefaultJpaDialect.java index 3b228381f03..241aa924ffd 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/DefaultJpaDialect.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/DefaultJpaDialect.java @@ -57,6 +57,7 @@ public class DefaultJpaDialect implements JpaDialect, Serializable { * @see #cleanupTransaction */ @Override + @Nullable public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition) throws PersistenceException, SQLException, TransactionException { @@ -70,6 +71,7 @@ public class DefaultJpaDialect implements JpaDialect, Serializable { } @Override + @Nullable public Object prepareTransaction(EntityManager entityManager, boolean readOnly, @Nullable String name) throws PersistenceException { @@ -90,6 +92,7 @@ public class DefaultJpaDialect implements JpaDialect, Serializable { * indicating that no JDBC Connection can be provided. */ @Override + @Nullable public ConnectionHandle getJdbcConnection(EntityManager entityManager, boolean readOnly) throws PersistenceException, SQLException { @@ -119,6 +122,7 @@ public class DefaultJpaDialect implements JpaDialect, Serializable { * @see EntityManagerFactoryUtils#convertJpaAccessExceptionIfPossible */ @Override + @Nullable public DataAccessException translateExceptionIfPossible(RuntimeException ex) { return EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(ex); } diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.java b/spring-orm/src/main/java/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.java index ee96c8a2d86..9483e73eb9b 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.java @@ -400,6 +400,7 @@ public class LocalContainerEntityManagerFactoryBean extends AbstractEntityManage } @Override + @Nullable public String getPersistenceUnitName() { if (this.persistenceUnitInfo != null) { return this.persistenceUnitInfo.getPersistenceUnitName(); diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/support/SharedEntityManagerBean.java b/spring-orm/src/main/java/org/springframework/orm/jpa/support/SharedEntityManagerBean.java index df68fab2a53..b82af777c69 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/support/SharedEntityManagerBean.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/support/SharedEntityManagerBean.java @@ -109,6 +109,7 @@ public class SharedEntityManagerBean extends EntityManagerFactoryAccessor @Override + @Nullable public EntityManager getObject() { return this.shared; } diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/AbstractJpaVendorAdapter.java b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/AbstractJpaVendorAdapter.java index 20bb9a5f1cd..269d205cf54 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/AbstractJpaVendorAdapter.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/AbstractJpaVendorAdapter.java @@ -118,16 +118,19 @@ public abstract class AbstractJpaVendorAdapter implements JpaVendorAdapter { @Override + @Nullable public String getPersistenceProviderRootPackage() { return null; } @Override + @Nullable public Map getJpaPropertyMap() { return null; } @Override + @Nullable public JpaDialect getJpaDialect() { return null; } diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaDialect.java b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaDialect.java index f81b417bc72..0584c059023 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaDialect.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaDialect.java @@ -72,6 +72,7 @@ public class EclipseLinkJpaDialect extends DefaultJpaDialect { @Override + @Nullable public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition) throws PersistenceException, SQLException, TransactionException { diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaDialect.java b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaDialect.java index 1d573433f4a..84cc031dd5e 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaDialect.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaDialect.java @@ -216,6 +216,7 @@ public class HibernateJpaDialect extends DefaultJpaDialect { } @Override + @Nullable public DataAccessException translateExceptionIfPossible(RuntimeException ex) { if (ex instanceof HibernateException) { return convertHibernateAccessException((HibernateException) ex); diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaSessionFactoryBean.java b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaSessionFactoryBean.java index 163d69f890c..3942e7ba320 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaSessionFactoryBean.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaSessionFactoryBean.java @@ -22,6 +22,7 @@ import javax.persistence.EntityManagerFactory; import org.hibernate.SessionFactory; import org.springframework.beans.factory.FactoryBean; +import org.springframework.lang.Nullable; import org.springframework.orm.jpa.EntityManagerFactoryAccessor; import org.springframework.util.Assert; import org.springframework.util.ReflectionUtils; @@ -41,6 +42,7 @@ import org.springframework.util.ReflectionUtils; public class HibernateJpaSessionFactoryBean extends EntityManagerFactoryAccessor implements FactoryBean { @Override + @Nullable public SessionFactory getObject() { EntityManagerFactory emf = getEntityManagerFactory(); Assert.state(emf != null, "EntityManagerFactory must not be null"); diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java b/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java index b0f01a791f4..50dbdfe0ea5 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java @@ -266,6 +266,7 @@ public class MockServletContext implements ServletContext { } @Override + @Nullable public String getMimeType(String filePath) { String extension = StringUtils.getFilenameExtension(filePath); if (this.mimeTypes.containsKey(extension)) { diff --git a/spring-test/src/main/java/org/springframework/test/context/cache/DefaultContextCache.java b/spring-test/src/main/java/org/springframework/test/context/cache/DefaultContextCache.java index a9afcedb81f..61b8a48ce58 100644 --- a/spring-test/src/main/java/org/springframework/test/context/cache/DefaultContextCache.java +++ b/spring-test/src/main/java/org/springframework/test/context/cache/DefaultContextCache.java @@ -118,6 +118,7 @@ public class DefaultContextCache implements ContextCache { * {@inheritDoc} */ @Override + @Nullable public ApplicationContext get(MergedContextConfiguration key) { Assert.notNull(key, "Key must not be null"); ApplicationContext context = this.contextMap.get(key); diff --git a/spring-test/src/main/java/org/springframework/test/context/support/DefaultTestContext.java b/spring-test/src/main/java/org/springframework/test/context/support/DefaultTestContext.java index b383cd695bb..52c868cb108 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/DefaultTestContext.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/DefaultTestContext.java @@ -147,6 +147,7 @@ public class DefaultTestContext implements TestContext { return testMethod; } + @Override @Nullable public final Throwable getTestException() { return this.testException; @@ -172,12 +173,14 @@ public class DefaultTestContext implements TestContext { } @Override + @Nullable public Object getAttribute(String name) { Assert.notNull(name, "Name must not be null"); return this.attributes.get(name); } @Override + @Nullable public Object removeAttribute(String name) { Assert.notNull(name, "Name must not be null"); return this.attributes.remove(name); diff --git a/spring-test/src/main/java/org/springframework/test/context/transaction/TestContextTransactionUtils.java b/spring-test/src/main/java/org/springframework/test/context/transaction/TestContextTransactionUtils.java index 0a62330774f..8847c7beb81 100644 --- a/spring-test/src/main/java/org/springframework/test/context/transaction/TestContextTransactionUtils.java +++ b/spring-test/src/main/java/org/springframework/test/context/transaction/TestContextTransactionUtils.java @@ -251,6 +251,7 @@ public abstract class TestContextTransactionUtils { } @Override + @Nullable public String getName() { return this.name; } diff --git a/spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainerContextCustomizerFactory.java b/spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainerContextCustomizerFactory.java index c76959c35a4..4edd9fcb57b 100644 --- a/spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainerContextCustomizerFactory.java +++ b/spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainerContextCustomizerFactory.java @@ -20,6 +20,7 @@ import java.util.List; import org.springframework.beans.BeanUtils; import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.lang.Nullable; import org.springframework.test.context.ContextConfigurationAttributes; import org.springframework.test.context.ContextCustomizer; import org.springframework.test.context.ContextCustomizerFactory; @@ -46,6 +47,7 @@ class MockServerContainerContextCustomizerFactory implements ContextCustomizerFa @Override + @Nullable public ContextCustomizer createContextCustomizer(Class testClass, List configAttributes) { diff --git a/spring-test/src/main/java/org/springframework/test/web/reactive/server/FluxExchangeResult.java b/spring-test/src/main/java/org/springframework/test/web/reactive/server/FluxExchangeResult.java index 55e4af72aab..90e33d9aea0 100644 --- a/spring-test/src/main/java/org/springframework/test/web/reactive/server/FluxExchangeResult.java +++ b/spring-test/src/main/java/org/springframework/test/web/reactive/server/FluxExchangeResult.java @@ -21,6 +21,8 @@ import java.time.Duration; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import org.springframework.lang.Nullable; + /** * {@code ExchangeResult} variant with the response body decoded as * {@code Flux} but not yet consumed. @@ -87,6 +89,7 @@ public class FluxExchangeResult extends ExchangeResult { * via {@code getResponseBody.ignoreElements()}. */ @Override + @Nullable public byte[] getResponseBodyContent() { return this.body.ignoreElements() .timeout(this.timeout, Mono.error(TIMEOUT_ERROR)) diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcConfigurerAdapter.java b/spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcConfigurerAdapter.java index b5a67d1a869..95c6c216a64 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcConfigurerAdapter.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcConfigurerAdapter.java @@ -16,6 +16,7 @@ package org.springframework.test.web.servlet.setup; +import org.springframework.lang.Nullable; import org.springframework.test.web.servlet.request.RequestPostProcessor; import org.springframework.web.context.WebApplicationContext; @@ -32,6 +33,7 @@ public abstract class MockMvcConfigurerAdapter implements MockMvcConfigurer { } @Override + @Nullable public RequestPostProcessor beforeMockMvcCreated(ConfigurableMockMvcBuilder builder, WebApplicationContext cxt) { return null; } diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/setup/StandaloneMockMvcBuilder.java b/spring-test/src/main/java/org/springframework/test/web/servlet/setup/StandaloneMockMvcBuilder.java index b74fefee378..622af32aced 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/setup/StandaloneMockMvcBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/setup/StandaloneMockMvcBuilder.java @@ -539,6 +539,7 @@ public class StandaloneMockMvcBuilder extends AbstractMockMvcBuilder A findAnnotationOnBean(String beanName, Class annotationType) throws NoSuchBeanDefinitionException{ @@ -322,6 +323,7 @@ class StubWebApplicationContext implements WebApplicationContext { //--------------------------------------------------------------------- @Override + @Nullable public ClassLoader getClassLoader() { return ClassUtils.getDefaultClassLoader(); } @@ -399,11 +401,13 @@ class StubWebApplicationContext implements WebApplicationContext { } @Override + @Nullable public Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName) { throw new UnsupportedOperationException("Dependency resolution not supported"); } @Override + @Nullable public Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName, @Nullable Set autowiredBeanNames, @Nullable TypeConverter typeConverter) { throw new UnsupportedOperationException("Dependency resolution not supported"); diff --git a/spring-tx/src/main/java/org/springframework/dao/support/ChainedPersistenceExceptionTranslator.java b/spring-tx/src/main/java/org/springframework/dao/support/ChainedPersistenceExceptionTranslator.java index 9c09bd00d99..32d53f2994a 100644 --- a/spring-tx/src/main/java/org/springframework/dao/support/ChainedPersistenceExceptionTranslator.java +++ b/spring-tx/src/main/java/org/springframework/dao/support/ChainedPersistenceExceptionTranslator.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; import org.springframework.dao.DataAccessException; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -54,6 +55,7 @@ public class ChainedPersistenceExceptionTranslator implements PersistenceExcepti @Override + @Nullable public DataAccessException translateExceptionIfPossible(RuntimeException ex) { for (PersistenceExceptionTranslator pet : this.delegates) { DataAccessException translatedDex = pet.translateExceptionIfPossible(ex); diff --git a/spring-tx/src/main/java/org/springframework/dao/support/DataAccessUtils.java b/spring-tx/src/main/java/org/springframework/dao/support/DataAccessUtils.java index a17de4b3f3f..52a24dbe27e 100644 --- a/spring-tx/src/main/java/org/springframework/dao/support/DataAccessUtils.java +++ b/spring-tx/src/main/java/org/springframework/dao/support/DataAccessUtils.java @@ -67,6 +67,7 @@ public abstract class DataAccessUtils { * @throws EmptyResultDataAccessException if no element at all * has been found in the given Collection */ + @Nullable public static T requiredSingleResult(@Nullable Collection results) throws IncorrectResultSizeDataAccessException { int size = (results != null ? results.size() : 0); if (size == 0) { diff --git a/spring-tx/src/main/java/org/springframework/jca/cci/core/CciTemplate.java b/spring-tx/src/main/java/org/springframework/jca/cci/core/CciTemplate.java index 0c3a0af8bba..7d9343caa25 100644 --- a/spring-tx/src/main/java/org/springframework/jca/cci/core/CciTemplate.java +++ b/spring-tx/src/main/java/org/springframework/jca/cci/core/CciTemplate.java @@ -204,6 +204,7 @@ public class CciTemplate implements CciOperations { @Override + @Nullable public T execute(ConnectionCallback action) throws DataAccessException { Assert.notNull(action, "Callback object must not be null"); ConnectionFactory connectionFactory = obtainConnectionFactory(); @@ -226,6 +227,7 @@ public class CciTemplate implements CciOperations { } @Override + @Nullable public T execute(final InteractionCallback action) throws DataAccessException { Assert.notNull(action, "Callback object must not be null"); return execute((ConnectionCallback) (connection, connectionFactory) -> { @@ -240,6 +242,7 @@ public class CciTemplate implements CciOperations { } @Override + @Nullable public Record execute(InteractionSpec spec, Record inputRecord) throws DataAccessException { return doExecute(spec, inputRecord, null, new SimpleRecordExtractor()); } diff --git a/spring-tx/src/main/java/org/springframework/jca/support/LocalConnectionFactoryBean.java b/spring-tx/src/main/java/org/springframework/jca/support/LocalConnectionFactoryBean.java index 70c1b13c3f9..88badca7f7c 100644 --- a/spring-tx/src/main/java/org/springframework/jca/support/LocalConnectionFactoryBean.java +++ b/spring-tx/src/main/java/org/springframework/jca/support/LocalConnectionFactoryBean.java @@ -128,6 +128,7 @@ public class LocalConnectionFactoryBean implements FactoryBean, Initiali @Override + @Nullable public Object getObject() { return this.connectionFactory; } diff --git a/spring-tx/src/main/java/org/springframework/jca/support/ResourceAdapterFactoryBean.java b/spring-tx/src/main/java/org/springframework/jca/support/ResourceAdapterFactoryBean.java index 23f511f3fee..319224c8b60 100644 --- a/spring-tx/src/main/java/org/springframework/jca/support/ResourceAdapterFactoryBean.java +++ b/spring-tx/src/main/java/org/springframework/jca/support/ResourceAdapterFactoryBean.java @@ -129,6 +129,7 @@ public class ResourceAdapterFactoryBean implements FactoryBean, @Override + @Nullable public ResourceAdapter getObject() { return this.resourceAdapter; } diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java index 53c23a14a4b..3eddcea8c23 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java @@ -130,11 +130,13 @@ public class AnnotationTransactionAttributeSource extends AbstractFallbackTransa @Override + @Nullable protected TransactionAttribute findTransactionAttribute(Method method) { return determineTransactionAttribute(method); } @Override + @Nullable protected TransactionAttribute findTransactionAttribute(Class clazz) { return determineTransactionAttribute(clazz); } diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/Ejb3TransactionAnnotationParser.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/Ejb3TransactionAnnotationParser.java index c7e20cf1dc4..7e989876f85 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/Ejb3TransactionAnnotationParser.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/Ejb3TransactionAnnotationParser.java @@ -21,6 +21,7 @@ import java.lang.reflect.AnnotatedElement; import javax.ejb.ApplicationException; import javax.ejb.TransactionAttributeType; +import org.springframework.lang.Nullable; import org.springframework.transaction.interceptor.DefaultTransactionAttribute; import org.springframework.transaction.interceptor.TransactionAttribute; @@ -35,6 +36,7 @@ import org.springframework.transaction.interceptor.TransactionAttribute; public class Ejb3TransactionAnnotationParser implements TransactionAnnotationParser, Serializable { @Override + @Nullable public TransactionAttribute parseTransactionAnnotation(AnnotatedElement ae) { javax.ejb.TransactionAttribute ann = ae.getAnnotation(javax.ejb.TransactionAttribute.class); if (ann != null) { diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/JtaTransactionAnnotationParser.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/JtaTransactionAnnotationParser.java index 9cb041b272c..0d4901b918a 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/JtaTransactionAnnotationParser.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/JtaTransactionAnnotationParser.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.lang.Nullable; import org.springframework.transaction.interceptor.NoRollbackRuleAttribute; import org.springframework.transaction.interceptor.RollbackRuleAttribute; import org.springframework.transaction.interceptor.RuleBasedTransactionAttribute; @@ -38,6 +39,7 @@ import org.springframework.transaction.interceptor.TransactionAttribute; public class JtaTransactionAnnotationParser implements TransactionAnnotationParser, Serializable { @Override + @Nullable public TransactionAttribute parseTransactionAnnotation(AnnotatedElement ae) { AnnotationAttributes attributes = AnnotatedElementUtils.getMergedAnnotationAttributes(ae, javax.transaction.Transactional.class); diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/SpringTransactionAnnotationParser.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/SpringTransactionAnnotationParser.java index f356afac1e0..92a95709994 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/SpringTransactionAnnotationParser.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/SpringTransactionAnnotationParser.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.lang.Nullable; import org.springframework.transaction.interceptor.NoRollbackRuleAttribute; import org.springframework.transaction.interceptor.RollbackRuleAttribute; import org.springframework.transaction.interceptor.RuleBasedTransactionAttribute; @@ -38,6 +39,7 @@ import org.springframework.transaction.interceptor.TransactionAttribute; public class SpringTransactionAnnotationParser implements TransactionAnnotationParser, Serializable { @Override + @Nullable public TransactionAttribute parseTransactionAnnotation(AnnotatedElement ae) { AnnotationAttributes attributes = AnnotatedElementUtils.findMergedAnnotationAttributes( ae, Transactional.class, false, false); diff --git a/spring-tx/src/main/java/org/springframework/transaction/config/AnnotationDrivenBeanDefinitionParser.java b/spring-tx/src/main/java/org/springframework/transaction/config/AnnotationDrivenBeanDefinitionParser.java index ce3300aafac..eb827bf6549 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/config/AnnotationDrivenBeanDefinitionParser.java +++ b/spring-tx/src/main/java/org/springframework/transaction/config/AnnotationDrivenBeanDefinitionParser.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.parsing.CompositeComponentDefinition; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.lang.Nullable; import org.springframework.transaction.event.TransactionalEventListenerFactory; import org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor; import org.springframework.transaction.interceptor.TransactionInterceptor; @@ -56,6 +57,7 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { * with the container as necessary. */ @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { registerTransactionalEventListenerFactory(parserContext); String mode = element.getAttribute("mode"); diff --git a/spring-tx/src/main/java/org/springframework/transaction/config/JtaTransactionManagerFactoryBean.java b/spring-tx/src/main/java/org/springframework/transaction/config/JtaTransactionManagerFactoryBean.java index 4fe53cd7820..3d1fbb3638f 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/config/JtaTransactionManagerFactoryBean.java +++ b/spring-tx/src/main/java/org/springframework/transaction/config/JtaTransactionManagerFactoryBean.java @@ -70,6 +70,7 @@ public class JtaTransactionManagerFactoryBean implements FactoryBean targetClass) { if (method.getDeclaringClass() == Object.class) { return null; diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/BeanFactoryTransactionAttributeSourceAdvisor.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/BeanFactoryTransactionAttributeSourceAdvisor.java index ba034b064f1..50df3aeb38e 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/BeanFactoryTransactionAttributeSourceAdvisor.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/BeanFactoryTransactionAttributeSourceAdvisor.java @@ -39,6 +39,7 @@ public class BeanFactoryTransactionAttributeSourceAdvisor extends AbstractBeanFa private final TransactionAttributeSourcePointcut pointcut = new TransactionAttributeSourcePointcut() { @Override + @Nullable protected TransactionAttributeSource getTransactionAttributeSource() { return transactionAttributeSource; } diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/DelegatingTransactionAttribute.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/DelegatingTransactionAttribute.java index 84db321374c..26422009e41 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/DelegatingTransactionAttribute.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/DelegatingTransactionAttribute.java @@ -18,6 +18,7 @@ package org.springframework.transaction.interceptor; import java.io.Serializable; +import org.springframework.lang.Nullable; import org.springframework.transaction.support.DelegatingTransactionDefinition; /** @@ -47,6 +48,7 @@ public abstract class DelegatingTransactionAttribute extends DelegatingTransacti @Override + @Nullable public String getQualifier() { return this.targetAttribute.getQualifier(); } diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/MatchAlwaysTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/MatchAlwaysTransactionAttributeSource.java index 15941dedf22..b9b4a7ef12c 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/MatchAlwaysTransactionAttributeSource.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/MatchAlwaysTransactionAttributeSource.java @@ -53,6 +53,7 @@ public class MatchAlwaysTransactionAttributeSource implements TransactionAttribu @Override + @Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable Class targetClass) { return (ClassUtils.isUserLevelMethod(method) ? this.transactionAttribute : null); } diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/MethodMapTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/MethodMapTransactionAttributeSource.java index 252dab3984f..66dfb28398d 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/MethodMapTransactionAttributeSource.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/MethodMapTransactionAttributeSource.java @@ -207,6 +207,7 @@ public class MethodMapTransactionAttributeSource @Override + @Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable Class targetClass) { if (this.eagerlyInitialized) { return this.transactionAttributeMap.get(method); diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/NameMatchTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/NameMatchTransactionAttributeSource.java index 9edc18d400a..43a239ab484 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/NameMatchTransactionAttributeSource.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/NameMatchTransactionAttributeSource.java @@ -99,6 +99,7 @@ public class NameMatchTransactionAttributeSource implements TransactionAttribute @Override + @Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable Class targetClass) { if (!ClassUtils.isUserLevelMethod(method)) { return null; diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java index 07e17055bd8..1b6726d160a 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java @@ -448,6 +448,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init if (txAttr != null && txAttr.getName() == null) { txAttr = new DelegatingTransactionAttribute(txAttr) { @Override + @Nullable public String getName() { return joinpointIdentification; } diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAttributeSourceAdvisor.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAttributeSourceAdvisor.java index bf91b50c17b..2d5489c3c7e 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAttributeSourceAdvisor.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAttributeSourceAdvisor.java @@ -45,6 +45,7 @@ public class TransactionAttributeSourceAdvisor extends AbstractPointcutAdvisor { private final TransactionAttributeSourcePointcut pointcut = new TransactionAttributeSourcePointcut() { @Override + @Nullable protected TransactionAttributeSource getTransactionAttributeSource() { return (transactionInterceptor != null ? transactionInterceptor.getTransactionAttributeSource() : null); } diff --git a/spring-tx/src/main/java/org/springframework/transaction/jta/WebLogicJtaTransactionManager.java b/spring-tx/src/main/java/org/springframework/transaction/jta/WebLogicJtaTransactionManager.java index ef9ad33c4af..4d8eaaf307c 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/jta/WebLogicJtaTransactionManager.java +++ b/spring-tx/src/main/java/org/springframework/transaction/jta/WebLogicJtaTransactionManager.java @@ -113,6 +113,7 @@ public class WebLogicJtaTransactionManager extends JtaTransactionManager { } @Override + @Nullable protected UserTransaction retrieveUserTransaction() throws TransactionSystemException { Object helper = loadWebLogicTransactionHelper(); try { @@ -131,6 +132,7 @@ public class WebLogicJtaTransactionManager extends JtaTransactionManager { } @Override + @Nullable protected TransactionManager retrieveTransactionManager() throws TransactionSystemException { Object helper = loadWebLogicTransactionHelper(); try { diff --git a/spring-tx/src/main/java/org/springframework/transaction/jta/WebSphereUowTransactionManager.java b/spring-tx/src/main/java/org/springframework/transaction/jta/WebSphereUowTransactionManager.java index 9e334ae79b7..039d15297e7 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/jta/WebSphereUowTransactionManager.java +++ b/spring-tx/src/main/java/org/springframework/transaction/jta/WebSphereUowTransactionManager.java @@ -229,6 +229,7 @@ public class WebSphereUowTransactionManager extends JtaTransactionManager @Override + @Nullable public T execute(@Nullable TransactionDefinition definition, TransactionCallback callback) throws TransactionException { diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/DelegatingTransactionDefinition.java b/spring-tx/src/main/java/org/springframework/transaction/support/DelegatingTransactionDefinition.java index e05c4e27844..481c9e6a487 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/DelegatingTransactionDefinition.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/DelegatingTransactionDefinition.java @@ -18,6 +18,7 @@ package org.springframework.transaction.support; import java.io.Serializable; +import org.springframework.lang.Nullable; import org.springframework.transaction.TransactionDefinition; import org.springframework.util.Assert; @@ -67,6 +68,7 @@ public abstract class DelegatingTransactionDefinition implements TransactionDefi } @Override + @Nullable public String getName() { return this.targetDefinition.getName(); } diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/SimpleTransactionScope.java b/spring-tx/src/main/java/org/springframework/transaction/support/SimpleTransactionScope.java index c2b62cefd56..e51030a52b4 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/SimpleTransactionScope.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/SimpleTransactionScope.java @@ -22,6 +22,7 @@ import java.util.Map; import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.config.Scope; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -60,6 +61,7 @@ public class SimpleTransactionScope implements Scope { } @Override + @Nullable public Object remove(String name) { ScopedObjectsHolder scopedObjects = (ScopedObjectsHolder) TransactionSynchronizationManager.getResource(this); if (scopedObjects != null) { @@ -80,11 +82,13 @@ public class SimpleTransactionScope implements Scope { } @Override + @Nullable public Object resolveContextualObject(String key) { return null; } @Override + @Nullable public String getConversationId() { return TransactionSynchronizationManager.getCurrentTransactionName(); } diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionCallbackWithoutResult.java b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionCallbackWithoutResult.java index 8088bc2870b..facf83cc6a6 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionCallbackWithoutResult.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionCallbackWithoutResult.java @@ -16,6 +16,7 @@ package org.springframework.transaction.support; +import org.springframework.lang.Nullable; import org.springframework.transaction.TransactionStatus; /** @@ -30,6 +31,7 @@ import org.springframework.transaction.TransactionStatus; public abstract class TransactionCallbackWithoutResult implements TransactionCallback { @Override + @Nullable public final Object doInTransaction(TransactionStatus status) { doInTransactionWithoutResult(status); return null; diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionTemplate.java b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionTemplate.java index 05da1745350..f4465f7f55a 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionTemplate.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionTemplate.java @@ -126,6 +126,7 @@ public class TransactionTemplate extends DefaultTransactionDefinition @Override + @Nullable public T execute(TransactionCallback action) throws TransactionException { Assert.state(this.transactionManager != null, "No PlatformTransactionManager set"); diff --git a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java index 8349df24a11..5ef7be1f677 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java +++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java @@ -1391,6 +1391,7 @@ public class HttpHeaders implements MultiValueMap, Serializable * @return the first header value, or {@code null} if none */ @Override + @Nullable public String getFirst(String headerName) { List headerValues = this.headers.get(headerName); return (headerValues != null ? headerValues.get(0) : null); diff --git a/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestWrapper.java b/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestWrapper.java index 62a85c058db..2926031364b 100644 --- a/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestWrapper.java +++ b/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestWrapper.java @@ -21,6 +21,7 @@ import java.net.URI; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; +import org.springframework.lang.Nullable; import org.springframework.util.StreamUtils; /** @@ -40,6 +41,7 @@ final class BufferingClientHttpRequestWrapper extends AbstractBufferingClientHtt @Override + @Nullable public HttpMethod getMethod() { return this.request.getMethod(); } diff --git a/spring-web/src/main/java/org/springframework/http/client/support/HttpRequestWrapper.java b/spring-web/src/main/java/org/springframework/http/client/support/HttpRequestWrapper.java index e46e7456e16..e8f6fd4367e 100644 --- a/spring-web/src/main/java/org/springframework/http/client/support/HttpRequestWrapper.java +++ b/spring-web/src/main/java/org/springframework/http/client/support/HttpRequestWrapper.java @@ -21,6 +21,7 @@ import java.net.URI; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpRequest; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -58,6 +59,7 @@ public class HttpRequestWrapper implements HttpRequest { * Return the method of the wrapped request. */ @Override + @Nullable public HttpMethod getMethod() { return this.request.getMethod(); } diff --git a/spring-web/src/main/java/org/springframework/http/client/support/ProxyFactoryBean.java b/spring-web/src/main/java/org/springframework/http/client/support/ProxyFactoryBean.java index 2029ab409dd..94c40f4a82b 100644 --- a/spring-web/src/main/java/org/springframework/http/client/support/ProxyFactoryBean.java +++ b/spring-web/src/main/java/org/springframework/http/client/support/ProxyFactoryBean.java @@ -83,6 +83,7 @@ public class ProxyFactoryBean implements FactoryBean, InitializingBean { @Override + @Nullable public Proxy getObject() { return this.proxy; } diff --git a/spring-web/src/main/java/org/springframework/http/converter/ResourceHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/ResourceHttpMessageConverter.java index 8890e10496b..332030472ce 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/ResourceHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/ResourceHttpMessageConverter.java @@ -90,6 +90,7 @@ public class ResourceHttpMessageConverter extends AbstractHttpMessageConverter, InitializingBean { * Return the created Gson instance. */ @Override + @Nullable public Gson getObject() { return this.gson; } diff --git a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java index f52578515bb..7396b933afe 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java +++ b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java @@ -466,6 +466,7 @@ public class Jackson2ObjectMapperFactoryBean implements FactoryBean getFieldType(String field) { return this.source.getFieldType(field); } diff --git a/spring-web/src/main/java/org/springframework/web/bind/support/DefaultSessionAttributeStore.java b/spring-web/src/main/java/org/springframework/web/bind/support/DefaultSessionAttributeStore.java index 1102bdbf1d2..849c2be6dc4 100644 --- a/spring-web/src/main/java/org/springframework/web/bind/support/DefaultSessionAttributeStore.java +++ b/spring-web/src/main/java/org/springframework/web/bind/support/DefaultSessionAttributeStore.java @@ -57,6 +57,7 @@ public class DefaultSessionAttributeStore implements SessionAttributeStore { } @Override + @Nullable public Object retrieveAttribute(WebRequest request, String attributeName) { Assert.notNull(request, "WebRequest must not be null"); Assert.notNull(attributeName, "Attribute name must not be null"); diff --git a/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeBindException.java b/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeBindException.java index badc737d51c..a14e06d51ae 100644 --- a/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeBindException.java +++ b/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeBindException.java @@ -157,6 +157,7 @@ public class WebExchangeBindException extends ServerWebInputException implements } @Override + @Nullable public ObjectError getGlobalError() { return this.bindingResult.getGlobalError(); } @@ -177,6 +178,7 @@ public class WebExchangeBindException extends ServerWebInputException implements } @Override + @Nullable public FieldError getFieldError() { return this.bindingResult.getFieldError(); } @@ -197,16 +199,19 @@ public class WebExchangeBindException extends ServerWebInputException implements } @Override + @Nullable public FieldError getFieldError(String field) { return this.bindingResult.getFieldError(field); } @Override + @Nullable public Object getFieldValue(String field) { return this.bindingResult.getFieldValue(field); } @Override + @Nullable public Class getFieldType(String field) { return this.bindingResult.getFieldType(field); } @@ -222,17 +227,20 @@ public class WebExchangeBindException extends ServerWebInputException implements } @Override + @Nullable public Object getRawFieldValue(String field) { return this.bindingResult.getRawFieldValue(field); } @Override @SuppressWarnings("rawtypes") + @Nullable public PropertyEditor findEditor(@Nullable String field, @Nullable Class valueType) { return this.bindingResult.findEditor(field, valueType); } @Override + @Nullable public PropertyEditorRegistry getPropertyEditorRegistry() { return this.bindingResult.getPropertyEditorRegistry(); } diff --git a/spring-web/src/main/java/org/springframework/web/client/AsyncRestTemplate.java b/spring-web/src/main/java/org/springframework/web/client/AsyncRestTemplate.java index d03be0125d3..79188ce8e24 100644 --- a/spring-web/src/main/java/org/springframework/web/client/AsyncRestTemplate.java +++ b/spring-web/src/main/java/org/springframework/web/client/AsyncRestTemplate.java @@ -297,6 +297,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I private static ListenableFuture adaptToLocationHeader(ListenableFuture future) { return new ListenableFutureAdapter(future) { @Override + @Nullable protected URI adapt(HttpHeaders headers) throws ExecutionException { return headers.getLocation(); } @@ -607,6 +608,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I } @Override + @Nullable protected final T adapt(ClientHttpResponse response) throws ExecutionException { try { if (!getErrorHandler().hasError(response)) { @@ -660,6 +662,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I return request.getBody(); } @Override + @Nullable public HttpMethod getMethod() { return request.getMethod(); } diff --git a/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java b/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java index d1c8de28a1a..eed40af3575 100644 --- a/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java +++ b/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java @@ -311,6 +311,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat // GET @Override + @Nullable public T getForObject(String url, Class responseType, Object... uriVariables) throws RestClientException { RequestCallback requestCallback = acceptHeaderRequestCallback(responseType); HttpMessageConverterExtractor responseExtractor = @@ -319,6 +320,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public T getForObject(String url, Class responseType, Map uriVariables) throws RestClientException { RequestCallback requestCallback = acceptHeaderRequestCallback(responseType); HttpMessageConverterExtractor responseExtractor = @@ -327,6 +329,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public T getForObject(URI url, Class responseType) throws RestClientException { RequestCallback requestCallback = acceptHeaderRequestCallback(responseType); HttpMessageConverterExtractor responseExtractor = @@ -381,6 +384,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat // POST @Override + @Nullable public URI postForLocation(String url, @Nullable Object request, Object... uriVariables) throws RestClientException { RequestCallback requestCallback = httpEntityCallback(request); HttpHeaders headers = execute(url, HttpMethod.POST, requestCallback, headersExtractor(), uriVariables); @@ -388,6 +392,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public URI postForLocation(String url, @Nullable Object request, Map uriVariables) throws RestClientException { RequestCallback requestCallback = httpEntityCallback(request); HttpHeaders headers = execute(url, HttpMethod.POST, requestCallback, headersExtractor(), uriVariables); @@ -395,6 +400,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public URI postForLocation(URI url, @Nullable Object request) throws RestClientException { RequestCallback requestCallback = httpEntityCallback(request); HttpHeaders headers = execute(url, HttpMethod.POST, requestCallback, headersExtractor()); @@ -402,6 +408,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public T postForObject(String url, @Nullable Object request, Class responseType, Object... uriVariables) throws RestClientException { @@ -412,6 +419,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public T postForObject(String url, @Nullable Object request, Class responseType, Map uriVariables) throws RestClientException { @@ -422,6 +430,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public T postForObject(URI url, @Nullable Object request, Class responseType) throws RestClientException { RequestCallback requestCallback = httpEntityCallback(request, responseType); HttpMessageConverterExtractor responseExtractor = @@ -479,6 +488,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat // PATCH @Override + @Nullable public T patchForObject(String url, @Nullable Object request, Class responseType, Object... uriVariables) throws RestClientException { @@ -489,6 +499,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public T patchForObject(String url, @Nullable Object request, Class responseType, Map uriVariables) throws RestClientException { @@ -499,6 +510,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public T patchForObject(URI url, @Nullable Object request, Class responseType) throws RestClientException { @@ -637,6 +649,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat // general execution @Override + @Nullable public T execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor responseExtractor, Object... uriVariables) throws RestClientException { @@ -645,6 +658,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public T execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor responseExtractor, Map uriVariables) throws RestClientException { @@ -653,6 +667,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } @Override + @Nullable public T execute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor responseExtractor) throws RestClientException { diff --git a/spring-web/src/main/java/org/springframework/web/context/request/AbstractRequestAttributesScope.java b/spring-web/src/main/java/org/springframework/web/context/request/AbstractRequestAttributesScope.java index 6c7285d7979..0a16dee7e57 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/AbstractRequestAttributesScope.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/AbstractRequestAttributesScope.java @@ -18,6 +18,7 @@ package org.springframework.web.context.request; import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.config.Scope; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -58,6 +59,7 @@ public abstract class AbstractRequestAttributesScope implements Scope { } @Override + @Nullable public Object remove(String name) { RequestAttributes attributes = RequestContextHolder.currentRequestAttributes(); Object scopedObject = attributes.getAttribute(name, getScope()); @@ -77,6 +79,7 @@ public abstract class AbstractRequestAttributesScope implements Scope { } @Override + @Nullable public Object resolveContextualObject(String key) { RequestAttributes attributes = RequestContextHolder.currentRequestAttributes(); return attributes.resolveReference(key); diff --git a/spring-web/src/main/java/org/springframework/web/context/request/FacesWebRequest.java b/spring-web/src/main/java/org/springframework/web/context/request/FacesWebRequest.java index 96daadd01a3..bcda6fa2ff1 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/FacesWebRequest.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/FacesWebRequest.java @@ -82,11 +82,13 @@ public class FacesWebRequest extends FacesRequestAttributes implements NativeWeb @Override + @Nullable public String getHeader(String headerName) { return getExternalContext().getRequestHeaderMap().get(headerName); } @Override + @Nullable public String[] getHeaderValues(String headerName) { return getExternalContext().getRequestHeaderValuesMap().get(headerName); } @@ -97,6 +99,7 @@ public class FacesWebRequest extends FacesRequestAttributes implements NativeWeb } @Override + @Nullable public String getParameter(String paramName) { return getExternalContext().getRequestParameterMap().get(paramName); } @@ -107,6 +110,7 @@ public class FacesWebRequest extends FacesRequestAttributes implements NativeWeb } @Override + @Nullable public String[] getParameterValues(String paramName) { return getExternalContext().getRequestParameterValuesMap().get(paramName); } @@ -127,11 +131,13 @@ public class FacesWebRequest extends FacesRequestAttributes implements NativeWeb } @Override + @Nullable public String getRemoteUser() { return getFacesContext().getExternalContext().getRemoteUser(); } @Override + @Nullable public Principal getUserPrincipal() { return getFacesContext().getExternalContext().getUserPrincipal(); } diff --git a/spring-web/src/main/java/org/springframework/web/context/request/RequestScope.java b/spring-web/src/main/java/org/springframework/web/context/request/RequestScope.java index 92b36f84ae8..46f17b50bd5 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/RequestScope.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/RequestScope.java @@ -16,6 +16,8 @@ package org.springframework.web.context.request; +import org.springframework.lang.Nullable; + /** * Request-backed {@link org.springframework.beans.factory.config.Scope} * implementation. @@ -47,6 +49,7 @@ public class RequestScope extends AbstractRequestAttributesScope { * returns {@code null}. */ @Override + @Nullable public String getConversationId() { return null; } diff --git a/spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java b/spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java index 42dd0140262..0161000aac0 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java @@ -132,11 +132,13 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ } @Override + @Nullable public String getHeader(String headerName) { return getRequest().getHeader(headerName); } @Override + @Nullable public String[] getHeaderValues(String headerName) { String[] headerValues = StringUtils.toStringArray(getRequest().getHeaders(headerName)); return (!ObjectUtils.isEmpty(headerValues) ? headerValues : null); @@ -148,11 +150,13 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ } @Override + @Nullable public String getParameter(String paramName) { return getRequest().getParameter(paramName); } @Override + @Nullable public String[] getParameterValues(String paramName) { return getRequest().getParameterValues(paramName); } @@ -178,11 +182,13 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ } @Override + @Nullable public String getRemoteUser() { return getRequest().getRemoteUser(); } @Override + @Nullable public Principal getUserPrincipal() { return getRequest().getUserPrincipal(); } diff --git a/spring-web/src/main/java/org/springframework/web/context/request/SessionScope.java b/spring-web/src/main/java/org/springframework/web/context/request/SessionScope.java index 8d6a6e5fea7..52b799539f5 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/SessionScope.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/SessionScope.java @@ -17,6 +17,7 @@ package org.springframework.web.context.request; import org.springframework.beans.factory.ObjectFactory; +import org.springframework.lang.Nullable; /** * Session-backed {@link org.springframework.beans.factory.config.Scope} @@ -58,6 +59,7 @@ public class SessionScope extends AbstractRequestAttributesScope { } @Override + @Nullable public Object remove(String name) { Object mutex = RequestContextHolder.currentRequestAttributes().getSessionMutex(); synchronized (mutex) { diff --git a/spring-web/src/main/java/org/springframework/web/context/request/async/DeferredResult.java b/spring-web/src/main/java/org/springframework/web/context/request/async/DeferredResult.java index 71b100304ae..2b4551caae6 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/async/DeferredResult.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/async/DeferredResult.java @@ -56,6 +56,7 @@ public class DeferredResult { private static final Log logger = LogFactory.getLog(DeferredResult.class); + @Nullable private final Long timeout; private final Object timeoutResult; @@ -138,6 +139,7 @@ public class DeferredResult { /** * Return the configured timeout value in milliseconds. */ + @Nullable final Long getTimeoutValue() { return this.timeout; } diff --git a/spring-web/src/main/java/org/springframework/web/context/support/AbstractRefreshableWebApplicationContext.java b/spring-web/src/main/java/org/springframework/web/context/support/AbstractRefreshableWebApplicationContext.java index e6f4266cab7..9911abdaffc 100644 --- a/spring-web/src/main/java/org/springframework/web/context/support/AbstractRefreshableWebApplicationContext.java +++ b/spring-web/src/main/java/org/springframework/web/context/support/AbstractRefreshableWebApplicationContext.java @@ -214,6 +214,7 @@ public abstract class AbstractRefreshableWebApplicationContext extends AbstractR } @Override + @Nullable public Theme getTheme(String themeName) { Assert.state(this.themeSource != null, "No ThemeSource available"); return this.themeSource.getTheme(themeName); diff --git a/spring-web/src/main/java/org/springframework/web/context/support/ContextExposingHttpServletRequest.java b/spring-web/src/main/java/org/springframework/web/context/support/ContextExposingHttpServletRequest.java index 34ccda3b29d..86244d7abb7 100644 --- a/spring-web/src/main/java/org/springframework/web/context/support/ContextExposingHttpServletRequest.java +++ b/spring-web/src/main/java/org/springframework/web/context/support/ContextExposingHttpServletRequest.java @@ -80,6 +80,7 @@ public class ContextExposingHttpServletRequest extends HttpServletRequestWrapper @Override + @Nullable public Object getAttribute(String name) { if ((this.explicitAttributes == null || !this.explicitAttributes.contains(name)) && (this.exposedContextBeanNames == null || this.exposedContextBeanNames.contains(name)) && diff --git a/spring-web/src/main/java/org/springframework/web/context/support/GenericWebApplicationContext.java b/spring-web/src/main/java/org/springframework/web/context/support/GenericWebApplicationContext.java index 7a09d567f66..ff16148474a 100644 --- a/spring-web/src/main/java/org/springframework/web/context/support/GenericWebApplicationContext.java +++ b/spring-web/src/main/java/org/springframework/web/context/support/GenericWebApplicationContext.java @@ -197,6 +197,7 @@ public class GenericWebApplicationContext extends GenericApplicationContext } @Override + @Nullable public Theme getTheme(String themeName) { Assert.state(this.themeSource != null, "No ThemeSource available"); return this.themeSource.getTheme(themeName); @@ -213,6 +214,7 @@ public class GenericWebApplicationContext extends GenericApplicationContext } @Override + @Nullable public ServletConfig getServletConfig() { throw new UnsupportedOperationException( "GenericWebApplicationContext does not support getServletConfig()"); @@ -224,6 +226,7 @@ public class GenericWebApplicationContext extends GenericApplicationContext } @Override + @Nullable public String getNamespace() { throw new UnsupportedOperationException( "GenericWebApplicationContext does not support getNamespace()"); diff --git a/spring-web/src/main/java/org/springframework/web/context/support/ServletConfigPropertySource.java b/spring-web/src/main/java/org/springframework/web/context/support/ServletConfigPropertySource.java index 212b9a302df..19d43f1417f 100644 --- a/spring-web/src/main/java/org/springframework/web/context/support/ServletConfigPropertySource.java +++ b/spring-web/src/main/java/org/springframework/web/context/support/ServletConfigPropertySource.java @@ -20,6 +20,7 @@ import javax.servlet.ServletConfig; import org.springframework.core.env.EnumerablePropertySource; import org.springframework.core.env.PropertySource; +import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** @@ -41,6 +42,7 @@ public class ServletConfigPropertySource extends EnumerablePropertySource, @Override + @Nullable public Object getObject() throws Exception { return this.attribute; } diff --git a/spring-web/src/main/java/org/springframework/web/context/support/ServletContextParameterFactoryBean.java b/spring-web/src/main/java/org/springframework/web/context/support/ServletContextParameterFactoryBean.java index 73cfbbbeae4..e0c853badd0 100644 --- a/spring-web/src/main/java/org/springframework/web/context/support/ServletContextParameterFactoryBean.java +++ b/spring-web/src/main/java/org/springframework/web/context/support/ServletContextParameterFactoryBean.java @@ -66,6 +66,7 @@ public class ServletContextParameterFactoryBean implements FactoryBean, @Override + @Nullable public String getObject() { return this.paramValue; } diff --git a/spring-web/src/main/java/org/springframework/web/context/support/ServletContextPropertySource.java b/spring-web/src/main/java/org/springframework/web/context/support/ServletContextPropertySource.java index 0fb48c9e5a1..eb15fbe2474 100644 --- a/spring-web/src/main/java/org/springframework/web/context/support/ServletContextPropertySource.java +++ b/spring-web/src/main/java/org/springframework/web/context/support/ServletContextPropertySource.java @@ -20,6 +20,7 @@ import javax.servlet.ServletContext; import org.springframework.core.env.EnumerablePropertySource; import org.springframework.core.env.PropertySource; +import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** @@ -41,6 +42,7 @@ public class ServletContextPropertySource extends EnumerablePropertySource entry : this.corsConfigurations.entrySet()) { diff --git a/spring-web/src/main/java/org/springframework/web/cors/reactive/UrlBasedCorsConfigurationSource.java b/spring-web/src/main/java/org/springframework/web/cors/reactive/UrlBasedCorsConfigurationSource.java index 59400e00566..5dfb7c771b1 100644 --- a/spring-web/src/main/java/org/springframework/web/cors/reactive/UrlBasedCorsConfigurationSource.java +++ b/spring-web/src/main/java/org/springframework/web/cors/reactive/UrlBasedCorsConfigurationSource.java @@ -66,6 +66,7 @@ public class UrlBasedCorsConfigurationSource implements CorsConfigurationSource } @Override + @Nullable public CorsConfiguration getCorsConfiguration(ServerWebExchange exchange) { PathContainer lookupPath = exchange.getRequest().getPath().pathWithinApplication(); return this.corsConfigurations.entrySet().stream() diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java b/spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java index 49ab8001672..8c259972868 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java @@ -90,6 +90,7 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle @Override + @Nullable public final Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/AbstractWebArgumentResolverAdapter.java b/spring-web/src/main/java/org/springframework/web/method/annotation/AbstractWebArgumentResolverAdapter.java index 78a492230ca..9dcdb9cd130 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/AbstractWebArgumentResolverAdapter.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/AbstractWebArgumentResolverAdapter.java @@ -92,6 +92,7 @@ public abstract class AbstractWebArgumentResolverAdapter implements HandlerMetho * to the method parameter. */ @Override + @Nullable public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/ErrorsMethodArgumentResolver.java b/spring-web/src/main/java/org/springframework/web/method/annotation/ErrorsMethodArgumentResolver.java index 4d247d6853c..7928ab8d7ba 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/ErrorsMethodArgumentResolver.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/ErrorsMethodArgumentResolver.java @@ -49,6 +49,7 @@ public class ErrorsMethodArgumentResolver implements HandlerMethodArgumentResolv } @Override + @Nullable public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/ExpressionValueMethodArgumentResolver.java b/spring-web/src/main/java/org/springframework/web/method/annotation/ExpressionValueMethodArgumentResolver.java index f1c1c6abf43..8cff466b95f 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/ExpressionValueMethodArgumentResolver.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/ExpressionValueMethodArgumentResolver.java @@ -64,6 +64,7 @@ public class ExpressionValueMethodArgumentResolver extends AbstractNamedValueMet } @Override + @Nullable protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest webRequest) throws Exception { // No name to resolve return null; diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/MapMethodProcessor.java b/spring-web/src/main/java/org/springframework/web/method/annotation/MapMethodProcessor.java index 6054517512a..a21dd236570 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/MapMethodProcessor.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/MapMethodProcessor.java @@ -46,6 +46,7 @@ public class MapMethodProcessor implements HandlerMethodArgumentResolver, Handle } @Override + @Nullable public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/ModelAttributeMethodProcessor.java b/spring-web/src/main/java/org/springframework/web/method/annotation/ModelAttributeMethodProcessor.java index f35e2619984..5114cbd0c2d 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/ModelAttributeMethodProcessor.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/ModelAttributeMethodProcessor.java @@ -107,6 +107,7 @@ public class ModelAttributeMethodProcessor implements HandlerMethodArgumentResol * @throws Exception if WebDataBinder initialization fails */ @Override + @Nullable public final Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/ModelMethodProcessor.java b/spring-web/src/main/java/org/springframework/web/method/annotation/ModelMethodProcessor.java index ea0aacde818..dc690b6a1e4 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/ModelMethodProcessor.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/ModelMethodProcessor.java @@ -45,6 +45,7 @@ public class ModelMethodProcessor implements HandlerMethodArgumentResolver, Hand } @Override + @Nullable public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMethodArgumentResolver.java b/spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMethodArgumentResolver.java index c2574af25f2..ad8064eaf33 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMethodArgumentResolver.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMethodArgumentResolver.java @@ -69,6 +69,7 @@ public class RequestHeaderMethodArgumentResolver extends AbstractNamedValueMetho } @Override + @Nullable protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request) throws Exception { String[] headerValues = request.getHeaderValues(name); if (headerValues != null) { diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/RequestParamMethodArgumentResolver.java b/spring-web/src/main/java/org/springframework/web/method/annotation/RequestParamMethodArgumentResolver.java index 9da01d15a55..20e2513374b 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/RequestParamMethodArgumentResolver.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/RequestParamMethodArgumentResolver.java @@ -156,6 +156,7 @@ public class RequestParamMethodArgumentResolver extends AbstractNamedValueMethod } @Override + @Nullable protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request) throws Exception { HttpServletRequest servletRequest = request.getNativeRequest(HttpServletRequest.class); diff --git a/spring-web/src/main/java/org/springframework/web/method/support/HandlerMethodArgumentResolverComposite.java b/spring-web/src/main/java/org/springframework/web/method/support/HandlerMethodArgumentResolverComposite.java index 269659b3e8c..130f616f148 100644 --- a/spring-web/src/main/java/org/springframework/web/method/support/HandlerMethodArgumentResolverComposite.java +++ b/spring-web/src/main/java/org/springframework/web/method/support/HandlerMethodArgumentResolverComposite.java @@ -111,6 +111,7 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu * @throws IllegalStateException if no suitable {@link HandlerMethodArgumentResolver} is found. */ @Override + @Nullable public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { diff --git a/spring-web/src/main/java/org/springframework/web/server/ResponseStatusException.java b/spring-web/src/main/java/org/springframework/web/server/ResponseStatusException.java index ba77322bc41..0346e49c4cf 100644 --- a/spring-web/src/main/java/org/springframework/web/server/ResponseStatusException.java +++ b/spring-web/src/main/java/org/springframework/web/server/ResponseStatusException.java @@ -87,6 +87,7 @@ public class ResponseStatusException extends NestedRuntimeException { } @Override + @Nullable public String getMessage() { String msg = "Response status " + this.status + (this.reason != null ? " with reason \"" + reason + "\"" : ""); return NestedExceptionUtils.buildMessage(msg, getCause()); diff --git a/spring-web/src/main/java/org/springframework/web/server/i18n/FixedLocaleContextResolver.java b/spring-web/src/main/java/org/springframework/web/server/i18n/FixedLocaleContextResolver.java index 1930e9c4571..0ddd3dc558e 100644 --- a/spring-web/src/main/java/org/springframework/web/server/i18n/FixedLocaleContextResolver.java +++ b/spring-web/src/main/java/org/springframework/web/server/i18n/FixedLocaleContextResolver.java @@ -79,6 +79,7 @@ public class FixedLocaleContextResolver implements LocaleContextResolver { return locale; } @Override + @Nullable public TimeZone getTimeZone() { return timeZone; } diff --git a/spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java b/spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java index 432709b43d7..f251d918290 100644 --- a/spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java +++ b/spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java @@ -105,6 +105,7 @@ final class HierarchicalUriComponents extends UriComponents { // Component getters @Override + @Nullable public String getSchemeSpecificPart() { return null; } @@ -144,6 +145,7 @@ final class HierarchicalUriComponents extends UriComponents { } @Override + @Nullable public String getQuery() { if (!this.queryParams.isEmpty()) { StringBuilder queryBuilder = new StringBuilder(); diff --git a/spring-web/src/main/java/org/springframework/web/util/OpaqueUriComponents.java b/spring-web/src/main/java/org/springframework/web/util/OpaqueUriComponents.java index 2abf8106023..ed7cd128592 100644 --- a/spring-web/src/main/java/org/springframework/web/util/OpaqueUriComponents.java +++ b/spring-web/src/main/java/org/springframework/web/util/OpaqueUriComponents.java @@ -51,16 +51,19 @@ final class OpaqueUriComponents extends UriComponents { @Override + @Nullable public String getSchemeSpecificPart() { return this.ssp; } @Override + @Nullable public String getUserInfo() { return null; } @Override + @Nullable public String getHost() { return null; } @@ -71,6 +74,7 @@ final class OpaqueUriComponents extends UriComponents { } @Override + @Nullable public String getPath() { return null; } @@ -81,6 +85,7 @@ final class OpaqueUriComponents extends UriComponents { } @Override + @Nullable public String getQuery() { return null; } diff --git a/spring-web/src/main/java/org/springframework/web/util/ServletContextPropertyUtils.java b/spring-web/src/main/java/org/springframework/web/util/ServletContextPropertyUtils.java index c018aa3a0b4..900ac6c800e 100644 --- a/spring-web/src/main/java/org/springframework/web/util/ServletContextPropertyUtils.java +++ b/spring-web/src/main/java/org/springframework/web/util/ServletContextPropertyUtils.java @@ -17,6 +17,7 @@ package org.springframework.web.util; import javax.servlet.ServletContext; +import org.springframework.lang.Nullable; import org.springframework.util.PropertyPlaceholderHelper; import org.springframework.util.SystemPropertyUtils; @@ -90,6 +91,7 @@ public abstract class ServletContextPropertyUtils { } @Override + @Nullable public String resolvePlaceholder(String placeholderName) { try { String propVal = this.servletContext.getInitParameter(placeholderName); diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java index 44b179e2c10..7200a1b6be4 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java @@ -30,6 +30,7 @@ import reactor.core.publisher.Mono; import org.springframework.core.io.Resource; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; +import org.springframework.lang.Nullable; import org.springframework.web.reactive.function.BodyInserters; /** @@ -129,6 +130,7 @@ class ResourceHandlerFunction implements HandlerFunction { } @Override + @Nullable public String getFilename() { return this.delegate.getFilename(); } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/GzipResourceResolver.java b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/GzipResourceResolver.java index 950c4aa51c0..423e1d15651 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/GzipResourceResolver.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/GzipResourceResolver.java @@ -88,18 +88,22 @@ public class GzipResourceResolver extends AbstractResourceResolver { this.gzipped = original.createRelative(original.getFilename() + ".gz"); } + @Override public InputStream getInputStream() throws IOException { return this.gzipped.getInputStream(); } + @Override public boolean exists() { return this.gzipped.exists(); } + @Override public boolean isReadable() { return this.gzipped.isReadable(); } + @Override public boolean isOpen() { return this.gzipped.isOpen(); } @@ -109,34 +113,43 @@ public class GzipResourceResolver extends AbstractResourceResolver { return this.gzipped.isFile(); } + @Override public URL getURL() throws IOException { return this.gzipped.getURL(); } + @Override public URI getURI() throws IOException { return this.gzipped.getURI(); } + @Override public File getFile() throws IOException { return this.gzipped.getFile(); } + @Override public long contentLength() throws IOException { return this.gzipped.contentLength(); } + @Override public long lastModified() throws IOException { return this.gzipped.lastModified(); } + @Override public Resource createRelative(String relativePath) throws IOException { return this.gzipped.createRelative(relativePath); } + @Override + @Nullable public String getFilename() { return this.original.getFilename(); } + @Override public String getDescription() { return this.gzipped.getDescription(); } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/VersionResourceResolver.java b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/VersionResourceResolver.java index 256f8270d78..b022e54f454 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/VersionResourceResolver.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/VersionResourceResolver.java @@ -302,6 +302,7 @@ public class VersionResourceResolver extends AbstractResourceResolver { } @Override + @Nullable public String getFilename() { return this.original.getFilename(); } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/AbstractNameValueExpression.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/AbstractNameValueExpression.java index c144dca8dd5..071929c7bd0 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/AbstractNameValueExpression.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/AbstractNameValueExpression.java @@ -16,6 +16,7 @@ package org.springframework.web.reactive.result.condition; +import org.springframework.lang.Nullable; import org.springframework.web.server.ServerWebExchange; /** @@ -30,6 +31,7 @@ abstract class AbstractNameValueExpression implements NameValueExpression protected final String name; + @Nullable protected final T value; protected final boolean isNegated; @@ -54,6 +56,7 @@ abstract class AbstractNameValueExpression implements NameValueExpression } @Override + @Nullable public T getValue() { return this.value; } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/HeadersRequestCondition.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/HeadersRequestCondition.java index 4fc3784611e..c29fe70ead2 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/HeadersRequestCondition.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/HeadersRequestCondition.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.LinkedHashSet; import java.util.Set; +import org.springframework.lang.Nullable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.cors.reactive.CorsUtils; import org.springframework.web.server.ServerWebExchange; @@ -107,6 +108,7 @@ public final class HeadersRequestCondition extends AbstractRequestCondition { String getName(); + @Nullable T getValue(); boolean isNegated(); diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/ProducesRequestCondition.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/ProducesRequestCondition.java index 887ab360653..fd6285d9354 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/ProducesRequestCondition.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/ProducesRequestCondition.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Set; import org.springframework.http.MediaType; +import org.springframework.lang.Nullable; import org.springframework.web.accept.ContentNegotiationManager; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.cors.reactive.CorsUtils; @@ -181,6 +182,7 @@ public final class ProducesRequestCondition extends AbstractRequestCondition extends AbstractWebSoc } @Override + @Nullable protected WebSocketMessage read() throws IOException { if (this.webSocketMessage != null) { WebSocketMessage result = this.webSocketMessage; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java index 0cfb7cf130e..c95529eddff 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java @@ -188,6 +188,7 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { Object source = parserContext.extractSource(element); XmlReaderContext readerContext = parserContext.getReaderContext(); @@ -706,6 +707,7 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { } @Override + @Nullable public CompositeUriComponentsContributor getObject() throws Exception { return this.uriComponentsContributor; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/CorsBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/CorsBeanDefinitionParser.java index 3c72593b020..68df4124509 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/CorsBeanDefinitionParser.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/CorsBeanDefinitionParser.java @@ -26,6 +26,7 @@ import org.w3c.dom.Element; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; import org.springframework.web.cors.CorsConfiguration; @@ -42,6 +43,7 @@ import org.springframework.web.cors.CorsConfiguration; public class CorsBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { Map corsConfigurations = new LinkedHashMap<>(); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/DefaultServletHandlerBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/DefaultServletHandlerBeanDefinitionParser.java index 4851b9dd1dd..0fa2ba7cad5 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/DefaultServletHandlerBeanDefinitionParser.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/DefaultServletHandlerBeanDefinitionParser.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.support.ManagedMap; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping; import org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter; @@ -44,6 +45,7 @@ import org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler class DefaultServletHandlerBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { Object source = parserContext.extractSource(element); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/InterceptorsBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/InterceptorsBeanDefinitionParser.java index 7c631e50e89..e62c80b58b9 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/InterceptorsBeanDefinitionParser.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/InterceptorsBeanDefinitionParser.java @@ -28,6 +28,7 @@ import org.springframework.beans.factory.support.ManagedList; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.lang.Nullable; import org.springframework.util.xml.DomUtils; import org.springframework.web.servlet.handler.MappedInterceptor; @@ -41,6 +42,7 @@ import org.springframework.web.servlet.handler.MappedInterceptor; class InterceptorsBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext parserContext) { CompositeComponentDefinition compDefinition = new CompositeComponentDefinition(element.getTagName(), parserContext.extractSource(element)); parserContext.pushContainingComponent(compDefinition); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.java index 2c181c594b4..624beb151c9 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.java @@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.format.FormatterRegistry; import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; @@ -133,11 +134,13 @@ public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport { } @Override + @Nullable protected Validator getValidator() { return this.configurers.getValidator(); } @Override + @Nullable protected MessageCodesResolver getMessageCodesResolver() { return this.configurers.getMessageCodesResolver(); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurerAdapter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurerAdapter.java index 0270046e605..40d90055b60 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurerAdapter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurerAdapter.java @@ -20,6 +20,7 @@ import java.util.List; import org.springframework.format.FormatterRegistry; import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.lang.Nullable; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; import org.springframework.web.method.support.HandlerMethodArgumentResolver; @@ -172,6 +173,7 @@ public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer { *

This implementation returns {@code null}. */ @Override + @Nullable public Validator getValidator() { return null; } @@ -181,6 +183,7 @@ public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer { *

This implementation returns {@code null}. */ @Override + @Nullable public MessageCodesResolver getMessageCodesResolver() { return null; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurerComposite.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurerComposite.java index cdbb0a347d2..79e0af74724 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurerComposite.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurerComposite.java @@ -21,6 +21,7 @@ import java.util.List; import org.springframework.format.FormatterRegistry; import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; @@ -175,6 +176,7 @@ class WebMvcConfigurerComposite implements WebMvcConfigurer { } @Override + @Nullable public MessageCodesResolver getMessageCodesResolver() { MessageCodesResolver selected = null; for (WebMvcConfigurer configurer : this.delegates) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractDetectingUrlHandlerMapping.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractDetectingUrlHandlerMapping.java index 5c7b007db84..132ff4a8fdb 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractDetectingUrlHandlerMapping.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractDetectingUrlHandlerMapping.java @@ -20,7 +20,6 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextException; -import org.springframework.lang.Nullable; import org.springframework.util.ObjectUtils; /** @@ -96,10 +95,8 @@ public abstract class AbstractDetectingUrlHandlerMapping extends AbstractUrlHand /** * Determine the URLs for the given handler bean. * @param beanName the name of the candidate bean - * @return the URLs determined for the bean, - * or {@code null} or an empty array if none + * @return the URLs determined for the bean, or an empty array if none */ - @Nullable protected abstract String[] determineUrlsForHandler(String beanName); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerExceptionResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerExceptionResolver.java index ff358d11e21..997c786cadc 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerExceptionResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerExceptionResolver.java @@ -128,6 +128,7 @@ public abstract class AbstractHandlerExceptionResolver implements HandlerExcepti * to the {@link #doResolveException} template method. */ @Override + @Nullable public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java index 26ed9b2e519..0cf6e2d19e0 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java @@ -346,6 +346,7 @@ public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport * @see #getHandlerInternal */ @Override + @Nullable public final HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { Object handler = getHandlerInternal(request); if (handler == null) { @@ -488,6 +489,7 @@ public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport } @Override + @Nullable public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { return this.config; } @@ -511,6 +513,7 @@ public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport } @Override + @Nullable public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { return this.config; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMethodExceptionResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMethodExceptionResolver.java index 9c45e42b474..5ce8523fe1a 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMethodExceptionResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMethodExceptionResolver.java @@ -54,6 +54,7 @@ public abstract class AbstractHandlerMethodExceptionResolver extends AbstractHan } @Override + @Nullable protected final ModelAndView doResolveException( HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java index cc186b613b3..4bc981f872c 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java @@ -294,6 +294,7 @@ public abstract class AbstractUrlHandlerMapping extends AbstractHandlerMapping i } @Override + @Nullable public RequestMatchResult match(HttpServletRequest request, String pattern) { String lookupPath = getUrlPathHelper().getLookupPathForRequest(request); if (getPathMatcher().match(pattern, lookupPath)) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java index 4b38e361a8d..905e876955f 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java @@ -144,6 +144,7 @@ public class HandlerMappingIntrospector implements CorsConfigurationSource { } @Override + @Nullable public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { HttpServletRequest wrapper = new RequestAttributeChangeIgnoringWrapper(request); for (HandlerMapping handlerMapping : this.handlerMappings) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleMappingExceptionResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleMappingExceptionResolver.java index 4f98dd66e58..bd2dd435bba 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleMappingExceptionResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleMappingExceptionResolver.java @@ -179,6 +179,7 @@ public class SimpleMappingExceptionResolver extends AbstractHandlerExceptionReso * @return a corresponding ModelAndView to forward to, or {@code null} for default processing */ @Override + @Nullable protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleServletHandlerAdapter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleServletHandlerAdapter.java index e19ebe57f0c..734482f9662 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleServletHandlerAdapter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleServletHandlerAdapter.java @@ -20,6 +20,7 @@ import javax.servlet.Servlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.springframework.lang.Nullable; import org.springframework.web.servlet.HandlerAdapter; import org.springframework.web.servlet.ModelAndView; @@ -59,6 +60,7 @@ public class SimpleServletHandlerAdapter implements HandlerAdapter { } @Override + @Nullable public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/CookieLocaleResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/CookieLocaleResolver.java index 5f398af2567..e119d6791f1 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/CookieLocaleResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/CookieLocaleResolver.java @@ -168,10 +168,12 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte parseLocaleCookieIfNecessary(request); return new TimeZoneAwareLocaleContext() { @Override + @Nullable public Locale getLocale() { return (Locale) request.getAttribute(LOCALE_REQUEST_ATTRIBUTE_NAME); } @Override + @Nullable public TimeZone getTimeZone() { return (TimeZone) request.getAttribute(TIME_ZONE_REQUEST_ATTRIBUTE_NAME); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/FixedLocaleResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/FixedLocaleResolver.java index 6596c50ccd2..a7a20e88999 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/FixedLocaleResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/FixedLocaleResolver.java @@ -82,6 +82,7 @@ public class FixedLocaleResolver extends AbstractLocaleContextResolver { public LocaleContext resolveLocaleContext(HttpServletRequest request) { return new TimeZoneAwareLocaleContext() { @Override + @Nullable public Locale getLocale() { return getDefaultLocale(); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/SessionLocaleResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/SessionLocaleResolver.java index 0a4516cf537..18bbb984115 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/SessionLocaleResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/SessionLocaleResolver.java @@ -127,6 +127,7 @@ public class SessionLocaleResolver extends AbstractLocaleContextResolver { return locale; } @Override + @Nullable public TimeZone getTimeZone() { TimeZone timeZone = (TimeZone) WebUtils.getSessionAttribute(request, timeZoneAttributeName); if (timeZone == null) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/AbstractController.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/AbstractController.java index e742af2e425..ffdef0e84ce 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/AbstractController.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/AbstractController.java @@ -149,6 +149,7 @@ public abstract class AbstractController extends WebContentGenerator implements @Override + @Nullable public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/HttpRequestHandlerAdapter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/HttpRequestHandlerAdapter.java index 7c6f8349cba..cac1e47ddf4 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/HttpRequestHandlerAdapter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/HttpRequestHandlerAdapter.java @@ -19,6 +19,7 @@ package org.springframework.web.servlet.mvc; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.springframework.lang.Nullable; import org.springframework.web.HttpRequestHandler; import org.springframework.web.servlet.HandlerAdapter; import org.springframework.web.servlet.ModelAndView; @@ -45,6 +46,7 @@ public class HttpRequestHandlerAdapter implements HandlerAdapter { } @Override + @Nullable public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/SimpleControllerHandlerAdapter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/SimpleControllerHandlerAdapter.java index bcd28c0e540..7a2627068a4 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/SimpleControllerHandlerAdapter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/SimpleControllerHandlerAdapter.java @@ -19,6 +19,7 @@ package org.springframework.web.servlet.mvc; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.springframework.lang.Nullable; import org.springframework.web.servlet.HandlerAdapter; import org.springframework.web.servlet.ModelAndView; @@ -44,6 +45,7 @@ public class SimpleControllerHandlerAdapter implements HandlerAdapter { } @Override + @Nullable public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/annotation/ResponseStatusExceptionResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/annotation/ResponseStatusExceptionResolver.java index 167fe78565c..a064fe856c9 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/annotation/ResponseStatusExceptionResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/annotation/ResponseStatusExceptionResolver.java @@ -66,6 +66,7 @@ public class ResponseStatusExceptionResolver extends AbstractHandlerExceptionRes @Override + @Nullable protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/CompositeRequestCondition.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/CompositeRequestCondition.java index 2ea4dd26f2f..3db4d6eb9d2 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/CompositeRequestCondition.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/CompositeRequestCondition.java @@ -23,6 +23,7 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; @@ -142,6 +143,7 @@ public class CompositeRequestCondition extends AbstractRequestConditionAn empty {@code CompositeRequestCondition} matches to all requests. */ @Override + @Nullable public CompositeRequestCondition getMatchingCondition(HttpServletRequest request) { if (isEmpty()) { return this; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ConsumesRequestCondition.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ConsumesRequestCondition.java index d569bddb6ec..83e10c42a68 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ConsumesRequestCondition.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ConsumesRequestCondition.java @@ -161,6 +161,7 @@ public final class ConsumesRequestCondition extends AbstractRequestCondition> converterType, ServerHttpRequest request, ServerHttpResponse response) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessor.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessor.java index b3c0f1482e1..6afef13aa3c 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessor.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessor.java @@ -122,6 +122,7 @@ public class HttpEntityMethodProcessor extends AbstractMessageConverterMethodPro } @Override + @Nullable public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws IOException, HttpMediaTypeNotSupportedException { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMapMethodArgumentResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMapMethodArgumentResolver.java index 0a1f127050a..0db14533dc4 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMapMethodArgumentResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMapMethodArgumentResolver.java @@ -60,6 +60,7 @@ public class MatrixVariableMapMethodArgumentResolver implements HandlerMethodArg } @Override + @Nullable public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest request, @Nullable WebDataBinderFactory binderFactory) throws Exception { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMethodArgumentResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMethodArgumentResolver.java index 6631106fae8..bf1c860a6c1 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMethodArgumentResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMethodArgumentResolver.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Map; import org.springframework.core.MethodParameter; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.MultiValueMap; @@ -71,6 +72,7 @@ public class MatrixVariableMethodArgumentResolver extends AbstractNamedValueMeth @Override @SuppressWarnings("unchecked") + @Nullable protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request) throws Exception { Map> pathParameters = (Map>) request.getAttribute(HandlerMapping.MATRIX_VARIABLES_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/PathVariableMethodArgumentResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/PathVariableMethodArgumentResolver.java index 0ad149cbe6d..895cc10aac4 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/PathVariableMethodArgumentResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/PathVariableMethodArgumentResolver.java @@ -89,6 +89,7 @@ public class PathVariableMethodArgumentResolver extends AbstractNamedValueMethod @Override @SuppressWarnings("unchecked") + @Nullable protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request) throws Exception { Map uriTemplateVars = (Map) request.getAttribute( HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestAttributeMethodArgumentResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestAttributeMethodArgumentResolver.java index a14db8b95b9..92e02d0ba4d 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestAttributeMethodArgumentResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestAttributeMethodArgumentResolver.java @@ -19,6 +19,7 @@ package org.springframework.web.servlet.mvc.method.annotation; import javax.servlet.ServletException; import org.springframework.core.MethodParameter; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.web.bind.ServletRequestBindingException; import org.springframework.web.bind.annotation.RequestAttribute; @@ -48,6 +49,7 @@ public class RequestAttributeMethodArgumentResolver extends AbstractNamedValueMe } @Override + @Nullable protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request){ return request.getAttribute(name, RequestAttributes.SCOPE_REQUEST); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.java index 3386ccfc939..565ddeca4e9 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.java @@ -187,6 +187,7 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi * @see #getCustomTypeCondition(Class) */ @Override + @Nullable protected RequestMappingInfo getMappingForMethod(Method method, Class handlerType) { RequestMappingInfo info = createRequestMappingInfo(method); if (info != null) { @@ -205,6 +206,7 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi * @see #getCustomTypeCondition(Class) * @see #getCustomMethodCondition(Method) */ + @Nullable private RequestMappingInfo createRequestMappingInfo(AnnotatedElement element) { RequestMapping requestMapping = AnnotatedElementUtils.findMergedAnnotation(element, RequestMapping.class); RequestCondition condition = (element instanceof Class ? diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestPartMethodArgumentResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestPartMethodArgumentResolver.java index ee5162bce1a..8c826310d73 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestPartMethodArgumentResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestPartMethodArgumentResolver.java @@ -108,6 +108,7 @@ public class RequestPartMethodArgumentResolver extends AbstractMessageConverterM } @Override + @Nullable public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest request, @Nullable WebDataBinderFactory binderFactory) throws Exception { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyAdviceChain.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyAdviceChain.java index 2f1f4966064..8958484c52f 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyAdviceChain.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyAdviceChain.java @@ -104,6 +104,7 @@ class RequestResponseBodyAdviceChain implements RequestBodyAdvice, ResponseBodyA } @Override + @Nullable public Object beforeBodyWrite(@Nullable Object body, MethodParameter returnType, MediaType contentType, Class> converterType, ServerHttpRequest request, ServerHttpResponse response) { @@ -112,6 +113,7 @@ class RequestResponseBodyAdviceChain implements RequestBodyAdvice, ResponseBodyA } @Override + @Nullable public Object handleEmptyBody(@Nullable Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletCookieValueMethodArgumentResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletCookieValueMethodArgumentResolver.java index 4632325b927..25b3de091a8 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletCookieValueMethodArgumentResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletCookieValueMethodArgumentResolver.java @@ -51,6 +51,7 @@ public class ServletCookieValueMethodArgumentResolver extends AbstractCookieValu @Override + @Nullable protected Object resolveName(String cookieName, MethodParameter parameter, NativeWebRequest webRequest) throws Exception { HttpServletRequest servletRequest = webRequest.getNativeRequest(HttpServletRequest.class); Assert.state(servletRequest != null, "No HttpServletRequest"); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SessionAttributeMethodArgumentResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SessionAttributeMethodArgumentResolver.java index efc5ef61a0b..471c96ca604 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SessionAttributeMethodArgumentResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SessionAttributeMethodArgumentResolver.java @@ -19,6 +19,7 @@ package org.springframework.web.servlet.mvc.method.annotation; import javax.servlet.ServletException; import org.springframework.core.MethodParameter; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.web.bind.ServletRequestBindingException; import org.springframework.web.bind.annotation.SessionAttribute; @@ -48,6 +49,7 @@ public class SessionAttributeMethodArgumentResolver extends AbstractNamedValueMe } @Override + @Nullable protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request){ return request.getAttribute(name, RequestAttributes.SCOPE_SESSION); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java index 807d08e5f32..1954b7965e8 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java @@ -101,6 +101,7 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes @Override + @Nullable protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractResourceResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractResourceResolver.java index ef999bab2c4..16781661209 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractResourceResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractResourceResolver.java @@ -38,6 +38,7 @@ public abstract class AbstractResourceResolver implements ResourceResolver { @Override + @Nullable public Resource resolveResource(@Nullable HttpServletRequest request, String requestPath, List locations, ResourceResolverChain chain) { @@ -48,6 +49,7 @@ public abstract class AbstractResourceResolver implements ResourceResolver { } @Override + @Nullable public String resolveUrlPath(String resourceUrlPath, List locations, ResourceResolverChain chain) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractVersionStrategy.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractVersionStrategy.java index 9848f9c79e9..eda8d17b5e2 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractVersionStrategy.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractVersionStrategy.java @@ -22,6 +22,7 @@ import java.util.regex.Pattern; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -60,6 +61,7 @@ public abstract class AbstractVersionStrategy implements VersionStrategy { @Override + @Nullable public String extractVersion(String requestPath) { return this.pathStrategy.extractVersion(requestPath); } @@ -89,6 +91,7 @@ public abstract class AbstractVersionStrategy implements VersionStrategy { } @Override + @Nullable public String extractVersion(String requestPath) { return (requestPath.startsWith(this.prefix) ? this.prefix : null); } @@ -120,6 +123,7 @@ public abstract class AbstractVersionStrategy implements VersionStrategy { private static final Pattern pattern = Pattern.compile("-(\\S*)\\."); @Override + @Nullable public String extractVersion(String requestPath) { Matcher matcher = pattern.matcher(requestPath); if (matcher.find()) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/DefaultResourceResolverChain.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/DefaultResourceResolverChain.java index eb42ebd5ea4..7019a3c976e 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/DefaultResourceResolverChain.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/DefaultResourceResolverChain.java @@ -48,6 +48,7 @@ class DefaultResourceResolverChain implements ResourceResolverChain { @Override + @Nullable public Resource resolveResource( @Nullable HttpServletRequest request, String requestPath, List locations) { @@ -65,6 +66,7 @@ class DefaultResourceResolverChain implements ResourceResolverChain { } @Override + @Nullable public String resolveUrlPath(String resourcePath, List locations) { ResourceResolver resolver = getNext(); if (resolver == null) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java index cd618cc3d77..0f9f9acedb1 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java @@ -89,18 +89,22 @@ public class GzipResourceResolver extends AbstractResourceResolver { this.gzipped = original.createRelative(original.getFilename() + ".gz"); } + @Override public InputStream getInputStream() throws IOException { return this.gzipped.getInputStream(); } + @Override public boolean exists() { return this.gzipped.exists(); } + @Override public boolean isReadable() { return this.gzipped.isReadable(); } + @Override public boolean isOpen() { return this.gzipped.isOpen(); } @@ -110,34 +114,43 @@ public class GzipResourceResolver extends AbstractResourceResolver { return this.gzipped.isFile(); } + @Override public URL getURL() throws IOException { return this.gzipped.getURL(); } + @Override public URI getURI() throws IOException { return this.gzipped.getURI(); } + @Override public File getFile() throws IOException { return this.gzipped.getFile(); } + @Override public long contentLength() throws IOException { return this.gzipped.contentLength(); } + @Override public long lastModified() throws IOException { return this.gzipped.lastModified(); } + @Override public Resource createRelative(String relativePath) throws IOException { return this.gzipped.createRelative(relativePath); } + @Override + @Nullable public String getFilename() { return this.original.getFilename(); } + @Override public String getDescription() { return this.gzipped.getDescription(); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java index c4ba23da701..a705f57fa0a 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java @@ -244,6 +244,7 @@ public class ResourceHttpRequestHandler extends WebContentGenerator * Return the specified CORS configuration. */ @Override + @Nullable public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { return this.corsConfiguration; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/VersionResourceResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/VersionResourceResolver.java index 53818b3ea56..b0c003dc945 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/VersionResourceResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/VersionResourceResolver.java @@ -295,6 +295,7 @@ public class VersionResourceResolver extends AbstractResourceResolver { } @Override + @Nullable public String getFilename() { return this.original.getFilename(); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/AbstractFlashMapManager.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/AbstractFlashMapManager.java index 4cfaacedb4c..1bf5419c066 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/AbstractFlashMapManager.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/AbstractFlashMapManager.java @@ -88,6 +88,7 @@ public abstract class AbstractFlashMapManager implements FlashMapManager { @Override + @Nullable public final FlashMap retrieveAndUpdate(HttpServletRequest request, HttpServletResponse response) { List allFlashMaps = retrieveFlashMaps(request); if (CollectionUtils.isEmpty(allFlashMaps)) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/SessionFlashMapManager.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/SessionFlashMapManager.java index e993cde0a0a..2c1ba5faa7a 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/SessionFlashMapManager.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/SessionFlashMapManager.java @@ -21,6 +21,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import org.springframework.lang.Nullable; import org.springframework.web.servlet.FlashMap; import org.springframework.web.util.WebUtils; @@ -41,6 +42,7 @@ public class SessionFlashMapManager extends AbstractFlashMapManager { */ @Override @SuppressWarnings("unchecked") + @Nullable protected List retrieveFlashMaps(HttpServletRequest request) { HttpSession session = request.getSession(false); return (session != null ? (List) session.getAttribute(FLASH_MAPS_SESSION_ATTRIBUTE) : null); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/BindTag.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/BindTag.java index 310dede393d..91f81a845e5 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/BindTag.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/BindTag.java @@ -184,6 +184,7 @@ public class BindTag extends HtmlEscapingAwareTag implements EditorAwareTag { } @Override + @Nullable public final PropertyEditor getEditor() { return getStatus().getEditor(); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/EvalTag.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/EvalTag.java index b1abd2db503..c9fe065aa2a 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/EvalTag.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/EvalTag.java @@ -168,6 +168,7 @@ public class EvalTag extends HtmlEscapingAwareTag { } @Override + @Nullable public Class[] getSpecificTargetClasses() { return null; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java index 2e3ef8228be..1cce7c6e6e8 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java @@ -198,6 +198,7 @@ public abstract class AbstractDataBoundFormElementTag extends AbstractFormTag im * Get the bound value. * @see #getBindStatus() */ + @Nullable protected final Object getBoundValue() throws JspException { return getBindStatus().getValue(); } @@ -215,6 +216,7 @@ public abstract class AbstractDataBoundFormElementTag extends AbstractFormTag im *

Use {@link #getPropertyEditor()} for internal rendering purposes. */ @Override + @Nullable public final PropertyEditor getEditor() throws JspException { return getPropertyEditor(); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractCachingViewResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractCachingViewResolver.java index 207ce470908..742ed7b3a7a 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractCachingViewResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractCachingViewResolver.java @@ -50,6 +50,7 @@ public abstract class AbstractCachingViewResolver extends WebApplicationObjectSu /** Dummy marker object for unresolved views in the cache Maps */ private static final View UNRESOLVED_VIEW = new View() { @Override + @Nullable public String getContentType() { return null; } @@ -143,6 +144,7 @@ public abstract class AbstractCachingViewResolver extends WebApplicationObjectSu @Override + @Nullable public View resolveViewName(String viewName, Locale locale) throws Exception { if (!isCache()) { return createView(viewName, locale); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/BeanNameViewResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/BeanNameViewResolver.java index 10396f96197..13312ff5327 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/BeanNameViewResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/BeanNameViewResolver.java @@ -21,6 +21,7 @@ import java.util.Locale; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.core.Ordered; +import org.springframework.lang.Nullable; import org.springframework.web.context.support.WebApplicationObjectSupport; import org.springframework.web.servlet.View; import org.springframework.web.servlet.ViewResolver; @@ -67,6 +68,7 @@ public class BeanNameViewResolver extends WebApplicationObjectSupport implements @Override + @Nullable public View resolveViewName(String viewName, Locale locale) throws BeansException { ApplicationContext context = obtainApplicationContext(); if (!context.containsBean(viewName)) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/ContentNegotiatingViewResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/ContentNegotiatingViewResolver.java index d3c8b6d5bd9..2c555203cca 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/ContentNegotiatingViewResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/ContentNegotiatingViewResolver.java @@ -219,6 +219,7 @@ public class ContentNegotiatingViewResolver extends WebApplicationObjectSupport @Override + @Nullable public View resolveViewName(String viewName, Locale locale) throws Exception { RequestAttributes attrs = RequestContextHolder.getRequestAttributes(); Assert.state(attrs instanceof ServletRequestAttributes, "No current ServletRequestAttributes"); @@ -364,6 +365,7 @@ public class ContentNegotiatingViewResolver extends WebApplicationObjectSupport private static final View NOT_ACCEPTABLE_VIEW = new View() { @Override + @Nullable public String getContentType() { return null; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/ViewResolverComposite.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/ViewResolverComposite.java index 6f82fc5bdca..d782578dda5 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/ViewResolverComposite.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/ViewResolverComposite.java @@ -27,6 +27,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.core.Ordered; +import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; import org.springframework.web.context.ServletContextAware; import org.springframework.web.servlet.View; @@ -101,6 +102,7 @@ public class ViewResolverComposite implements ViewResolver, Ordered, Initializin } @Override + @Nullable public View resolveViewName(String viewName, Locale locale) throws Exception { for (ViewResolver viewResolver : this.viewResolvers) { View view = viewResolver.resolveViewName(viewName, locale); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketHttpHeaders.java b/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketHttpHeaders.java index 43fbd601ce9..a28af6d97c1 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketHttpHeaders.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketHttpHeaders.java @@ -206,6 +206,7 @@ public class WebSocketHttpHeaders extends HttpHeaders { * @return the first header value; or {@code null} */ @Override + @Nullable public String getFirst(String headerName) { return this.headers.getFirst(headerName); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketSession.java index b860602c390..9016c3e8300 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketSession.java @@ -43,7 +43,6 @@ public interface WebSocketSession extends Closeable { /** * Return the URI used to open the WebSocket connection. - * ({@code null} on the client side). */ @Nullable URI getUri(); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/AbstractWebSocketSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/AbstractWebSocketSession.java index b5fa19b6f67..a57c247a7e0 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/AbstractWebSocketSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/AbstractWebSocketSession.java @@ -74,6 +74,7 @@ public abstract class AbstractWebSocketSession implements NativeWebSocketSess @SuppressWarnings("unchecked") @Override + @Nullable public R getNativeSession(@Nullable Class requiredType) { return (requiredType == null || requiredType.isInstance(this.nativeSession) ? (R) this.nativeSession : null); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/NativeWebSocketSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/NativeWebSocketSession.java index c8c217121f5..87e4431a50b 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/NativeWebSocketSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/NativeWebSocketSession.java @@ -40,6 +40,6 @@ public interface NativeWebSocketSession extends WebSocketSession { * or {@code null} if not available */ @Nullable - T getNativeSession(Class requiredType); + T getNativeSession(@Nullable Class requiredType); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/jetty/JettyWebSocketSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/jetty/JettyWebSocketSession.java index 61348da16eb..7142c12dd13 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/jetty/JettyWebSocketSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/jetty/JettyWebSocketSession.java @@ -102,6 +102,7 @@ public class JettyWebSocketSession extends AbstractWebSocketSession { } @Override + @Nullable public URI getUri() { checkNativeSessionInitialized(); return this.uri; diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardWebSocketSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardWebSocketSession.java index fd0c8123266..77d1a6d4055 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardWebSocketSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardWebSocketSession.java @@ -117,6 +117,7 @@ public class StandardWebSocketSession extends AbstractWebSocketSession } @Override + @Nullable public URI getUri() { checkNativeSessionInitialized(); return this.uri; diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java b/spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java index 346e48046d4..05a67eb81a9 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java @@ -31,6 +31,7 @@ import org.springframework.beans.factory.support.ManagedMap; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; import org.springframework.web.socket.server.support.OriginHandshakeInterceptor; @@ -56,6 +57,7 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser { @Override + @Nullable public BeanDefinition parse(Element element, ParserContext context) { Object source = context.extractSource(element); CompositeComponentDefinition compDefinition = new CompositeComponentDefinition(element.getTagName(), source); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebSocketConfigurationSupport.java b/spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebSocketConfigurationSupport.java index 0019489847e..9cb8d5134d6 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebSocketConfigurationSupport.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebSocketConfigurationSupport.java @@ -103,6 +103,7 @@ public class WebSocketConfigurationSupport { private static class NoOpScheduler implements TaskScheduler { @Override + @Nullable public ScheduledFuture schedule(Runnable task, Trigger trigger) { throw new IllegalStateException("Unexpected use of scheduler."); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/handler/WebSocketSessionDecorator.java b/spring-websocket/src/main/java/org/springframework/web/socket/handler/WebSocketSessionDecorator.java index 9bf3b685c9d..f693b820e01 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/handler/WebSocketSessionDecorator.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/handler/WebSocketSessionDecorator.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; import org.springframework.http.HttpHeaders; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.WebSocketExtension; @@ -79,6 +80,7 @@ public class WebSocketSessionDecorator implements WebSocketSession { } @Override + @Nullable public URI getUri() { return this.delegate.getUri(); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/DefaultSimpUserRegistry.java b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/DefaultSimpUserRegistry.java index 6ab92cbc0ae..50c47b63fa4 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/DefaultSimpUserRegistry.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/DefaultSimpUserRegistry.java @@ -143,6 +143,7 @@ public class DefaultSimpUserRegistry implements SimpUserRegistry, SmartApplicati // SimpUserRegistry methods @Override + @Nullable public SimpUser getUser(String userName) { return this.users.get(userName); } @@ -198,6 +199,7 @@ public class DefaultSimpUserRegistry implements SimpUserRegistry, SmartApplicati } @Override + @Nullable public SimpSession getSession(@Nullable String sessionId) { return (sessionId != null ? this.userSessions.get(sessionId) : null); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolErrorHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolErrorHandler.java index a2ec6724dcb..68201480d1f 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolErrorHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolErrorHandler.java @@ -57,6 +57,7 @@ public class StompSubProtocolErrorHandler implements SubProtocolErrorHandler handleErrorMessageToClient(Message errorMessage) { StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(errorMessage, StompHeaderAccessor.class); Assert.notNull(accessor, "No StompHeaderAccessor"); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java index 88dd47bda70..98b16102324 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java @@ -583,6 +583,7 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE } @Override + @Nullable public String resolveSessionId(Message message) { return SimpMessageHeaderAccessor.getSessionId(message.getHeaders()); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/WebSocketAnnotationMethodMessageHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/WebSocketAnnotationMethodMessageHandler.java index ce590be4891..3f4ae0bda78 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/WebSocketAnnotationMethodMessageHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/WebSocketAnnotationMethodMessageHandler.java @@ -103,6 +103,7 @@ public class WebSocketAnnotationMethodMessageHandler extends SimpAnnotationMetho } @Override + @Nullable public Class getBeanType() { return this.adviceBean.getBeanType(); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/ServletServerContainerFactoryBean.java b/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/ServletServerContainerFactoryBean.java index 5efff0f8bd4..25fcf704317 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/ServletServerContainerFactoryBean.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/ServletServerContainerFactoryBean.java @@ -133,6 +133,7 @@ public class ServletServerContainerFactoryBean @Override + @Nullable public ServerContainer getObject() { return this.serverContainer; } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/WebSocketClientSockJsSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/WebSocketClientSockJsSession.java index 1a4a34b9f3e..5419af29c0e 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/WebSocketClientSockJsSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/WebSocketClientSockJsSession.java @@ -58,6 +58,7 @@ public class WebSocketClientSockJsSession extends AbstractClientSockJsSession im @SuppressWarnings("unchecked") @Override + @Nullable public T getNativeSession(@Nullable Class requiredType) { return (requiredType == null || requiredType.isInstance(this.webSocketSession) ? (T) this.webSocketSession : null); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/Jackson2SockJsMessageCodec.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/Jackson2SockJsMessageCodec.java index 8ed46882c5a..6686fc6f109 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/Jackson2SockJsMessageCodec.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/Jackson2SockJsMessageCodec.java @@ -25,6 +25,7 @@ import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -58,11 +59,13 @@ public class Jackson2SockJsMessageCodec extends AbstractSockJsMessageCodec { @Override + @Nullable public String[] decode(String content) throws IOException { return this.objectMapper.readValue(content, String[].class); } @Override + @Nullable public String[] decodeInputStream(InputStream content) throws IOException { return this.objectMapper.readValue(content, String[].class); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java index 273bbacd6af..79e773be697 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java @@ -488,6 +488,7 @@ public abstract class AbstractSockJsService implements SockJsService, CorsConfig } @Override + @Nullable public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { if (!this.suppressCors && CorsUtils.isCorsRequest(request)) { CorsConfiguration config = new CorsConfiguration(); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/SockJsHttpRequestHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/SockJsHttpRequestHandler.java index 81e0c65a065..403f0dad604 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/SockJsHttpRequestHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/SockJsHttpRequestHandler.java @@ -27,6 +27,7 @@ import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.http.server.ServletServerHttpRequest; import org.springframework.http.server.ServletServerHttpResponse; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.web.HttpRequestHandler; import org.springframework.web.context.ServletContextAware; @@ -143,6 +144,7 @@ public class SockJsHttpRequestHandler } @Override + @Nullable public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { if (this.sockJsService instanceof CorsConfigurationSource) { return ((CorsConfigurationSource) this.sockJsService).getCorsConfiguration(request); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/JsonpReceivingTransportHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/JsonpReceivingTransportHandler.java index fd74f8440b9..f4482aed336 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/JsonpReceivingTransportHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/JsonpReceivingTransportHandler.java @@ -24,6 +24,7 @@ import org.springframework.http.MediaType; import org.springframework.http.converter.FormHttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; +import org.springframework.lang.Nullable; import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; import org.springframework.web.socket.WebSocketHandler; @@ -62,6 +63,7 @@ public class JsonpReceivingTransportHandler extends AbstractHttpReceivingTranspo } @Override + @Nullable protected String[] readMessages(ServerHttpRequest request) throws IOException { SockJsMessageCodec messageCodec = getServiceConfig().getMessageCodec(); MediaType contentType = request.getHeaders().getContentType(); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/XhrReceivingTransportHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/XhrReceivingTransportHandler.java index dc40b28b2a8..4af55484149 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/XhrReceivingTransportHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/XhrReceivingTransportHandler.java @@ -20,6 +20,7 @@ import java.io.IOException; import org.springframework.http.HttpStatus; import org.springframework.http.server.ServerHttpRequest; +import org.springframework.lang.Nullable; import org.springframework.web.socket.sockjs.transport.TransportHandler; import org.springframework.web.socket.sockjs.transport.TransportType; @@ -37,6 +38,7 @@ public class XhrReceivingTransportHandler extends AbstractHttpReceivingTransport } @Override + @Nullable protected String[] readMessages(ServerHttpRequest request) throws IOException { return getServiceConfig().getMessageCodec().decodeInputStream(request.getBody()); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/WebSocketServerSockJsSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/WebSocketServerSockJsSession.java index 5b5410e97e3..7d1d46826c9 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/WebSocketServerSockJsSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/WebSocketServerSockJsSession.java @@ -70,6 +70,7 @@ public class WebSocketServerSockJsSession extends AbstractSockJsSession implemen @Override + @Nullable public URI getUri() { Assert.state(this.webSocketSession != null, "WebSocketSession not yet initialized"); return this.webSocketSession.getUri(); @@ -143,7 +144,8 @@ public class WebSocketServerSockJsSession extends AbstractSockJsSession implemen } @Override - public T getNativeSession(Class requiredType) { + @Nullable + public T getNativeSession(@Nullable Class requiredType) { return (this.webSocketSession instanceof NativeWebSocketSession ? ((NativeWebSocketSession) this.webSocketSession).getNativeSession(requiredType) : null); }