Package com.ponysdk.core.servlet

Source Code of com.ponysdk.core.servlet.SessionManager

package com.ponysdk.core.servlet;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import com.ponysdk.core.Application;
import com.ponysdk.core.tools.ListenerCollection;

public class SessionManager {

    private final Map<String, Session> sessionsById = new ConcurrentHashMap<String, Session>();

    private static SessionManager INSTANCE = new SessionManager();
    private final ListenerCollection<SessionListener> sessionListeners = new ListenerCollection<SessionListener>();

    public static SessionManager get() {
        return INSTANCE;
    }

    public Session getSession(final String id) {
        return sessionsById.get(id);
    }

    public Collection<Session> getSessions() {
        return sessionsById.values();
    }

    public Collection<Application> getApplications() {
        final List<Application> applications = new ArrayList<Application>();
        for (final Session session : sessionsById.values()) {
            final Application application = (Application) session.getAttribute(Application.class.getCanonicalName());
            if (application != null) applications.add(application);
        }
        return applications;
    }

    public Application getApplication(final Session session) {
        return (Application) session.getAttribute(Application.class.getCanonicalName());
    }

    public void registerSessionListener(final SessionListener listener) {
        sessionListeners.register(listener);
    }

    public void unregisterSessionListener(final SessionListener listener) {
        sessionListeners.unregister(listener);
    }

    void registerSession(final Session session) {
        sessionsById.put(session.getId(), session);
        for (final SessionListener listener : sessionListeners) {
            listener.sessionCreated(session);
        }
    }

    Session unregisterSession(final String sessionID) {
        final Session session = sessionsById.remove(sessionID);
        for (final SessionListener listener : sessionListeners) {
            listener.sessionDestroyed(session);
        }
        return session;
    }
}
TOP

Related Classes of com.ponysdk.core.servlet.SessionManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.