EhCache/JCacheCacheManager needs to re-obtain runtime-added Cache reference for potential decoration

Issue: SPR-11407
This commit is contained in:
Juergen Hoeller 2014-02-14 21:58:48 +01:00
parent 14e5a02870
commit ef1748f694
2 changed files with 7 additions and 8 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -89,12 +89,11 @@ public class EhCacheCacheManager extends AbstractTransactionSupportingCacheManag
public Cache getCache(String name) { public Cache getCache(String name) {
Cache cache = super.getCache(name); Cache cache = super.getCache(name);
if (cache == null) { if (cache == null) {
// check the EhCache cache again // Check the EhCache cache again (in case the cache was added at runtime)
// (in case the cache was added at runtime)
Ehcache ehcache = getCacheManager().getEhcache(name); Ehcache ehcache = getCacheManager().getEhcache(name);
if (ehcache != null) { if (ehcache != null) {
cache = new EhCacheCache(ehcache); addCache(new EhCacheCache(ehcache));
addCache(cache); cache = super.getCache(name); // potentially decorated
} }
} }
return cache; return cache;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -114,8 +114,8 @@ public class JCacheCacheManager extends AbstractTransactionSupportingCacheManage
// Check the JCache cache again (in case the cache was added at runtime) // Check the JCache cache again (in case the cache was added at runtime)
javax.cache.Cache<Object, Object> jcache = getCacheManager().getCache(name); javax.cache.Cache<Object, Object> jcache = getCacheManager().getCache(name);
if (jcache != null) { if (jcache != null) {
cache = new JCacheCache(jcache, isAllowNullValues()); addCache(new JCacheCache(jcache, isAllowNullValues()));
addCache(cache); cache = super.getCache(name); // potentially decorated
} }
} }
return cache; return cache;