2017-12-15 00:01:26 +01:00
|
|
|
package eu.eudat.cache;
|
2017-11-21 17:29:16 +01:00
|
|
|
|
|
|
|
|
2021-06-29 13:33:57 +02:00
|
|
|
import com.github.benmanes.caffeine.cache.Caffeine;
|
2020-01-16 16:46:24 +01:00
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
2017-11-21 17:29:16 +01:00
|
|
|
import org.springframework.cache.CacheManager;
|
|
|
|
import org.springframework.cache.annotation.EnableCaching;
|
2021-06-29 13:33:57 +02:00
|
|
|
import org.springframework.cache.caffeine.CaffeineCache;
|
2021-11-29 16:26:29 +01:00
|
|
|
import org.springframework.cache.interceptor.KeyGenerator;
|
2017-11-21 17:29:16 +01:00
|
|
|
import org.springframework.cache.support.SimpleCacheManager;
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
2018-02-16 11:34:02 +01:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.concurrent.TimeUnit;
|
2017-11-21 17:29:16 +01:00
|
|
|
|
|
|
|
|
|
|
|
@Component
|
|
|
|
@EnableCaching
|
|
|
|
public class ResponsesCache {
|
2020-01-16 16:46:24 +01:00
|
|
|
private static final Logger logger = LoggerFactory.getLogger(ResponsesCache.class);
|
2017-11-21 17:29:16 +01:00
|
|
|
|
2018-02-16 11:34:02 +01:00
|
|
|
public static long HOW_MANY = 30;
|
|
|
|
public static TimeUnit TIME_UNIT = TimeUnit.MINUTES;
|
|
|
|
|
|
|
|
|
|
|
|
@Bean
|
|
|
|
public CacheManager cacheManager() {
|
2020-01-16 16:46:24 +01:00
|
|
|
logger.info("Loading ResponsesCache...");
|
2018-02-16 11:34:02 +01:00
|
|
|
SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
|
2021-06-29 13:33:57 +02:00
|
|
|
List<CaffeineCache> caches = new ArrayList<CaffeineCache>();
|
|
|
|
caches.add(new CaffeineCache("repositories", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
2022-01-21 14:44:51 +01:00
|
|
|
caches.add(new CaffeineCache("pubrepos", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("journals", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("taxonomies", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("publications", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
2021-06-29 13:33:57 +02:00
|
|
|
caches.add(new CaffeineCache("grants", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("projects", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("funders", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("organisations", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("registries", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("services", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("tags", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("researchers", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("externalDatasets", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("currencies", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
|
|
|
caches.add(new CaffeineCache("licenses", Caffeine.newBuilder().expireAfterAccess(HOW_MANY, TIME_UNIT).build()));
|
2018-02-16 11:34:02 +01:00
|
|
|
simpleCacheManager.setCaches(caches);
|
2020-01-16 16:46:24 +01:00
|
|
|
logger.info("OK");
|
2018-02-16 11:34:02 +01:00
|
|
|
return simpleCacheManager;
|
|
|
|
}
|
|
|
|
|
2021-11-29 16:26:29 +01:00
|
|
|
@Bean(name = "externalUrlsKeyGenerator")
|
|
|
|
private KeyGenerator externalUrlsKeyGenerator() {
|
|
|
|
return new ExternalUrlsKeyGenerator();
|
|
|
|
}
|
|
|
|
|
2017-11-21 17:29:16 +01:00
|
|
|
}
|