You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by lh...@apache.org on 2009/07/18 00:47:12 UTC

svn commit: r795260 - in /incubator/shiro/trunk/core/src: main/java/org/apache/shiro/session/mgt/AbstractSessionManager.java test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java

Author: lhazlewood
Date: Fri Jul 17 22:47:11 2009
New Revision: 795260

URL: http://svn.apache.org/viewvc?rev=795260&view=rev
Log:
Fixed session timeout bug - globalSessionTimeout configuration was not being applied

Added:
    incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java
Modified:
    incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/AbstractSessionManager.java

Modified: incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/AbstractSessionManager.java
URL: http://svn.apache.org/viewvc/incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/AbstractSessionManager.java?rev=795260&r1=795259&r2=795260&view=diff
==============================================================================
--- incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/AbstractSessionManager.java (original)
+++ incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/AbstractSessionManager.java Fri Jul 17 22:47:11 2009
@@ -113,11 +113,15 @@
 
     public Serializable start(Map initData) throws AuthorizationException {
         Session session = createSession(initData);
+        applyGlobalSessionTimeout(session);
         onStart(session);
         notifyStart(session);
         return session.getId();
     }
 
+    protected void applyGlobalSessionTimeout(Session session) {
+        session.setTimeout(getGlobalSessionTimeout());
+    }
 
     /**
      * Returns the session instance to use to pass to registered {@code SessionListener}s for notification

Added: incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java?rev=795260&view=auto
==============================================================================
--- incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java (added)
+++ incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java Fri Jul 17 22:47:11 2009
@@ -0,0 +1,48 @@
+package org.apache.shiro.session.mgt;
+
+import org.apache.shiro.util.ThreadContext;
+import org.junit.After;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.Serializable;
+import java.net.InetAddress;
+
+/**
+ * Unit test for the {@link DefaultSessionManager DefaultSessionManager} implementation.
+ */
+public class DefaultSessionManagerTest {
+
+    DefaultSessionManager sm = null;
+
+    @Before
+    public void setup() {
+        ThreadContext.clear();
+        sm = new DefaultSessionManager();
+    }
+
+    @After
+    public void tearDown() {
+        sm.destroy();
+        ThreadContext.clear();
+    }
+
+    public void sleep(long millis) {
+        try {
+            Thread.sleep(millis);
+        } catch (InterruptedException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    @Test
+    public void testGlobalTimeout() {
+        sm.setGlobalSessionTimeout(100);
+        Serializable sessionId = sm.start((InetAddress) null);
+        assertTrue(sm.isValid(sessionId));
+        sleep(100);
+        assertFalse(sm.isValid(sessionId));
+    }
+}