diff --git a/spring-context/src/main/java/org/springframework/cache/support/AbstractValueAdaptingCache.java b/spring-context/src/main/java/org/springframework/cache/support/AbstractValueAdaptingCache.java index 23b4d7b777c..bcd2bb529cd 100644 --- a/spring-context/src/main/java/org/springframework/cache/support/AbstractValueAdaptingCache.java +++ b/spring-context/src/main/java/org/springframework/cache/support/AbstractValueAdaptingCache.java @@ -84,7 +84,7 @@ public abstract class AbstractValueAdaptingCache implements Cache { * @return the value to return to the user */ protected @Nullable Object fromStoreValue(@Nullable Object storeValue) { - if (this.allowNullValues && storeValue == NullValue.INSTANCE) { + if (this.allowNullValues && storeValue instanceof NullValue) { return null; } return storeValue; diff --git a/spring-context/src/testFixtures/java/org/springframework/context/testfixture/cache/AbstractCacheTests.java b/spring-context/src/testFixtures/java/org/springframework/context/testfixture/cache/AbstractCacheTests.java index b869d3bec5b..29a9443cfd7 100644 --- a/spring-context/src/testFixtures/java/org/springframework/context/testfixture/cache/AbstractCacheTests.java +++ b/spring-context/src/testFixtures/java/org/springframework/context/testfixture/cache/AbstractCacheTests.java @@ -24,7 +24,9 @@ import java.util.concurrent.atomic.AtomicInteger; import org.junit.jupiter.api.Test; +import org.springframework.beans.BeanUtils; import org.springframework.cache.Cache; +import org.springframework.cache.support.NullValue; import static org.assertj.core.api.Assertions.assertThat; @@ -72,6 +74,12 @@ public abstract class AbstractCacheTests { assertThat(cache.get(key).get()).isNull(); assertThat(cache.get(key, String.class)).isNull(); assertThat(cache.get(key, Object.class)).isNull(); + + cache.put(key, BeanUtils.instantiateClass(NullValue.class)); + assertThat(cache.get(key)).isNotNull(); + assertThat(cache.get(key).get()).isNull(); + assertThat(cache.get(key, String.class)).isNull(); + assertThat(cache.get(key, Object.class)).isNull(); } @Test diff --git a/spring-context/src/testFixtures/java/org/springframework/context/testfixture/cache/AbstractValueAdaptingCacheTests.java b/spring-context/src/testFixtures/java/org/springframework/context/testfixture/cache/AbstractValueAdaptingCacheTests.java index 0598560847d..b0484052085 100644 --- a/spring-context/src/testFixtures/java/org/springframework/context/testfixture/cache/AbstractValueAdaptingCacheTests.java +++ b/spring-context/src/testFixtures/java/org/springframework/context/testfixture/cache/AbstractValueAdaptingCacheTests.java @@ -36,10 +36,9 @@ public abstract class AbstractValueAdaptingCacheTests - cache.put(key, null)) - .withMessageContaining(CACHE_NAME_NO_NULL) - .withMessageContaining("is configured to not allow null values but null was provided"); + assertThatIllegalArgumentException().isThrownBy(() -> cache.put(key, null)) + .withMessageContaining(CACHE_NAME_NO_NULL) + .withMessageContaining("is configured to not allow null values but null was provided"); } } diff --git a/spring-core/src/main/java/org/springframework/util/AntPathMatcher.java b/spring-core/src/main/java/org/springframework/util/AntPathMatcher.java index cd62997a4a1..684046caf12 100644 --- a/spring-core/src/main/java/org/springframework/util/AntPathMatcher.java +++ b/spring-core/src/main/java/org/springframework/util/AntPathMatcher.java @@ -854,7 +854,6 @@ public class AntPathMatcher implements PathMatcher { */ private static class PatternInfo { - private final @Nullable String pattern; private int uriVars;