49 lines
1.1 KiB
Java
49 lines
1.1 KiB
Java
package org.gcube.application.cms.caches;
|
|
|
|
import lombok.NonNull;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.Setter;
|
|
import lombok.Synchronized;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.gcube.application.geoportal.common.utils.ContextUtils;
|
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.temporal.TemporalAmount;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
@Slf4j
|
|
/**
|
|
* TTL Map Context -> T
|
|
*
|
|
*/
|
|
public abstract class AbstractScopedMap<T> extends TimedMap<String,T> implements Engine<T>{
|
|
|
|
public AbstractScopedMap(@NonNull String name) {
|
|
super(name);
|
|
}
|
|
|
|
@Override
|
|
public T getObject() throws ConfigurationException {
|
|
return get(ContextUtils.getCurrentScope());
|
|
}
|
|
|
|
|
|
@Override
|
|
public void init() {}
|
|
|
|
@Override
|
|
public void shutdown() {
|
|
log.warn(name + ": shutting down");
|
|
scopeMap.forEach((String s,TTLObject<T> o)->{
|
|
try{if(o!=null&&o.getTheObject()!=null)
|
|
dispose(o.getTheObject());
|
|
}catch(Throwable t) {
|
|
log.warn(name +": unable to dispose ",t);
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|