001: /*
002: * JOSSO: Java Open Single Sign-On
003: *
004: * Copyright 2004-2008, Atricore, Inc.
005: *
006: * This is free software; you can redistribute it and/or modify it
007: * under the terms of the GNU Lesser General Public License as
008: * published by the Free Software Foundation; either version 2.1 of
009: * the License, or (at your option) any later version.
010: *
011: * This software is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this software; if not, write to the Free
018: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
019: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
020: */
021: package org.josso.gateway.session.service.store;
022:
023: import org.josso.gateway.session.exceptions.SSOSessionException;
024: import org.josso.gateway.session.service.BaseSession;
025:
026: import java.util.Date;
027:
028: /**
029: * Represents a resource to store sessions.
030: * Implementations define the specific persistence mechanism to store sessions.
031: *
032: * @author <a href="mailto:sgonzalez@josso.org">Sebastian Gonzalez Oyuela</a>
033: * @version $Id: SessionStore.java 508 2008-02-18 13:32:29Z sgonzalez $
034: */
035:
036: public interface SessionStore {
037:
038: /**
039: * Return the number of Sessions present in this Store.
040: *
041: */
042: int getSize() throws SSOSessionException;
043:
044: /**
045: * Return an array containing the session identifiers of all Sessions
046: * currently saved in this Store. If there are no such Sessions, a
047: * zero-length array is returned.
048: *
049: */
050: String[] keys() throws SSOSessionException;
051:
052: /**
053: * Return an array of all BaseSessions in this store. If there are no
054: * sessions, then return a zero-length array.
055: */
056: BaseSession[] loadAll() throws SSOSessionException;
057:
058: /**
059: * Load and return the BaseSession associated with the specified session
060: * identifier from this Store, without removing it. If there is no
061: * such stored BaseSession, return <code>null</code>.
062: *
063: * @param id BaseSession identifier of the session to load
064: *
065: */
066: BaseSession load(String id) throws SSOSessionException;
067:
068: /**
069: * Load and return the BaseSession associated with the specified username
070: * from this Store, without removing it. If there is no
071: * such stored BaseSession, return <code>null</code>.
072: *
073: * @param name username of the session to load
074: *
075: */
076: BaseSession[] loadByUsername(String name)
077: throws SSOSessionException;
078:
079: /**
080: * Load and return the BaseSessions whose last access time is less than the received time
081: */
082: BaseSession[] loadByLastAccessTime(Date time)
083: throws SSOSessionException;
084:
085: /**
086: * Load and return the BaseSessions whose valid property is equals to the valid argument.
087: */
088: BaseSession[] loadByValid(boolean valid) throws SSOSessionException;
089:
090: /**
091: * Remove the BaseSession with the specified session identifier from
092: * this Store, if present. If no such BaseSession is present, this method
093: * takes no action.
094: *
095: * @param id BaseSession identifier of the BaseSession to be removed
096: *
097: */
098: void remove(String id) throws SSOSessionException;
099:
100: /**
101: * Remove all Sessions from this Store.
102: */
103: void clear() throws SSOSessionException;
104:
105: /**
106: * Save the specified BaseSession into this Store. Any previously saved
107: * information for the associated session identifier is replaced.
108: *
109: * @param session BaseSession to be saved
110: */
111: void save(BaseSession session) throws SSOSessionException;
112:
113: }
|