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

ru.zinin.redis.session.RedisSessionTemplate Maven / Gradle / Ivy

package ru.zinin.redis.session;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import javax.servlet.ServletContext;
import java.util.HashSet;
import java.util.Set;

/**
 * Date: 12.11.11 12:08
 *
 * @author Alexander V. Zinin ([email protected])
 */
public class RedisSessionTemplate {
    private JedisPool jedisPool;
    private ServletContext servletContext;
    private int dbIndex = 0;
    private boolean disableListeners = false;

    public RedisSessionTemplate() {
    }

    public RedisSessionTemplate(JedisPool jedisPool, ServletContext servletContext) {
        this.jedisPool = jedisPool;
        this.servletContext = servletContext;
    }

    public JedisPool getJedisPool() {
        return jedisPool;
    }

    public void setJedisPool(JedisPool jedisPool) {
        this.jedisPool = jedisPool;
    }

    public ServletContext getServletContext() {
        return servletContext;
    }

    public void setServletContext(ServletContext servletContext) {
        this.servletContext = servletContext;
    }

    public int getDbIndex() {
        return dbIndex;
    }

    public void setDbIndex(int dbIndex) {
        this.dbIndex = dbIndex;
    }

    public boolean isDisableListeners() {
        return disableListeners;
    }

    public void setDisableListeners(boolean disableListeners) {
        this.disableListeners = disableListeners;
    }

    private void verifyInitialization() {
        if (jedisPool == null) {
            throw new IllegalStateException("JedisPool is not initialized");
        }
        if (servletContext == null) {
            throw new IllegalStateException("ServletContext is not initialized");
        }
    }

    public Set getAllSessions() {
        verifyInitialization();

        Set sessionIds;

        Jedis jedis = jedisPool.getResource();
        try {
            sessionIds = jedis.zrangeByScore(RedisSessionKeys.getSessionsKey(), 0, Double.MAX_VALUE);

            jedisPool.returnResource(jedis);
        } catch (Throwable e) {
            jedisPool.returnBrokenResource(jedis);
            throw new RuntimeException(e);
        }

        Set result = new HashSet(sessionIds.size());
        for (String sessionId : sessionIds) {
            RedisHttpSession session = new RedisHttpSession(sessionId, jedisPool, servletContext, dbIndex, disableListeners);
            if (session.isValid()) {
                result.add(session);
            }
        }

        return result;
    }

    public RedisHttpSession getSession(String id) {
        verifyInitialization();

        return new RedisHttpSession(id, jedisPool, servletContext, dbIndex, disableListeners);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy