فهرست منبع

Tidied up SessionRegistryImpl and rolled back reformatting of its test class to incorrect width.

Luke Taylor 18 سال پیش
والد
کامیت
510cd5050f

+ 15 - 28
core/src/main/java/org/acegisecurity/concurrent/SessionRegistryImpl.java

@@ -36,20 +36,16 @@ import javax.servlet.http.HttpSession;
 
 /**
  * Base implementation of {@link org.acegisecurity.concurrent.SessionRegistry}
- * which also listens for {@link
- * org.acegisecurity.ui.session.HttpSessionDestroyedEvent}s published in the
- * Spring application context.
+ * which also listens for {@link org.acegisecurity.ui.session.HttpSessionDestroyedEvent}s
+ * published in the Spring application context.
  * 
  * <p>
- * NB: It is important that you register the {@link
- * org.acegisecurity.ui.session.HttpSessionEventPublisher} in
- * <code>web.xml</code> so that this class is notified of sessions that
- * expire.
+ * NB: It is important that you register the {@link org.acegisecurity.ui.session.HttpSessionEventPublisher} in
+ * <code>web.xml</code> so that this class is notified of sessions that expire.
  * </p>
  * 
  * @author Ben Alex
- * @version $Id: SessionRegistryImpl.java 1862 2007-05-25 01:38:42Z benalex
- *          ${date}
+ * @version $Id$
  */
 public class SessionRegistryImpl implements SessionRegistry,
 		ApplicationListener {
@@ -76,8 +72,7 @@ public class SessionRegistryImpl implements SessionRegistry,
 		List list = new ArrayList();
 
 		synchronized (sessionsUsedByPrincipal) {
-			for (Iterator iter = sessionsUsedByPrincipal.iterator(); iter
-					.hasNext();) {
+			for (Iterator iter = sessionsUsedByPrincipal.iterator(); iter.hasNext();) {
 				String sessionId = (String) iter.next();
 				SessionInformation sessionInformation = getSessionInformation(sessionId);
 
@@ -91,8 +86,7 @@ public class SessionRegistryImpl implements SessionRegistry,
 	}
 
 	public SessionInformation getSessionInformation(String sessionId) {
-		Assert.hasText(sessionId,
-				"SessionId required as per interface contract");
+		Assert.hasText(sessionId, "SessionId required as per interface contract");
 
 		return (SessionInformation) sessionIds.get(sessionId);
 	}
@@ -105,8 +99,7 @@ public class SessionRegistryImpl implements SessionRegistry,
 	}
 
 	public void refreshLastRequest(String sessionId) {
-		Assert.hasText(sessionId,
-				"SessionId required as per interface contract");
+		Assert.hasText(sessionId, "SessionId required as per interface contract");
 
 		SessionInformation info = getSessionInformation(sessionId);
 
@@ -115,12 +108,9 @@ public class SessionRegistryImpl implements SessionRegistry,
 		}
 	}
 
-	public synchronized void registerNewSession(String sessionId,
-			Object principal) {
-		Assert.hasText(sessionId,
-				"SessionId required as per interface contract");
-		Assert.notNull(principal,
-				"Principal required as per interface contract");
+	public synchronized void registerNewSession(String sessionId, Object principal) {
+		Assert.hasText(sessionId, "SessionId required as per interface contract");
+		Assert.notNull(principal, "Principal required as per interface contract");
 
 		if (getSessionInformation(sessionId) != null) {
 			removeSessionInformation(sessionId);
@@ -132,8 +122,7 @@ public class SessionRegistryImpl implements SessionRegistry,
 		Set sessionsUsedByPrincipal = (Set) principals.get(principal);
 
 		if (sessionsUsedByPrincipal == null) {
-			sessionsUsedByPrincipal = Collections
-					.synchronizedSet(new HashSet());
+			sessionsUsedByPrincipal = Collections.synchronizedSet(new HashSet());
 		}
 
 		sessionsUsedByPrincipal.add(sessionId);
@@ -142,16 +131,14 @@ public class SessionRegistryImpl implements SessionRegistry,
 	}
 
 	public void removeSessionInformation(String sessionId) {
-		Assert.hasText(sessionId,
-				"SessionId required as per interface contract");
+		Assert.hasText(sessionId, "SessionId required as per interface contract");
 
 		SessionInformation info = getSessionInformation(sessionId);
 
 		if (info != null) {
-			sessionIds.remove(sessionId);
+		    sessionIds.remove(sessionId);
 
-			Set sessionsUsedByPrincipal = (Set) principals.get(info
-					.getPrincipal());
+			Set sessionsUsedByPrincipal = (Set) principals.get(info.getPrincipal());
 
 			if (sessionsUsedByPrincipal != null) {
 				synchronized (sessionsUsedByPrincipal) {

+ 127 - 143
core/src/test/java/org/acegisecurity/concurrent/SessionRegistryImplTests.java

@@ -23,153 +23,137 @@ import org.springframework.mock.web.MockHttpSession;
 
 import java.util.Date;
 
+
 /**
  * Tests {@link SessionRegistryImpl}.
- * 
- * @author Ben Alex
+ *
+* @author Ben Alex
  * @version $Id$
  */
 public class SessionRegistryImplTests extends TestCase {
-	// ~ Methods
-	// ========================================================================================================
-
-	public void testEventPublishing() {
-		MockHttpSession httpSession = new MockHttpSession();
-		Object principal = "Some principal object";
-		String sessionId = httpSession.getId();
-		assertNotNull(sessionId);
-
-		SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
-
-		// Register new Session
-		sessionRegistry.registerNewSession(sessionId, principal);
-
-		// Deregister session via an ApplicationEvent
-		sessionRegistry.onApplicationEvent(new HttpSessionDestroyedEvent(
-				httpSession));
-
-		// Check attempts to retrieve cleared session return null
-		assertNull(sessionRegistry.getSessionInformation(sessionId));
-	}
-
-	public void testMultiplePrincipals() throws Exception {
-		Object principal1 = "principal_1";
-		Object principal2 = "principal_2";
-		String sessionId1 = "1234567890";
-		String sessionId2 = "9876543210";
-		String sessionId3 = "5432109876";
-
-		SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
-
-		sessionRegistry.registerNewSession(sessionId1, principal1);
-		sessionRegistry.registerNewSession(sessionId2, principal1);
-		sessionRegistry.registerNewSession(sessionId3, principal2);
-
-		assertEquals(principal1, sessionRegistry.getAllPrincipals()[0]);
-		assertEquals(principal2, sessionRegistry.getAllPrincipals()[1]);
-	}
-
-	public void testSessionInformationLifecycle() throws Exception {
-		Object principal = "Some principal object";
-		String sessionId = "1234567890";
-		SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
-
-		// Register new Session
-		sessionRegistry.registerNewSession(sessionId, principal);
-
-		// Retrieve existing session by session ID
-		Date currentDateTime = sessionRegistry.getSessionInformation(sessionId)
-				.getLastRequest();
-		assertEquals(principal, sessionRegistry
-				.getSessionInformation(sessionId).getPrincipal());
-		assertEquals(sessionId, sessionRegistry
-				.getSessionInformation(sessionId).getSessionId());
-		assertNotNull(sessionRegistry.getSessionInformation(sessionId)
-				.getLastRequest());
-
-		// Retrieve existing session by principal
-		assertEquals(1, sessionRegistry.getAllSessions(principal, false).length);
-
-		// Sleep to ensure SessionRegistryImpl will update time
-		Thread.sleep(1000);
-
-		// Update request date/time
-		sessionRegistry.refreshLastRequest(sessionId);
-
-		Date retrieved = sessionRegistry.getSessionInformation(sessionId)
-				.getLastRequest();
-		assertTrue(retrieved.after(currentDateTime));
-
-		// Check it retrieves correctly when looked up via principal
-		assertEquals(retrieved, sessionRegistry
-				.getAllSessions(principal, false)[0].getLastRequest());
-
-		// Clear session information
-		sessionRegistry.removeSessionInformation(sessionId);
-
-		// Check attempts to retrieve cleared session return null
-		assertNull(sessionRegistry.getSessionInformation(sessionId));
-		assertNull(sessionRegistry.getAllSessions(principal, false));
-	}
-
-	public void testTwoSessionsOnePrincipalExpiring() throws Exception {
-		Object principal = "Some principal object";
-		String sessionId1 = "1234567890";
-		String sessionId2 = "9876543210";
-		SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
-
-		// Register new Session
-		sessionRegistry.registerNewSession(sessionId1, principal);
-		assertEquals(1, sessionRegistry.getAllSessions(principal, false).length);
-		assertEquals(sessionId1, sessionRegistry.getAllSessions(principal,
-				false)[0].getSessionId());
-
-		// Register new Session
-		sessionRegistry.registerNewSession(sessionId2, principal);
-		assertEquals(2, sessionRegistry.getAllSessions(principal, false).length);
-		assertEquals(sessionId2, sessionRegistry.getAllSessions(principal,
-				false)[1].getSessionId());
-
-		// Expire one session
-		SessionInformation session = sessionRegistry
-				.getSessionInformation(sessionId2);
-		session.expireNow();
-
-		// Check retrieval still correct
-		assertTrue(sessionRegistry.getSessionInformation(sessionId2)
-				.isExpired());
-		assertFalse(sessionRegistry.getSessionInformation(sessionId1)
-				.isExpired());
-	}
-
-	public void testTwoSessionsOnePrincipalHandling() throws Exception {
-		Object principal = "Some principal object";
-		String sessionId1 = "1234567890";
-		String sessionId2 = "9876543210";
-		SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
-
-		// Register new Session
-		sessionRegistry.registerNewSession(sessionId1, principal);
-		assertEquals(1, sessionRegistry.getAllSessions(principal, false).length);
-		assertEquals(sessionId1, sessionRegistry.getAllSessions(principal,
-				false)[0].getSessionId());
-
-		// Register new Session
-		sessionRegistry.registerNewSession(sessionId2, principal);
-		assertEquals(2, sessionRegistry.getAllSessions(principal, false).length);
-		assertEquals(sessionId2, sessionRegistry.getAllSessions(principal,
-				false)[1].getSessionId());
-
-		// Clear session information
-		sessionRegistry.removeSessionInformation(sessionId1);
-		assertEquals(1, sessionRegistry.getAllSessions(principal, false).length);
-		assertEquals(sessionId2, sessionRegistry.getAllSessions(principal,
-				false)[0].getSessionId());
-
-		// Clear final session
-		sessionRegistry.removeSessionInformation(sessionId2);
-		assertNull(sessionRegistry.getSessionInformation(sessionId2));
-		assertNull(sessionRegistry.getAllSessions(principal, false));
-	}
+    //~ Methods ========================================================================================================
+
+    public void testEventPublishing() {
+        MockHttpSession httpSession = new MockHttpSession();
+        Object principal = "Some principal object";
+        String sessionId = httpSession.getId();
+        assertNotNull(sessionId);
+
+        SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
 
+        // Register new Session
+        sessionRegistry.registerNewSession(sessionId, principal);
+
+        // Deregister session via an ApplicationEvent
+        sessionRegistry.onApplicationEvent(new HttpSessionDestroyedEvent(httpSession));
+
+        // Check attempts to retrieve cleared session return null
+        assertNull(sessionRegistry.getSessionInformation(sessionId));
+    }
+
+    public void testMultiplePrincipals() throws Exception {
+        Object principal1 = "principal_1";
+        Object principal2 = "principal_2";
+        String sessionId1 = "1234567890";
+        String sessionId2 = "9876543210";
+        String sessionId3 = "5432109876";
+
+        SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
+
+        sessionRegistry.registerNewSession(sessionId1, principal1);
+        sessionRegistry.registerNewSession(sessionId2, principal1);
+        sessionRegistry.registerNewSession(sessionId3, principal2);
+
+        assertEquals(principal1, sessionRegistry.getAllPrincipals()[0]);
+        assertEquals(principal2, sessionRegistry.getAllPrincipals()[1]);
+    }
+
+    public void testSessionInformationLifecycle() throws Exception {
+        Object principal = "Some principal object";
+        String sessionId = "1234567890";
+        SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
+
+        // Register new Session
+        sessionRegistry.registerNewSession(sessionId, principal);
+
+        // Retrieve existing session by session ID
+        Date currentDateTime = sessionRegistry.getSessionInformation(sessionId).getLastRequest();
+        assertEquals(principal, sessionRegistry.getSessionInformation(sessionId).getPrincipal());
+        assertEquals(sessionId, sessionRegistry.getSessionInformation(sessionId).getSessionId());
+        assertNotNull(sessionRegistry.getSessionInformation(sessionId).getLastRequest());
+
+        // Retrieve existing session by principal
+        assertEquals(1, sessionRegistry.getAllSessions(principal, false).length);
+
+        // Sleep to ensure SessionRegistryImpl will update time
+        Thread.sleep(1000);
+
+        // Update request date/time
+        sessionRegistry.refreshLastRequest(sessionId);
+
+        Date retrieved = sessionRegistry.getSessionInformation(sessionId).getLastRequest();
+        assertTrue(retrieved.after(currentDateTime));
+
+        // Check it retrieves correctly when looked up via principal
+        assertEquals(retrieved, sessionRegistry.getAllSessions(principal, false)[0].getLastRequest());
+
+        // Clear session information
+        sessionRegistry.removeSessionInformation(sessionId);
+
+        // Check attempts to retrieve cleared session return null
+        assertNull(sessionRegistry.getSessionInformation(sessionId));
+        assertNull(sessionRegistry.getAllSessions(principal, false));
+    }
+
+    public void testTwoSessionsOnePrincipalExpiring() throws Exception {
+        Object principal = "Some principal object";
+        String sessionId1 = "1234567890";
+        String sessionId2 = "9876543210";
+        SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
+
+        // Register new Session
+        sessionRegistry.registerNewSession(sessionId1, principal);
+        assertEquals(1, sessionRegistry.getAllSessions(principal, false).length);
+        assertEquals(sessionId1, sessionRegistry.getAllSessions(principal, false)[0].getSessionId());
+
+        // Register new Session
+        sessionRegistry.registerNewSession(sessionId2, principal);
+        assertEquals(2, sessionRegistry.getAllSessions(principal, false).length);
+        assertEquals(sessionId2, sessionRegistry.getAllSessions(principal, false)[1].getSessionId());
+
+        // Expire one session
+        SessionInformation session = sessionRegistry.getSessionInformation(sessionId2);
+        session.expireNow();
+
+        // Check retrieval still correct
+        assertTrue(sessionRegistry.getSessionInformation(sessionId2).isExpired());
+        assertFalse(sessionRegistry.getSessionInformation(sessionId1).isExpired());
+    }
+
+    public void testTwoSessionsOnePrincipalHandling() throws Exception {
+        Object principal = "Some principal object";
+        String sessionId1 = "1234567890";
+        String sessionId2 = "9876543210";
+        SessionRegistryImpl sessionRegistry = new SessionRegistryImpl();
+
+        // Register new Session
+        sessionRegistry.registerNewSession(sessionId1, principal);
+        assertEquals(1, sessionRegistry.getAllSessions(principal, false).length);
+        assertEquals(sessionId1, sessionRegistry.getAllSessions(principal, false)[0].getSessionId());
+
+        // Register new Session
+        sessionRegistry.registerNewSession(sessionId2, principal);
+        assertEquals(2, sessionRegistry.getAllSessions(principal, false).length);
+        assertEquals(sessionId2, sessionRegistry.getAllSessions(principal, false)[1].getSessionId());
+
+        // Clear session information
+        sessionRegistry.removeSessionInformation(sessionId1);
+        assertEquals(1, sessionRegistry.getAllSessions(principal, false).length);
+        assertEquals(sessionId2, sessionRegistry.getAllSessions(principal, false)[0].getSessionId());
+
+        // Clear final session
+        sessionRegistry.removeSessionInformation(sessionId2);
+        assertNull(sessionRegistry.getSessionInformation(sessionId2));
+        assertNull(sessionRegistry.getAllSessions(principal, false));
+    }
 }