Skip to content

Commit 1e3f865

Browse files
committed
Refine SingletonSupplier<T> static methods nullability
SingletonSupplier<T> supplier-based static methods nullability should be refined to accept in a flexible way nullable or non-nullable T. Closes gh-35559
1 parent a2c0e1c commit 1e3f865

File tree

5 files changed

+19
-14
lines changed

5 files changed

+19
-14
lines changed

spring-context-support/src/main/java/org/springframework/cache/jcache/config/AbstractJCacheConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@
4141
@Configuration(proxyBeanMethods = false)
4242
public abstract class AbstractJCacheConfiguration extends AbstractCachingConfiguration {
4343

44-
protected @Nullable Supplier<@Nullable CacheResolver> exceptionCacheResolver;
44+
@SuppressWarnings("NullAway.Init")
45+
protected Supplier<@Nullable CacheResolver> exceptionCacheResolver;
4546

4647

4748
@Override
48-
@SuppressWarnings("NullAway") // https://github.com/uber/NullAway/issues/1128
49+
@SuppressWarnings("NullAway") // See https://github.com/uber/NullAway/issues/1290
4950
protected void useCachingConfigurer(CachingConfigurerSupplier cachingConfigurerSupplier) {
5051
super.useCachingConfigurer(cachingConfigurerSupplier);
5152
this.exceptionCacheResolver = cachingConfigurerSupplier.adapt(config -> {

spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/DefaultJCacheOperationSource.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@
5050
public class DefaultJCacheOperationSource extends AnnotationJCacheOperationSource
5151
implements BeanFactoryAware, SmartInitializingSingleton {
5252

53-
private @Nullable SingletonSupplier<CacheManager> cacheManager;
53+
private @Nullable SingletonSupplier<@Nullable CacheManager> cacheManager;
5454

55-
private @Nullable SingletonSupplier<CacheResolver> cacheResolver;
55+
private @Nullable SingletonSupplier<@Nullable CacheResolver> cacheResolver;
5656

57-
private @Nullable SingletonSupplier<CacheResolver> exceptionCacheResolver;
57+
private @Nullable SingletonSupplier<@Nullable CacheResolver> exceptionCacheResolver;
5858

5959
private SingletonSupplier<KeyGenerator> keyGenerator;
6060

spring-context/src/main/java/org/springframework/cache/annotation/AbstractCachingConfiguration.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,17 @@ public abstract class AbstractCachingConfiguration implements ImportAware {
5050

5151
protected @Nullable AnnotationAttributes enableCaching;
5252

53-
protected @Nullable Supplier<@Nullable CacheManager> cacheManager;
53+
@SuppressWarnings("NullAway.Init")
54+
protected Supplier<@Nullable CacheManager> cacheManager;
5455

55-
protected @Nullable Supplier<@Nullable CacheResolver> cacheResolver;
56+
@SuppressWarnings("NullAway.Init")
57+
protected Supplier<@Nullable CacheResolver> cacheResolver;
5658

57-
protected @Nullable Supplier<@Nullable KeyGenerator> keyGenerator;
59+
@SuppressWarnings("NullAway.Init")
60+
protected Supplier<@Nullable KeyGenerator> keyGenerator;
5861

59-
protected @Nullable Supplier<@Nullable CacheErrorHandler> errorHandler;
62+
@SuppressWarnings("NullAway.Init")
63+
protected Supplier<@Nullable CacheErrorHandler> errorHandler;
6064

6165

6266
@Override
@@ -101,7 +105,7 @@ protected void useCachingConfigurer(CachingConfigurerSupplier cachingConfigurerS
101105

102106
protected static class CachingConfigurerSupplier {
103107

104-
private final SingletonSupplier<CachingConfigurer> supplier;
108+
private final SingletonSupplier<@Nullable CachingConfigurer> supplier;
105109

106110
public CachingConfigurerSupplier(Supplier<@Nullable CachingConfigurer> supplier) {
107111
this.supplier = SingletonSupplier.ofNullable(supplier);

spring-core/src/main/java/org/springframework/util/function/SingletonSupplier.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ public static <T> SingletonSupplier<T> of(T instance) {
143143
* @return the singleton supplier, or {@code null} if the instance was {@code null}
144144
*/
145145
@Contract("null -> null; !null -> !null")
146-
public static <T> @Nullable SingletonSupplier<T> ofNullable(@Nullable T instance) {
146+
public static <T extends @Nullable Object> @Nullable SingletonSupplier<T> ofNullable(T instance) {
147147
return (instance != null ? new SingletonSupplier<>(instance) : null);
148148
}
149149

@@ -152,7 +152,7 @@ public static <T> SingletonSupplier<T> of(T instance) {
152152
* @param supplier the instance supplier (never {@code null})
153153
* @return the singleton supplier (never {@code null})
154154
*/
155-
public static <T> SingletonSupplier<T> of(Supplier<T> supplier) {
155+
public static <T extends @Nullable Object> SingletonSupplier<T> of(Supplier<T> supplier) {
156156
return new SingletonSupplier<>(supplier);
157157
}
158158

@@ -162,7 +162,7 @@ public static <T> SingletonSupplier<T> of(Supplier<T> supplier) {
162162
* @return the singleton supplier, or {@code null} if the instance supplier was {@code null}
163163
*/
164164
@Contract("null -> null; !null -> !null")
165-
public static <T> @Nullable SingletonSupplier<T> ofNullable(@Nullable Supplier<@Nullable T> supplier) {
165+
public static <T extends @Nullable Object> @Nullable SingletonSupplier<T> ofNullable(@Nullable Supplier<T> supplier) {
166166
return (supplier != null ? new SingletonSupplier<>(supplier) : null);
167167
}
168168

spring-core/src/main/java/org/springframework/util/function/SupplierUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public abstract class SupplierUtils {
3838
* @return the supplier's result, or {@code null} if none
3939
*/
4040
@Contract("null -> null")
41-
public static <T> @Nullable T resolve(@Nullable Supplier<T> supplier) {
41+
public static <T extends @Nullable Object> @Nullable T resolve(@Nullable Supplier<T> supplier) {
4242
return (supplier != null ? supplier.get() : null);
4343
}
4444

0 commit comments

Comments
 (0)