/** * {@inheritDoc} */ @Override public String getId() { return session.getIdInternal(); }
@Override public void run() { long currentTime = System.currentTimeMillis(); Iterator<Map.Entry<String, Session>> iterator = sessions.entrySet().iterator(); Map.Entry<String, Session> entry; while (iterator.hasNext()) { entry = iterator.next(); final Session session = entry.getValue(); if (!session.isValid() || (session.getSessionTimeout() > 0 && currentTime - session.getTimestamp() > session.getSessionTimeout())) { session.setValid(false); iterator.remove(); } } } }, 5, 5, TimeUnit.SECONDS);
/** * Reset the timestamp. */ protected void access() { session.access(); }
/** * {@inheritDoc} */ @Override public long getLastAccessedTime() { if (!session.isValid()) { throw new IllegalStateException("The session was invalidated"); } return session.getTimestamp(); }
/** * {@inheritDoc} */ @Override public long getCreationTime() { if (!session.isValid()) { throw new IllegalStateException("The session was invalidated"); } return session.getCreationTime(); }
protected Session doGetSession(final boolean create) { if (session != null && session.isValid()) { return session; if (session != null && !session.isValid()) { session = null; session.access(); return session; session.setSessionTimeout( httpServerFilter.getConfiguration().getSessionTimeoutSeconds() * 1000); requestedSessionId = session.getIdInternal(); session.getIdInternal()); configureSessionCookie(cookie);
@Override public String changeSessionId(final Request request, final Session session) { final String oldSessionId = session.getIdInternal(); final String newSessionId = String.valueOf(generateRandomLong()); session.setIdInternal(newSessionId); sessions.remove(oldSessionId); sessions.put(newSessionId, session); return oldSessionId; }
@Override public Session createSession(final Request request) { final Session session = new Session(); String requestedSessionId; do { requestedSessionId = String.valueOf(generateRandomLong()); session.setIdInternal(requestedSessionId); } while (sessions.putIfAbsent(requestedSessionId, session) != null); return session; }
@Override public boolean renewSession(JaxRsContext context) { final Session session = getSession(context); final Map<String, Object> attributes = new HashMap<>(); attributes.putAll(session.attributes()); session.setValid(false); // let's recreate the session from zero // (Grizzly reuse the same object, but that could change in the future...) final Session newSession = getSession(context); attributes.forEach(newSession::setAttribute); return true; }
/** * {@inheritDoc} */ @Override public void setMaxInactiveInterval(int sessionTimeout) { if (sessionTimeout < 0) { sessionTimeout = -1; } else { sessionTimeout = (int) MILLISECONDS.convert(sessionTimeout, SECONDS); } session.setSessionTimeout(sessionTimeout); }
/** * Is the current Session valid? * @return true if valid. */ protected boolean isValid() { return session.isValid(); }
/** * {@inheritDoc} */ @Override public String[] getValueNames() { return session.attributes().entrySet().toArray( new String[session.attributes().size()]); }
/** * {@inheritDoc} */ @Override public int getMaxInactiveInterval() { long sessionTimeout = session.getSessionTimeout(); if (sessionTimeout < 0) { return -1; } sessionTimeout = SECONDS.convert(sessionTimeout, MILLISECONDS); if (sessionTimeout > Integer.MAX_VALUE) { throw new IllegalArgumentException(sessionTimeout + " cannot be cast to int."); } return (int) sessionTimeout; }
@Override public boolean destroySession(JaxRsContext context) { final Session session = getSession(context); session.setValid(false); return true; }
protected Session doGetSession(final boolean create) { if (session != null && session.isValid()) { return session; if (session != null && !session.isValid()) { session = null; session.access(); return session; session.setSessionTimeout( httpServerFilter.getConfiguration().getSessionTimeoutSeconds() * 1000); requestedSessionId = session.getIdInternal(); session.getIdInternal()); configureSessionCookie(cookie);
@Override public String changeSessionId(final Request request, final Session session) { final String oldSessionId = session.getIdInternal(); final String newSessionId = String.valueOf(generateRandomLong()); session.setIdInternal(newSessionId); sessions.remove(oldSessionId); sessions.put(newSessionId, session); return oldSessionId; }
@Override public Session createSession(final Request request) { final Session session = new Session(); String requestedSessionId; do { requestedSessionId = String.valueOf(generateRandomLong()); session.setIdInternal(requestedSessionId); } while (sessions.putIfAbsent(requestedSessionId, session) != null); return session; }
/** * {@inheritDoc} */ @Override public long getLastAccessedTime() { if (!session.isValid()) { throw new IllegalStateException("The session was invalidated"); } return session.getTimestamp(); }
@Override public boolean renewSession(JaxRsContext context) { final Session session = getSession(context); final Map<String, Object> attributes = new HashMap<>(); attributes.putAll(session.attributes()); session.setValid(false); // let's recreate the session from zero // (Grizzly reuse the same object, but that could change in the future...) final Session newSession = getSession(context); attributes.forEach(newSession::setAttribute); return true; }