View Javadoc

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  }