/*---------------- FILE HEADER ------------------------------------------
This file is part of deegree.
Copyright (C) 2001-2006 by:
EXSE, Department of Geography, University of Bonn
http://www.giub.uni-bonn.de/deegree/
lat/lon GmbH
http://www.lat-lon.de
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Contact:
Andreas Poth
lat/lon GmbH
Aennchenstr. 19
53115 Bonn
Germany
E-Mail: poth@lat-lon.de
Prof. Dr. Klaus Greve
Department of Geography
University of Bonn
Meckenheimer Allee 166
53115 Bonn
Germany
E-Mail: greve@giub.uni-bonn.de
---------------------------------------------------------------------------*/
package org.deegree.security.session;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a>
* @author last edited by: $Author: poth $
*
* @version 1.1, $Revision: 1.6 $, $Date: 2006/07/12 14:46:15 $
*
* @since 1.1
*/
public class Session {
private SessionID sessionID = null;
private String user = null;
private Map attributes = Collections.synchronizedMap(new HashMap());
/**
* creates a session that never expires for an anonymous user
*
* @param user user the session is assigned to
*/
public Session() {
this.sessionID = new SessionID(-1);
}
/**
* creates a session that never expires
*
* @param user user the session is assigned to
*/
public Session(String user) {
this.sessionID = new SessionID(-1);
this.user = user;
}
/**
* creates a session with a specific lifetime for an anonymous user.
* the expiration date will be updated each time a user accesses
* his session
* @param duration
* @param user
*/
public Session(int duration) {
this(null, duration);
}
/**
* creates a session with a specific lifetime. the expiration date
* will be updated each time a uses accesses his session
* @param duration
* @param user
*/
public Session(String user, int duration) {
this.sessionID = new SessionID(duration);
this.user = user;
}
/**
* creates a session with a specific SessionID for an anonymous user.
* the expiration date will be updated each time a uses accesses his session
*
* @param sessionID
* @param user
*/
public Session(SessionID sessionID) {
this(null, sessionID);
}
/**
* creates a session with a specific SessionID. the expiration date
* will be updated each time a uses accesses his session
*
* @param sessionID
* @param user
*/
public Session(String user, SessionID sessionID) {
super();
this.sessionID = sessionID;
this.user = user;
}
/**
* returns the name user the user who owns the session. returns null
* if its a session for an anonymous user
* @return
*
*/
public String getUser() {
return user;
}
/**
* adds an attribute to the session. calling this method will
* reset the expiration date of the encapsulated sessionID<br>
* this method throws an exception if the sessinID has been killed
* or is alive anymore
*
* @param key
* @param value
*/
public void addAttribute(Object key, Object value) throws SessionStatusException {
sessionID.reset();
attributes.put(key, value);
}
/**
* returns the values of the attribute identified by the passed
* key. calling this method will reset the expiration date of the
* encapsulated sessionID<br>
* this method throws an exception if the sessinID has been killed
* or is alive anymore
*
* @param key
* @return
*/
public Object getAttribute(Object key) throws SessionStatusException {
sessionID.reset();
return attributes.get(key);
}
/**
* removes the attribute identified by the passed key from the
* session. calling this method will reset the expiration date of the
* encapsulated sessionID<br>
* this method throws an exception if the sessinID has been killed
* or is alive anymore
*
* @param key
* @return
*/
public Object removeAttribute(Object key) throws SessionStatusException {
sessionID.reset();
return attributes.remove(key);
}
/**
* returns true if the session is still alive or false if the
* expiration date of the sessionID has been reached
* @return
*/
public boolean isAlive() {
return sessionID.isAlive();
}
/**
* returns the sessionID encapsulated in this session.
* @return
*
*/
public SessionID getSessionID() {
return sessionID;
}
/**
* kills a Session by marking the encapsulated SessionID as invalid.
* A killed SessionID can't be reseted
*/
public void close() {
sessionID.close();
}
/**
* resets the expiration date of the session
*
*/
public void reset() throws SessionStatusException {
sessionID.reset();
}
}
/* ********************************************************************
Changes to this class. What the people have been up to:
$Log: Session.java,v $
Revision 1.6 2006/07/12 14:46:15 poth
comment footer added
********************************************************************** */