All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.ydn.wicket.wicketconsole.ScriptExecutorHolder Maven / Gradle / Ivy

There is a newer version: 1.3
Show newest version
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