Browse Source

Add generics to AbstractCacheManager#caches

Facilitates type-safe programmatic configuration from @Bean methods:

    @Bean
    public CacheManager cacheManager() {
        SimpleCacheManager cm = new SimpleCacheManager();
        cm.setCaches(Arrays.asList(
            new ConcurrentMapCache("default"),
            new ConcurrentMapCache("primary"),
            new ConcurrentMapCache("secondary")
        ));
        return cm;
    }

Prior to this change, the code above would have raised errors on the
Arrays.asList() call because it returns a Collection<? extends Cache>
as opposed to Collection<Cache>.

After this change, AbstractCacheManager expects
Collection<? extends Cache> throughout.
pull/7/head
Chris Beams 13 years ago
parent
commit
42cbee883f
  1. 4
      org.springframework.context/src/main/java/org/springframework/cache/support/AbstractCacheManager.java
  2. 6
      org.springframework.context/src/main/java/org/springframework/cache/support/SimpleCacheManager.java

4
org.springframework.context/src/main/java/org/springframework/cache/support/AbstractCacheManager.java vendored

@ -44,7 +44,7 @@ public abstract class AbstractCacheManager implements CacheManager, Initializing
public void afterPropertiesSet() { public void afterPropertiesSet() {
Collection<Cache> caches = loadCaches(); Collection<? extends Cache> caches = loadCaches();
Assert.notEmpty(caches, "loadCaches must not return an empty Collection"); Assert.notEmpty(caches, "loadCaches must not return an empty Collection");
this.cacheMap.clear(); this.cacheMap.clear();
@ -73,6 +73,6 @@ public abstract class AbstractCacheManager implements CacheManager, Initializing
* Load the caches for this cache manager. Occurs at startup. * Load the caches for this cache manager. Occurs at startup.
* The returned collection must not be null. * The returned collection must not be null.
*/ */
protected abstract Collection<Cache> loadCaches(); protected abstract Collection<? extends Cache> loadCaches();
} }

6
org.springframework.context/src/main/java/org/springframework/cache/support/SimpleCacheManager.java vendored

@ -29,17 +29,17 @@ import org.springframework.cache.Cache;
*/ */
public class SimpleCacheManager extends AbstractCacheManager { public class SimpleCacheManager extends AbstractCacheManager {
private Collection<Cache> caches; private Collection<? extends Cache> caches;
/** /**
* Specify the collection of Cache instances to use for this CacheManager. * Specify the collection of Cache instances to use for this CacheManager.
*/ */
public void setCaches(Collection<Cache> caches) { public void setCaches(Collection<? extends Cache> caches) {
this.caches = caches; this.caches = caches;
} }
@Override @Override
protected Collection<Cache> loadCaches() { protected Collection<? extends Cache> loadCaches() {
return this.caches; return this.caches;
} }

Loading…
Cancel
Save