mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-17 08:24:13 +00:00
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
This commit is contained in:
+3
-2
@@ -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 -> {
|
||||
|
||||
+3
-3
@@ -50,11 +50,11 @@ import org.springframework.util.function.SupplierUtils;
|
||||
public class DefaultJCacheOperationSource extends AnnotationJCacheOperationSource
|
||||
implements BeanFactoryAware, SmartInitializingSingleton {
|
||||
|
||||
private @Nullable SingletonSupplier<CacheManager> cacheManager;
|
||||
private @Nullable SingletonSupplier<@Nullable CacheManager> cacheManager;
|
||||
|
||||
private @Nullable SingletonSupplier<CacheResolver> cacheResolver;
|
||||
private @Nullable SingletonSupplier<@Nullable CacheResolver> cacheResolver;
|
||||
|
||||
private @Nullable SingletonSupplier<CacheResolver> exceptionCacheResolver;
|
||||
private @Nullable SingletonSupplier<@Nullable CacheResolver> exceptionCacheResolver;
|
||||
|
||||
private SingletonSupplier<KeyGenerator> keyGenerator;
|
||||
|
||||
|
||||
Vendored
+9
-5
@@ -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<CachingConfigurer> supplier;
|
||||
private final SingletonSupplier<@Nullable CachingConfigurer> supplier;
|
||||
|
||||
public CachingConfigurerSupplier(Supplier<@Nullable CachingConfigurer> supplier) {
|
||||
this.supplier = SingletonSupplier.ofNullable(supplier);
|
||||
|
||||
@@ -143,7 +143,7 @@ public class SingletonSupplier<T extends @Nullable Object> implements Supplier<T
|
||||
* @return the singleton supplier, or {@code null} if the instance was {@code null}
|
||||
*/
|
||||
@Contract("null -> null; !null -> !null")
|
||||
public static <T> @Nullable SingletonSupplier<T> ofNullable(@Nullable T instance) {
|
||||
public static <T extends @Nullable Object> @Nullable SingletonSupplier<T> ofNullable(T instance) {
|
||||
return (instance != null ? new SingletonSupplier<>(instance) : null);
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ public class SingletonSupplier<T extends @Nullable Object> implements Supplier<T
|
||||
* @param supplier the instance supplier (never {@code null})
|
||||
* @return the singleton supplier (never {@code null})
|
||||
*/
|
||||
public static <T> SingletonSupplier<T> of(Supplier<T> supplier) {
|
||||
public static <T extends @Nullable Object> SingletonSupplier<T> of(Supplier<T> supplier) {
|
||||
return new SingletonSupplier<>(supplier);
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ public class SingletonSupplier<T extends @Nullable Object> implements Supplier<T
|
||||
* @return the singleton supplier, or {@code null} if the instance supplier was {@code null}
|
||||
*/
|
||||
@Contract("null -> null; !null -> !null")
|
||||
public static <T> @Nullable SingletonSupplier<T> ofNullable(@Nullable Supplier<@Nullable T> supplier) {
|
||||
public static <T extends @Nullable Object> @Nullable SingletonSupplier<T> ofNullable(@Nullable Supplier<T> supplier) {
|
||||
return (supplier != null ? new SingletonSupplier<>(supplier) : null);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ public abstract class SupplierUtils {
|
||||
* @return the supplier's result, or {@code null} if none
|
||||
*/
|
||||
@Contract("null -> null")
|
||||
public static <T> @Nullable T resolve(@Nullable Supplier<T> supplier) {
|
||||
public static <T extends @Nullable Object> @Nullable T resolve(@Nullable Supplier<T> supplier) {
|
||||
return (supplier != null ? supplier.get() : null);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user