@Override public int getMaxInactiveInterval() { checkInvalidated(); return sessionData.getMaxInactiveInterval(); }
@Override public Object getAttribute(String name) { checkInvalidated(); return sessionData.get(name); }
@Override public void removeAttribute(String name) { checkInvalidated(); sessionData.remove(name); }
@Override public SessionData create() { return new DefaultSessionData(); }
@Override public String getId() { return sessionData.getId(); }
@Override public String encode(SessionData sessionData) { try { String checksum = checksumSessionData(sessionData); sessionData.put(CHECKSUM_KEY, checksum); String data = transcoder.encode(sessionData); return encryptor.encrypt(data, secretKey); } catch (Exception ex) { throw new PippoRuntimeException(ex); } }
@Override public SessionData decode(String data) { try { data = encryptor.decrypt(data, secretKey); SessionData sessionData = transcoder.decode(data); return isValidSessionData(sessionData) ? sessionData : null; } catch (Exception ex) { throw new PippoRuntimeException(ex); } }
/** * Manage session with Jedis and 30 minutes idle time. * * @param jedisPool Jedis pool */ public JedisSessionDataStorage(JedisPool jedisPool) { this(jedisPool, IDLE_TIME, new SerializationSessionDataTranscoder()); }
@Override public boolean isRequestedSessionIdValid() { if (requestedSessionIdValid == null) { String sessionId = getRequestedSessionId(); SessionData sessionData = (sessionId != null) ? getSessionDataStorage().get(sessionId) : null; return isRequestedSessionIdValid(sessionData); } return super.isRequestedSessionIdValid(); }
@Override public long getCreationTime() { checkInvalidated(); return sessionData.getCreationTime(); }
@Override public void setAttribute(String name, Object value) { checkInvalidated(); sessionData.put(name, value); }
@Override public long getLastAccessedTime() { checkInvalidated(); return sessionData.getLastAccessedTime(); }
@Override public String getRequestedSessionId() { return getSessionStrategy().getRequestedSessionId(this); }
@Override public void invalidate() { checkInvalidated(); this.invalidated = true; onInvalidate(); }
@Override public Enumeration<String> getAttributeNames() { checkInvalidated(); return Collections.enumeration(sessionData.getNames()); }
private PippoHttpSession createSession(SessionData sessionData) { return new PippoHttpSession(sessionData, getServletContext()) { @Override public void onInvalidate() { currentSession = null; getSessionDataStorage().delete(getId()); } }; }
@Override public boolean isNew() { checkInvalidated(); return !old; }
/** * Manage session with Jedis in the specified idle time. * * @param jedisPool Jedis pool * @param idleTime idle time of the session in seconds */ public JedisSessionDataStorage(JedisPool jedisPool, int idleTime) { this(jedisPool, idleTime, new SerializationSessionDataTranscoder()); }
/** * Manage session with MongoDB in the collection named "session" and idle * time indicated. * * @param database MongoDB database object * @param idleTime idle time of the session in seconds * @see #MongoDBSessionDataStorage(com.mongodb.client.MongoDatabase, * java.lang.String, long, ro.pippo.session.mongodb.SessionDataTranscoder) */ public MongoDBSessionDataStorage(MongoDatabase database, int idleTime) { this(database, SESSION_NAME, idleTime, new SerializationSessionDataTranscoder()); }