package edu.isi.karma.webserver;
import java.util.concurrent.ConcurrentHashMap;
public class ContextParametersRegistry {
private static ContextParametersRegistry singleton = new ContextParametersRegistry();
private final ConcurrentHashMap<String, ServletContextParameterMap> karmaHomeToContextParameters = new ConcurrentHashMap<>();
public static ContextParametersRegistry getInstance() {
return singleton;
}
private String defaultKarmaId = null;
public synchronized ServletContextParameterMap registerByKarmaHome(String karmaHome)
{
if(karmaHome == null || !karmaHomeToContextParameters.containsKey(karmaHome))
{
ServletContextParameterMap contextParameters = new ServletContextParameterMap(karmaHome);
karmaHomeToContextParameters.putIfAbsent(contextParameters.getKarmaHome(), contextParameters);
karmaHome = contextParameters.getKarmaHome();
}
return karmaHomeToContextParameters.get(karmaHome);
}
public ServletContextParameterMap getContextParameters(String karmaHome) {
return registerByKarmaHome(karmaHome);
}
public ServletContextParameterMap getDefault()
{
ServletContextParameterMap contextMap = registerByKarmaHome(defaultKarmaId);
defaultKarmaId = contextMap.getId();
return contextMap;
}
public synchronized void deregister(String contextId) {
karmaHomeToContextParameters.remove(contextId);
}
}