gcube-cms-suite/cms-plugin-framework/src/main/java/org/gcube/application/cms/caches/AbstractScopedMap.java

49 lines
1.1 KiB
Java
Raw Normal View History

2022-02-18 14:41:41 +01:00
package org.gcube.application.cms.caches;
2021-09-20 16:47:35 +02:00
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
2021-11-15 16:27:21 +01:00
import org.gcube.application.geoportal.common.utils.ContextUtils;
2022-02-04 17:45:47 +01:00
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
2021-11-15 16:27:21 +01:00
2021-09-20 16:47:35 +02:00
import java.time.LocalDateTime;
import java.time.temporal.TemporalAmount;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
2022-03-10 18:15:10 +01:00
/**
* TTL Map Context -> T
*
*/
public abstract class AbstractScopedMap<T> extends TimedMap<String,T> implements Engine<T>{
public AbstractScopedMap(@NonNull String name) {
super(name);
}
2021-09-20 16:47:35 +02:00
2022-03-10 18:15:10 +01:00
@Override
2021-09-20 16:47:35 +02:00
public T getObject() throws ConfigurationException {
2022-03-10 18:15:10 +01:00
return get(ContextUtils.getCurrentScope());
}
2021-09-20 16:47:35 +02:00
2022-03-10 18:15:10 +01:00
@Override
public void init() {}
2021-09-20 16:47:35 +02:00
@Override
2021-10-05 16:27:19 +02:00
public void shutdown() {
2021-09-20 16:47:35 +02:00
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) {
2022-03-10 18:15:10 +01:00
log.warn(name +": unable to dispose ",t);
2021-09-20 16:47:35 +02:00
}
});
}
2021-09-20 16:47:35 +02:00
}