1 /* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited 2 * 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 package org.springframework.security.concurrent; 17 18 import org.springframework.util.Assert; 19 20 import java.util.Date; 21 import java.io.Serializable; 22 23 24 /** 25 * Represents a record of a session within the Spring Security framework. 26 * <p>This is primarily used for concurrent session support.</p> 27 * <p>Sessions have three states: active, expired, and destroyed. A session can that is invalidated by 28 * <code>session.invalidate()</code> or via Servlet Container management is considered "destroyed". An "expired" 29 * session, on the other hand, is a session that Spring Security wants to end because it was selected for removal for 30 * some reason (generally as it was the least recently used session and the maximum sessions for the user were 31 * reached). An "expired" session is removed as soon as possible by a <code>Filter</code>.</p> 32 * 33 * @author Ben Alex 34 * @version $Id: SessionInformation.java 2217 2007-10-27 00:45:30Z luke_t $ 35 */ 36 public class SessionInformation implements Serializable { 37 //~ Instance fields ================================================================================================ 38 39 private Date lastRequest; 40 private Object principal; 41 private String sessionId; 42 private boolean expired = false; 43 44 //~ Constructors =================================================================================================== 45 46 public SessionInformation(Object principal, String sessionId, Date lastRequest) { 47 Assert.notNull(principal, "Principal required"); 48 Assert.hasText(sessionId, "SessionId required"); 49 Assert.notNull(lastRequest, "LastRequest required"); 50 this.principal = principal; 51 this.sessionId = sessionId; 52 this.lastRequest = lastRequest; 53 } 54 55 //~ Methods ======================================================================================================== 56 57 public void expireNow() { 58 this.expired = true; 59 } 60 61 public Date getLastRequest() { 62 return lastRequest; 63 } 64 65 public Object getPrincipal() { 66 return principal; 67 } 68 69 public String getSessionId() { 70 return sessionId; 71 } 72 73 public boolean isExpired() { 74 return expired; 75 } 76 77 /** 78 * Refreshes the internal lastRequest to the current date and time. 79 */ 80 public void refreshLastRequest() { 81 this.lastRequest = new Date(); 82 } 83 }