/*
* Copyright (c) 2017 OBiBa. All rights reserved.
*
* This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.obiba.magma.support;
import org.obiba.magma.MagmaRuntimeException;
import org.springframework.cache.Cache;
import com.google.common.base.Supplier;
public class CacheUtils {
public static <T> T getCached(Cache cache, Object key, Supplier<T> supplier) {
try {
Cache.ValueWrapper cacheValue = cache.get(key);
if(cacheValue != null) return (T) cacheValue.get();
T res = supplier.get();
cache.put(key, res);
return res;
} catch(MagmaRuntimeException e) {
throw e;
}
}
}