package es.ejie.frmk.control.arranque;

import javax.servlet.http.HttpSessionEvent;

import es.ejie.frmk.control.apilamiento.Q70GestorDeApilamiento;
import es.ejie.frmk.control.excepciones.Q70FrameworkException;
import es.ejie.frmk.control.excepciones.Q70GestorDeExcepciones;
import es.ejie.frmk.infraestructura.traza.Q70TraceLevel;
import es.ejie.frmk.infraestructura.traza.Q70Traza;

/**
 * Componente que arranca toda la infraestructura necesaria para que el framework funcione.
 * Extiende la funcionalidad de la clase <code>Q70GestorArranqueConfiguracionServidor</code>.
 * <p>
 * Esta clase se incluye en el WAR de la aplicacion para que sea capaz de instanciar clases de WAR y
 * ademas, controla la destruccion de las HttpSession para limpiar la bbdd de apilamiento.
 * </p>
 * 
 * @version 	1.0
 * @author		UFRM008
 */
public class Q70GestorArranqueConfiguracion extends Q70GestorArranqueConfiguracionServidor {
	
	protected Class cargarClase(String nombreClase) throws Exception {
		return Class.forName(nombreClase);
	}

	/**
	 * Notificacion de que una sesion ha sido invalidada
	 * @param resourceName
	 */
	public void sessionDestroyed(HttpSessionEvent se) {
		try {
			Q70GestorDeApilamiento.getSingleton().processSuperOpReset(se.getSession());
		} catch (Q70FrameworkException e) {
			Q70Traza traza = Q70Traza.getSingleton();
			
			if (traza.isTraceActive())
			{
				traza.trace(ID_COMPONENTE, Q70TraceLevel.ERROR, "Q70GestorArranqueConfiguracion.sessionDestroyed" + this.getClass().toString());
			}			
			Q70GestorDeExcepciones.getSingleton().recogerThrowable(e);
		}	
	}

}