01: /* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
02: *
03: * Licensed under the Apache License, Version 2.0 (the "License");
04: * you may not use this file except in compliance with the License.
05: * You may obtain a copy of the License at
06: *
07: * http://www.apache.org/licenses/LICENSE-2.0
08: *
09: * 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.acegisecurity.concurrent;
17:
18: import org.springframework.util.Assert;
19:
20: import java.util.Date;
21: import java.io.Serializable;
22:
23: /**
24: * Represents a record of a session within the Acegi Security framework.<p>This is primarily used for concurrent
25: * session support.</p>
26: * <p>Sessions have three states: active, expired, and destroyed. A session can that is invalidated by
27: * <code>session.invalidate()</code> or via Servlet Container management is considered "destroyed". An "expired"
28: * session, on the other hand, is a session that Acegi Security wants to end because it was selected for removal for
29: * some reason (generally as it was the least recently used session and the maximum sessions for the user were
30: * reached). An "expired" session is removed as soon as possible by a <code>Filter</code>.</p>
31: *
32: * @author Ben Alex
33: * @version $Id: SessionInformation.java 1999 2007-08-30 21:38:07Z luke_t $
34: */
35: public class SessionInformation implements Serializable {
36: //~ Instance fields ================================================================================================
37:
38: private Date lastRequest;
39: private Object principal;
40: private String sessionId;
41: private boolean expired = false;
42:
43: //~ Constructors ===================================================================================================
44:
45: public SessionInformation(Object principal, String sessionId,
46: 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: }
|