///** // * // */ //package org.gcube.datatransfer.resolver.caches; // //import java.util.concurrent.TimeUnit; // //import org.gcube.common.scope.api.ScopeProvider; //import org.gcube.datatransfer.resolver.catalogue.resource.ApplicationProfileReaderForCatalogueResolver; //import org.gcube.datatransfer.resolver.listeners.UriResolverStartupListener; //import org.slf4j.Logger; //import org.slf4j.LoggerFactory; // //import com.google.common.cache.CacheBuilder; //import com.google.common.cache.CacheLoader; //import com.google.common.cache.LoadingCache; //import com.google.common.cache.RemovalListener; //import com.google.common.cache.RemovalNotification; // // ///** // * The Class LoadingCatalogueApplicationProfilesCache. // * // * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) // * Nov 5, 2018 // */ //public class LoadingCatalogueApplicationProfilesCache { // // private static Logger logger = LoggerFactory.getLogger(LoadingCatalogueApplicationProfilesCache.class); // private static LoadingCache catalogueApplicationProfiles; // // static{ // // CacheLoader loader = new CacheLoader(){ // // @Override // public String load(String vreName) // throws Exception { // // logger.info("Loading the cache for vreName: "+vreName); // String fullScope = loadFullScopeByApplicationProfile(vreName); // logger.info("Returning fullScope: "+fullScope+ " for the VRE name: "+vreName); // return fullScope; // } // // }; // // RemovalListener removalListener = new RemovalListener() { // // @Override // public void onRemoval(RemovalNotification arg0) { // // logger.info("cache expired"); // //prePopulateCache(); // // } // }; // // catalogueApplicationProfiles = CacheBuilder.newBuilder().maximumSize(100).expireAfterWrite( // 1, TimeUnit.DAYS).removalListener(removalListener). // build(loader); // // // //Populating the cache at init stage // populateTheCache(); // logger.info("Pre-Loaded CatalogueApplicationProfiles cache with: "+catalogueApplicationProfiles.asMap().size()+" item/s"); // } // // // /** // * Populate the cache. // */ // private static void populateTheCache(){ // try{ // //POPULATE THE CACHE READING THE RESOURCE "CATALOGUE-RESOLVER" // logger.info("Trying to pre-populate catalogue resolver cache"); // ScopeProvider.instance.set(UriResolverStartupListener.getRootContextScope()); // ApplicationProfileReaderForCatalogueResolver appPrCatResolver = new ApplicationProfileReaderForCatalogueResolver(UriResolverStartupListener.getRootContextScope(), true); // catalogueApplicationProfiles.asMap().putAll(appPrCatResolver.getHashVreNameScope()); // logger.info("Cache populated with: "+catalogueApplicationProfiles.asMap().toString()); // //logger.info("Pre-Loaded CatalogueApplicationProfiles cache is: "+catalogueApplicationProfiles.asMap().toString()); // }catch(Exception e){ // // }finally{ // // } // } // // /** // * Gets the cache. // * // * @return the cache // */ // public static LoadingCache getCache(){ // return catalogueApplicationProfiles; // } // // // // /** // * Load application profiles. // * // * @param vreName the vre name // * @return the string // */ // public static String loadFullScopeByApplicationProfile(String vreName){ // // //THIS CHECK SHOULD BE NOT NEEDED // String fullScope = catalogueApplicationProfiles.getIfPresent(vreName); // // if(fullScope==null){ // populateTheCache(); // fullScope = catalogueApplicationProfiles.getIfPresent(vreName); // } // // return fullScope; // } // //}