package net.methodyne.bellvue.core; import net.methodyne.bellvue.system.User; import net.methodyne.bellvue.store.DataLayer; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSessionBindingListener; import javax.servlet.http.HttpSessionBindingEvent; import java.util.HashMap; import java.util.Vector; import com.jamonapi.Monitor; import com.jamonapi.MonitorFactory; /** The session data for each individual user session * <br>Used to hold the user object, the reference to the DataLayer and the servlet environment... * *@author Tao Tiastri *@version 1.0 * <br>Date: 23.04.2003 * <br>Time: 12:01:24 * <br> copyright Methodyne GmbH, Zug - Switzerland. */ public class Sdata implements HttpSessionBindingListener { /** * parsed form data */ public FormParser fp = null; /** * GUI purpose */ public Object selectedObjectRef = null; /** * GUI purpose */ public View view = null; /** * GUI purpose */ public Vector clipVector = null; /** * GUI purpose */ public HashMap errors = null; /** * The user */ public User user = null; /** * GUI purpose */ public Vector apps = null; // list of apps user is aut for /** * GUI purpose */ public String currentApp = null; // current app to be listed /** * From the servlet API */ public ServletContext sctx = null; /** * From the servlet API */ public HttpServletRequest req = null; /** * From the servlet API */ public HttpServletResponse res = null; /** * The ubiquitous datalayer for insert, update, delete, locking, etc.... */ public DataLayer dl = null; /** * The IP address of a DNS server configured in web.xml */ public String dns = null; private Monitor userMon; private Monitor sessionMon; private static int sessionCount = 0; /** * Session counter * @return the number of users on this application context. */ public static int getSessionCount(){ return sessionCount; } /** * This gets automatically handled by the servlet container * @param event */ public void valueBound(HttpSessionBindingEvent event) { //System.out.println("new session"); sessionCount++; sessionMon = MonitorFactory.start("Bellvue.allSessions"); if( user == null ) userMon = MonitorFactory.start("Bellvue.session.none" ); else userMon = MonitorFactory.start("Bellvue.session." + user.username ); } /** * This gets automatically handled by the servlet container * Called when a sessin ends with an explicit invalidate() or its timeout period has been reached. * @param event */ public void valueUnbound(HttpSessionBindingEvent event) { //System.out.println("End session for " + user.username); if(view != null) // there is no view in squash.jsp!!! view.removeAllElements(this); // unlocks them as well sessionCount--; userMon.stop(); sessionMon.stop(); } }