package com.plexobject.rbac.cache; import java.util.ArrayList; import java.util.List; public class CacheFlusher { private List<CacheFlushable> caches = new ArrayList<CacheFlushable>(); private static final CacheFlusher INSTANCE = new CacheFlusher(); private CacheFlusher() { } public static CacheFlusher getInstance() { return INSTANCE; } public synchronized void addCacheFlushable(CacheFlushable cf) { caches.add(cf); } public synchronized void removeCacheFlushable(CacheFlushable cf) { caches.remove(cf); } public synchronized void flushCaches() { for (CacheFlushable cf : caches) { cf.flushCache(); } } public synchronized int[] cacheSizes() { int[] sizes = new int[caches.size()]; int i = 0; for (CacheFlushable cf : caches) { sizes[i++] = cf.cacheSize(); } return sizes; } }