Coverage Report - org.acegisecurity.concurrent.SessionInformation
 
Classes in this File Line Coverage Branch Coverage Complexity
SessionInformation
100% 
N/A 
1
 
 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.acegisecurity.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 Acegi Security framework.<p>This is primarily used for concurrent
 26  
  * 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 Acegi 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 1999 2007-08-30 21:38:07Z 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  165
     private boolean expired = false;
 43  
 
 44  
     //~ Constructors ===================================================================================================
 45  
 
 46  165
     public SessionInformation(Object principal, String sessionId, Date lastRequest) {
 47  165
         Assert.notNull(principal, "Principal required");
 48  165
         Assert.hasText(sessionId, "SessionId required");
 49  165
         Assert.notNull(lastRequest, "LastRequest required");
 50  165
         this.principal = principal;
 51  165
         this.sessionId = sessionId;
 52  165
         this.lastRequest = lastRequest;
 53  165
     }
 54  
 
 55  
     //~ Methods ========================================================================================================
 56  
 
 57  
     public void expireNow() {
 58  3
         this.expired = true;
 59  3
     }
 60  
 
 61  
     public Date getLastRequest() {
 62  8
         return lastRequest;
 63  
     }
 64  
 
 65  
     public Object getPrincipal() {
 66  164
         return principal;
 67  
     }
 68  
 
 69  
     public String getSessionId() {
 70  10
         return sessionId;
 71  
     }
 72  
 
 73  
     public boolean isExpired() {
 74  299509
         return expired;
 75  
     }
 76  
 
 77  
     /**
 78  
      * Refreshes the internal lastRequest to the current date and time.
 79  
      */
 80  
     public void refreshLastRequest() {
 81  3
         this.lastRequest = new Date();
 82  3
     }
 83  
 }