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

45 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.extern.slf4j.Slf4j;
2023-01-10 15:57:40 +01:00
import org.gcube.application.cms.implementations.utils.UserUtils;
2022-02-04 17:45:47 +01:00
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
2022-09-26 16:11:20 +02:00
import org.gcube.application.geoportal.common.utils.ContextUtils;
2021-09-20 16:47:35 +02:00
@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 {
2023-01-10 15:57:40 +01:00
UserUtils.AuthenticatedUser user = UserUtils.getCurrent();
String context = user.getContext();
log.debug(" {} : Accessing object under context {} ",name,context);
return get(context);
2022-03-10 18:15:10 +01:00
}
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
}