8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Copyright (c) 2005 Sun Microsystems Inc. All Rights Reserved
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The contents of this file are subject to the terms
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * of the Common Development and Distribution License
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * (the License). You may not use this file except in
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * compliance with the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * You can obtain a copy of the License at
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * opensso/legal/CDDLv1.0.txt
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * See the License for the specific language governing
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * permission and limitations under the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * When distributing Covered Code, include this CDDL
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Header Notice in each file and include the License file
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * at opensso/legal/CDDLv1.0.txt.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * If applicable, add the following below the CDDL Header,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * with the fields enclosed by brackets [] replaced by
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * your own identifying information:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * $Id: SessionEvent.java,v 1.2 2008/06/25 05:41:29 qcheng Exp $
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeper * Portions Copyrighted 2016 ForgeRock AS.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpackage com.iplanet.dpro.session;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshottimport org.forgerock.util.Reject;
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The <code>SessionEvent</code> class represents a session event. If this is
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * a new session, the session event contains all session information of this new
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * session, otherwise, only the changed information of the session is contained
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * in the session event.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * </p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The following are possible session event types:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>SESSION_CREATION</code>,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>IDLE_TIMEOUT</code>,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>MAX_TIMEOUT</code>,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>LOGOUT</code>,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>REACTIVATION</code>, and
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>DESTROY</code>.
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeper *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @see com.iplanet.dpro.session.Session
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpublic class SessionEvent {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private Session session;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private int eventType;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private long eventTime;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /** Session creation event */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int SESSION_CREATION = 0;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /** Session idle time out event */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int IDLE_TIMEOUT = 1;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /** Session maximum time out event */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int MAX_TIMEOUT = 2;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /** Session logout event */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int LOGOUT = 3;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /** Session reactivation event */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int REACTIVATION = 4;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /** Session destroy event */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int DESTROY = 5;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /** Session Property changed */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int PROPERTY_CHANGED = 6;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /** Session quota exhausted */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int QUOTA_EXHAUSTED = 7;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeper /** Session property protected against change */
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeper public static final int PROTECTED_PROPERTY = 8;
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott public SessionEvent(Session sess, int type, long time) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster session = sess;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster eventType = type;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster eventTime = time;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Gets the session object which emitted this event.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The session object which emitted this event.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public Session getSession() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return session;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Gets the type of this event.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The type of this event. Possible types are :
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>SESSION_CREATION</code>,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>IDLE_TIMEOUT</code>,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>MAX_TIMEOUT</code>,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>LOGOUT</code>,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>REACTIVATION</code>, and
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>DESTROY</code>.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public int getType() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return eventType;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Gets the time of this event.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The event time as UTC milliseconds from the epoch
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public long getTime() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return eventTime;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott /**
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott * Invokes all listeners on the Session associated with the event.
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott *
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott * @param evt Non null Session Event.
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott */
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott public static void invokeListeners(SessionEvent evt) {
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott Reject.ifNull(evt, evt.getSession());
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott final Session session = evt.getSession();
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott for (SessionListener listener : session.getLocalSessionEventListeners()) {
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott listener.sessionChanged(evt);
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott }
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster}