package org.esmerilprogramming.overtown.http; import io.undertow.server.HttpServerExchange; import io.undertow.server.session.InMemorySessionManager; import io.undertow.server.session.Session; import io.undertow.server.session.SessionConfig; import io.undertow.server.session.SessionCookieConfig; public class OvertownSessionManager { private final InMemorySessionManager sessionManager; private final SessionConfig sessionConfig; private static OvertownSessionManager manager; public static OvertownSessionManager getInstance(){ if( manager == null){ manager = new OvertownSessionManager(); } return manager; } private OvertownSessionManager() { sessionManager = new InMemorySessionManager("CLOVERX"); sessionConfig = new SessionCookieConfig(); } private Session getUndertowSession(HttpServerExchange exchange){ return getSessionManager().getSession(exchange, getSessionConfig() ); } public OvertownSession createNewSession(HttpServerExchange exchange ){ Session undertowSession = getUndertowSession(exchange); if(undertowSession != null ){ undertowSession.invalidate(exchange); } return getSession(exchange); } public OvertownSession getSession(HttpServerExchange exchange){ Session session = getUndertowSession(exchange); if(session == null){ session = getSessionManager().createSession(exchange, getSessionConfig() ); } return new OvertownSession(exchange, session); } //TODO //Needs exchange to operate in the session public OvertownSession getSessionById(String id , HttpServerExchange exchange ){ Session session = getSessionManager().getSession(id); if(session != null){ return new OvertownSession( exchange , session ); }else{ return null; } } public SessionConfig getSessionConfig() { return sessionConfig; } public InMemorySessionManager getSessionManager() { return sessionManager; } }