package railo.runtime.listener;
import javax.servlet.ServletException;
import railo.runtime.CFMLFactory;
import railo.runtime.PageContext;
import railo.runtime.PageSource;
import railo.runtime.exp.PageException;
/**
* interface for PageContext to interact with CFML
*
*/
public interface ApplicationListener {
public static final int MODE_CURRENT2ROOT=0;
public static final int MODE_CURRENT=1;
public static final int MODE_ROOT=2;
public static final String CFC_EXTENSION="cfc";
public void setMode(int mode);
public int getMode();
/**
* @return the type
*/
public String getType();
/**
* @param type the type to set
*///FUTURE remove method
public void setType(String type);
/**
* this method will be called the application self
* @param pc
* @param requestedPage
* @throws PageException
* @throws ServletException
*/
public void onRequest(PageContext pc,PageSource requestedPage, RequestListener rl) throws PageException;
/**
* this method will be called when a new session starts
* @throws PageException
*/
public void onSessionStart(PageContext pc) throws PageException;
/**
* this method will be called when a session ends
* @param cfmlFactory
* @param applicationName
* @param cfid
* @throws PageException
*/
public void onSessionEnd(CFMLFactory cfmlFactory, String applicationName, String cfid) throws PageException;
/**
* this method will be called when a new application context starts
* @throws PageException
*/
public boolean onApplicationStart(PageContext pc) throws PageException;
/**
* this method will be called when a application scope ends
* @throws PageException
*/
public void onApplicationEnd(CFMLFactory cfmlFactory, String applicationName) throws PageException;
/**
* this method will be called when a server starts
* @throws PageException
*/
public void onServerStart() throws PageException;
/**
* this method will be called when the server shutdown correctly (no crashes)
* @throws PageException
*/
public void onServerEnd() throws PageException;
/**
* this method will be called if server has a error (exception) not throwed by a try-catch block
* @param pe PageExcpetion Exception that has been throwed
*/
public void onError(PageContext pc,PageException pe);
/**
* called after "onRequestEnd" to generate debugging output, will only be called when debugging is enabled
* @throws PageException
*/
public void onDebug(PageContext pc) throws PageException;
/**
* will be called when server is run int a timeout
*/
public void onTimeout(PageContext pc);
public boolean hasOnApplicationStart();
public boolean hasOnSessionStart(PageContext pc);
}