[java-identity-provider COMMIT] in /trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl: StorageBack...

noreply at shibboleth.net noreply at shibboleth.net
Thu Sep 26 17:31:45 EDT 2013


Author: scantor
Date: Thu Sep 26 17:31:44 2013
New Revision: 4803

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=4803&view=rev
Log:
Implement session timeout update.

Modified:
    trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedIdPSession.java
    trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java

Modified: trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedIdPSession.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedIdPSession.java?rev=4803&r1=4802&r2=4803&view=diff
==============================================================================
--- trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedIdPSession.java (original)
+++ trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedIdPSession.java Thu Sep 26 17:31:44 2013
@@ -25,6 +25,7 @@
 import javax.annotation.Nullable;
 
 import org.apache.commons.codec.digest.DigestUtils;
+import org.joda.time.DateTime;
 import org.opensaml.storage.StorageRecord;
 import org.opensaml.storage.StorageSerializer;
 import org.slf4j.Logger;
@@ -81,8 +82,20 @@
     
     /** {@inheritDoc} */
     public void setLastActivityInstant(@Duration @Positive final long instant) throws SessionException {
-        // TODO Auto-generated method stub
-        super.setLastActivityInstant(instant);
+        
+        long exp = instant + sessionManager.getSessionTimeout() + sessionManager.getSessionSlop();
+        log.debug("Updating expiration of master record for session {} to {}", getId(), new DateTime(exp));
+        
+        try {
+            sessionManager.getStorageService().updateExpiration(
+                    getId(), StorageBackedSessionManager.SESSION_MASTER_KEY, exp);
+            super.setLastActivityInstant(instant);
+        } catch (IOException e) {
+            log.error("Exception updating expiration of master record for session " + getId(), e);
+            if (!sessionManager.isMaskStorageFailure()) {
+                throw new SessionException("Exception updating expiration of session record", e);
+            }
+        }
     }
 
     /** {@inheritDoc} */

Modified: trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java?rev=4803&r1=4802&r2=4803&view=diff
==============================================================================
--- trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java (original)
+++ trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java Thu Sep 26 17:31:44 2013
@@ -95,7 +95,7 @@
         SessionManager, SessionResolver {
 
     /** Storage key of master session records. */
-    @Nonnull private static final String SESSION_MASTER_KEY = "_session";
+    @Nonnull public static final String SESSION_MASTER_KEY = "_session";
     
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(StorageBackedSessionManager.class);



More information about the commits mailing list