Search in sources :

Example 16 with Cache

use of com.alicp.jetcache.Cache in project jetcache by alibaba.

the class CacheContext method buildCache.

protected Cache buildCache(CachedAnnoConfig cachedAnnoConfig, String area, String cacheName) {
    Cache cache;
    if (cachedAnnoConfig.getCacheType() == CacheType.LOCAL) {
        cache = buildLocal(cachedAnnoConfig, area);
    } else if (cachedAnnoConfig.getCacheType() == CacheType.REMOTE) {
        cache = buildRemote(cachedAnnoConfig, area, cacheName);
    } else {
        Cache local = buildLocal(cachedAnnoConfig, area);
        Cache remote = buildRemote(cachedAnnoConfig, area, cacheName);
        boolean useExpireOfSubCache = cachedAnnoConfig.getLocalExpire() > 0;
        cache = MultiLevelCacheBuilder.createMultiLevelCacheBuilder().expireAfterWrite(remote.config().getExpireAfterWriteInMillis(), TimeUnit.MILLISECONDS).addCache(local, remote).useExpireOfSubCache(useExpireOfSubCache).cacheNullValue(cachedAnnoConfig.isCacheNullValue()).buildCache();
    }
    cache.config().setRefreshPolicy(cachedAnnoConfig.getRefreshPolicy());
    cache = new CacheHandler.CacheHandlerRefreshCache(cache);
    cache.config().setCachePenetrationProtect(globalCacheConfig.isPenetrationProtect());
    PenetrationProtectConfig protectConfig = cachedAnnoConfig.getPenetrationProtectConfig();
    if (protectConfig != null) {
        cache.config().setCachePenetrationProtect(protectConfig.isPenetrationProtect());
        cache.config().setPenetrationProtectTimeout(protectConfig.getPenetrationProtectTimeout());
    }
    if (configProvider.getCacheMonitorManager() != null) {
        configProvider.getCacheMonitorManager().addMonitors(area, cacheName, cache);
    }
    return cache;
}
Also used : CacheHandler(com.alicp.jetcache.anno.method.CacheHandler) Cache(com.alicp.jetcache.Cache) EnableCache(com.alicp.jetcache.anno.EnableCache)

Example 17 with Cache

use of com.alicp.jetcache.Cache in project jetcache by alibaba.

the class CacheContext method __createOrGetCache.

public Cache __createOrGetCache(CachedAnnoConfig cachedAnnoConfig, String area, String cacheName) {
    String fullCacheName = area + "_" + cacheName;
    Cache cache = cacheManager.getCacheWithoutCreate(area, cacheName);
    if (cache == null) {
        synchronized (this) {
            cache = cacheManager.getCacheWithoutCreate(area, cacheName);
            if (cache == null) {
                if (globalCacheConfig.isAreaInCacheName()) {
                    // for compatible reason, if we use default configuration, the prefix should same to that version <=2.4.3
                    cache = buildCache(cachedAnnoConfig, area, fullCacheName);
                } else {
                    cache = buildCache(cachedAnnoConfig, area, cacheName);
                }
                cacheManager.putCache(area, cacheName, cache);
            }
        }
    }
    return cache;
}
Also used : Cache(com.alicp.jetcache.Cache) EnableCache(com.alicp.jetcache.anno.EnableCache)

Aggregations

Cache (com.alicp.jetcache.Cache)17 EnableCache (com.alicp.jetcache.anno.EnableCache)7 Test (org.junit.Test)5 MultiLevelCache (com.alicp.jetcache.MultiLevelCache)4 RefreshCache (com.alicp.jetcache.RefreshCache)3 CacheConfigException (com.alicp.jetcache.CacheConfigException)2 LoadingCacheTest (com.alicp.jetcache.LoadingCacheTest)2 AbstractExternalCacheTest (com.alicp.jetcache.test.external.AbstractExternalCacheTest)2 Random (java.util.Random)2 AbstractCache (com.alicp.jetcache.AbstractCache)1 CacheGetResult (com.alicp.jetcache.CacheGetResult)1 CacheMonitor (com.alicp.jetcache.CacheMonitor)1 CacheUtil (com.alicp.jetcache.CacheUtil)1 ProxyCache (com.alicp.jetcache.ProxyCache)1 RefreshCacheTest (com.alicp.jetcache.RefreshCacheTest)1 CacheHandler (com.alicp.jetcache.anno.method.CacheHandler)1 CacheInvokeConfig (com.alicp.jetcache.anno.method.CacheInvokeConfig)1 CacheInvokeContext (com.alicp.jetcache.anno.method.CacheInvokeContext)1 EmbeddedCacheBuilder (com.alicp.jetcache.embedded.EmbeddedCacheBuilder)1 CachePutAllEvent (com.alicp.jetcache.event.CachePutAllEvent)1