
ru.ydn.wicket.wicketconsole.ScriptExecutorHolder Maven / Gradle / Ivy
package ru.ydn.wicket.wicketconsole;
import java.util.HashMap;
import java.util.Map;
import org.apache.wicket.Application;
import org.apache.wicket.IInitializer;
import org.apache.wicket.MetaDataKey;
import org.apache.wicket.Session;
import org.apache.wicket.request.Request;
import org.apache.wicket.session.ISessionStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ScriptExecutorHolder implements ISessionStore.BindListener, ISessionStore.UnboundListener, IInitializer
{
private static final Logger LOG = LoggerFactory.getLogger(ScriptExecutorHolder.class);
public static final MetaDataKey SCRIPT_EXECUTOR_HOLDER = new MetaDataKey() {};
private Map scriptExecutorsCache = new HashMap();
public void sessionUnbound(String sessionId) {
scriptExecutorsCache.remove(sessionId);
}
public void bindingSession(Request request, Session newSession) {
}
public void init(Application application) {
ISessionStore store = application.getSessionStore();
store.registerBindListener(this);
store.registerUnboundListener(this);
application.setMetaData(SCRIPT_EXECUTOR_HOLDER, this);
}
public void destroy(Application application) {
}
public static ScriptExecutorHolder get() {
return get(Application.get());
}
public static ScriptExecutorHolder get(Application application)
{
return application.getMetaData(SCRIPT_EXECUTOR_HOLDER);
}
public ScriptExecutor getScriptExecutor()
{
Session session = Session.get();
String sessionId = session.getId();
ScriptExecutor executor = sessionId!=null?scriptExecutorsCache.get(sessionId):null;
if(executor==null)
{
executor = new ScriptExecutor();
if(session.isTemporary()) session.bind();
scriptExecutorsCache.put(sessionId, executor);
}
return executor;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy