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

org.visallo.web.SessionUser Maven / Gradle / Ivy

There is a newer version: 2.2.0
Show newest version
package org.visallo.web;

import org.visallo.core.bootstrap.InjectHelper;
import org.visallo.core.model.user.UserRepository;
import org.visallo.core.model.user.UserSessionCounterRepository;
import org.visallo.core.model.workQueue.WorkQueueRepository;
import org.visallo.core.user.User;
import org.visallo.core.util.VisalloLogger;
import org.visallo.core.util.VisalloLoggerFactory;
import org.visallo.web.clientapi.model.UserStatus;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import java.io.Serializable;

public class SessionUser implements HttpSessionBindingListener, Serializable {
    private static final long serialVersionUID = -4886360466524045992L;
    private static final VisalloLogger LOGGER = VisalloLoggerFactory.getLogger(SessionUser.class);
    private String userId;

    public SessionUser(String userId) {
        this.userId = userId;
    }

    public String getUserId() {
        return userId;
    }

    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        // do nothing
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
        try {
            UserSessionCounterRepository userSessionCounterRepository = InjectHelper.getInstance(UserSessionCounterRepository.class);
            WorkQueueRepository workQueueRepository = InjectHelper.getInstance(WorkQueueRepository.class);

            int sessionCount = userSessionCounterRepository.deleteSession(userId, event.getSession().getId());
            if (sessionCount < 1) {
                UserStatus status = UserStatus.OFFLINE;
                LOGGER.info("setting userId %s status to %s", userId, status);
                UserRepository userRepository = InjectHelper.getInstance(UserRepository.class);
                User user = userRepository.setStatus(userId, status);
                workQueueRepository.pushUserStatusChange(user, status);
            }
            workQueueRepository.pushSessionExpiration(userId, event.getSession().getId());
        } catch (Exception ex) {
            LOGGER.error("exception while unbinding user session for userId:%s", userId, ex);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy