in jetcache-core/src/main/java/com/alicp/jetcache/SimpleCacheManager.java [111:149]
private Cache create(QuickConfig config) {
Cache cache;
if (config.getCacheType() == null || config.getCacheType() == CacheType.REMOTE) {
cache = buildRemote(config);
} else if (config.getCacheType() == CacheType.LOCAL) {
cache = buildLocal(config);
} else {
Cache local = buildLocal(config);
Cache remote = buildRemote(config);
boolean useExpireOfSubCache = config.getLocalExpire() != null;
cache = MultiLevelCacheBuilder.createMultiLevelCacheBuilder()
.expireAfterWrite(remote.config().getExpireAfterWriteInMillis(), TimeUnit.MILLISECONDS)
.addCache(local, remote)
.useExpireOfSubCache(useExpireOfSubCache)
.cacheNullValue(config.getCacheNullValue() != null ?
config.getCacheNullValue() : DEFAULT_CACHE_NULL_VALUE)
.buildCache();
}
if (config.getRefreshPolicy() != null) {
cache = new RefreshCache(cache);
} else if (config.getLoader() != null) {
cache = new LoadingCache(cache);
}
cache.config().setRefreshPolicy(config.getRefreshPolicy());
cache.config().setLoader(config.getLoader());
boolean protect = config.getPenetrationProtect() != null ? config.getPenetrationProtect()
: cacheBuilderTemplate.isPenetrationProtect();
cache.config().setCachePenetrationProtect(protect);
cache.config().setPenetrationProtectTimeout(config.getPenetrationProtectTimeout());
for (CacheMonitorInstaller i : cacheBuilderTemplate.getCacheMonitorInstallers()) {
i.addMonitors(this, cache, config);
}
return cache;
}