Add resetCaches() method to general CacheManager interface

Closes gh-35845
See gh-35840
This commit is contained in:
Juergen Hoeller
2025-12-04 00:12:13 +01:00
parent 2c6ccaea05
commit 96aadc2b12
6 changed files with 75 additions and 2 deletions
@@ -130,4 +130,17 @@ public class JCacheCacheManager extends AbstractTransactionSupportingCacheManage
return null;
}
@Override
public void resetCaches() {
CacheManager cacheManager = getCacheManager();
if (cacheManager != null && !cacheManager.isClosed()) {
for (String cacheName : cacheManager.getCacheNames()) {
javax.cache.Cache<Object, Object> jcache = cacheManager.getCache(cacheName);
if (jcache != null && !jcache.isClosed()) {
jcache.clear();
}
}
}
}
}
@@ -51,8 +51,7 @@ class JCacheEhCacheApiTests extends AbstractValueAdaptingCacheTests<JCacheCache>
this.cacheManager.createCache(CACHE_NAME_NO_NULL, new MutableConfiguration<>());
this.nativeCache = this.cacheManager.getCache(CACHE_NAME);
this.cache = new JCacheCache(this.nativeCache);
Cache<Object, Object> nativeCacheNoNull =
this.cacheManager.getCache(CACHE_NAME_NO_NULL);
Cache<Object, Object> nativeCacheNoNull = this.cacheManager.getCache(CACHE_NAME_NO_NULL);
this.cacheNoNull = new JCacheCache(nativeCacheNoNull, false);
}
@@ -100,4 +99,18 @@ class JCacheEhCacheApiTests extends AbstractValueAdaptingCacheTests<JCacheCache>
assertThat(cache.get(key).get()).isEqualTo(value);
}
@Test
void resetCaches() {
JCacheCacheManager cm = new JCacheCacheManager(cacheManager);
org.springframework.cache.Cache cache = cm.getCache(CACHE_NAME);
cache.put("key", "value");
assertThat(cm.getCacheNames()).contains(CACHE_NAME);
assertThat(cm.getCache(CACHE_NAME)).isNotNull().isSameAs(cache);
assertThat(cacheManager.getCache(CACHE_NAME).iterator()).hasNext();
cm.resetCaches();
assertThat(cm.getCacheNames()).contains(CACHE_NAME);
assertThat(cm.getCache(CACHE_NAME)).isNotNull().isSameAs(cache);
assertThat(cacheManager.getCache(CACHE_NAME).iterator()).isExhausted();
}
}