diff --git a/spring-context-support/src/main/java/org/springframework/cache/jcache/config/AbstractJCacheConfiguration.java b/spring-context-support/src/main/java/org/springframework/cache/jcache/config/AbstractJCacheConfiguration.java index 731e0b95513..1d171848a3e 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/jcache/config/AbstractJCacheConfiguration.java +++ b/spring-context-support/src/main/java/org/springframework/cache/jcache/config/AbstractJCacheConfiguration.java @@ -41,11 +41,12 @@ import org.springframework.context.annotation.Role; @Configuration(proxyBeanMethods = false) public abstract class AbstractJCacheConfiguration extends AbstractCachingConfiguration { - protected @Nullable Supplier<@Nullable CacheResolver> exceptionCacheResolver; + @SuppressWarnings("NullAway.Init") + protected Supplier<@Nullable CacheResolver> exceptionCacheResolver; @Override - @SuppressWarnings("NullAway") // https://github.com/uber/NullAway/issues/1128 + @SuppressWarnings("NullAway") // See https://github.com/uber/NullAway/issues/1290 protected void useCachingConfigurer(CachingConfigurerSupplier cachingConfigurerSupplier) { super.useCachingConfigurer(cachingConfigurerSupplier); this.exceptionCacheResolver = cachingConfigurerSupplier.adapt(config -> { diff --git a/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/DefaultJCacheOperationSource.java b/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/DefaultJCacheOperationSource.java index aba3f65c5db..20b72690f3f 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/DefaultJCacheOperationSource.java +++ b/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/DefaultJCacheOperationSource.java @@ -50,11 +50,11 @@ import org.springframework.util.function.SupplierUtils; public class DefaultJCacheOperationSource extends AnnotationJCacheOperationSource implements BeanFactoryAware, SmartInitializingSingleton { - private @Nullable SingletonSupplier cacheManager; + private @Nullable SingletonSupplier<@Nullable CacheManager> cacheManager; - private @Nullable SingletonSupplier cacheResolver; + private @Nullable SingletonSupplier<@Nullable CacheResolver> cacheResolver; - private @Nullable SingletonSupplier exceptionCacheResolver; + private @Nullable SingletonSupplier<@Nullable CacheResolver> exceptionCacheResolver; private SingletonSupplier keyGenerator; diff --git a/spring-context/src/main/java/org/springframework/cache/annotation/AbstractCachingConfiguration.java b/spring-context/src/main/java/org/springframework/cache/annotation/AbstractCachingConfiguration.java index 2437b5bf6d9..149b5add4f1 100644 --- a/spring-context/src/main/java/org/springframework/cache/annotation/AbstractCachingConfiguration.java +++ b/spring-context/src/main/java/org/springframework/cache/annotation/AbstractCachingConfiguration.java @@ -50,13 +50,17 @@ public abstract class AbstractCachingConfiguration implements ImportAware { protected @Nullable AnnotationAttributes enableCaching; - protected @Nullable Supplier<@Nullable CacheManager> cacheManager; + @SuppressWarnings("NullAway.Init") + protected Supplier<@Nullable CacheManager> cacheManager; - protected @Nullable Supplier<@Nullable CacheResolver> cacheResolver; + @SuppressWarnings("NullAway.Init") + protected Supplier<@Nullable CacheResolver> cacheResolver; - protected @Nullable Supplier<@Nullable KeyGenerator> keyGenerator; + @SuppressWarnings("NullAway.Init") + protected Supplier<@Nullable KeyGenerator> keyGenerator; - protected @Nullable Supplier<@Nullable CacheErrorHandler> errorHandler; + @SuppressWarnings("NullAway.Init") + protected Supplier<@Nullable CacheErrorHandler> errorHandler; @Override @@ -101,7 +105,7 @@ public abstract class AbstractCachingConfiguration implements ImportAware { protected static class CachingConfigurerSupplier { - private final SingletonSupplier supplier; + private final SingletonSupplier<@Nullable CachingConfigurer> supplier; public CachingConfigurerSupplier(Supplier<@Nullable CachingConfigurer> supplier) { this.supplier = SingletonSupplier.ofNullable(supplier); diff --git a/spring-core/src/main/java/org/springframework/util/function/SingletonSupplier.java b/spring-core/src/main/java/org/springframework/util/function/SingletonSupplier.java index 865cc6888a5..f0f63e07439 100644 --- a/spring-core/src/main/java/org/springframework/util/function/SingletonSupplier.java +++ b/spring-core/src/main/java/org/springframework/util/function/SingletonSupplier.java @@ -143,7 +143,7 @@ public class SingletonSupplier implements Supplier null; !null -> !null") - public static @Nullable SingletonSupplier ofNullable(@Nullable T instance) { + public static @Nullable SingletonSupplier ofNullable(T instance) { return (instance != null ? new SingletonSupplier<>(instance) : null); } @@ -152,7 +152,7 @@ public class SingletonSupplier implements Supplier SingletonSupplier of(Supplier supplier) { + public static SingletonSupplier of(Supplier supplier) { return new SingletonSupplier<>(supplier); } @@ -162,7 +162,7 @@ public class SingletonSupplier implements Supplier null; !null -> !null") - public static @Nullable SingletonSupplier ofNullable(@Nullable Supplier<@Nullable T> supplier) { + public static @Nullable SingletonSupplier ofNullable(@Nullable Supplier supplier) { return (supplier != null ? new SingletonSupplier<>(supplier) : null); } diff --git a/spring-core/src/main/java/org/springframework/util/function/SupplierUtils.java b/spring-core/src/main/java/org/springframework/util/function/SupplierUtils.java index 8c7b9230593..e4134d98385 100644 --- a/spring-core/src/main/java/org/springframework/util/function/SupplierUtils.java +++ b/spring-core/src/main/java/org/springframework/util/function/SupplierUtils.java @@ -38,7 +38,7 @@ public abstract class SupplierUtils { * @return the supplier's result, or {@code null} if none */ @Contract("null -> null") - public static @Nullable T resolve(@Nullable Supplier supplier) { + public static @Nullable T resolve(@Nullable Supplier supplier) { return (supplier != null ? supplier.get() : null); }