package
org.projectapollo.demo;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import
javax.servlet.http.*;
import apollo.Session.*;
import apollo.*;
import apollo.Log.*;
import apollo.Statistics.*;
/** Project Apollo Demo Site
* @author Joe Kislo
* @version 1.0 09/18/2000
*/
public class
Demo extends
HttpServlet {
public
static
ManagerTracker MT;
public
void
init(ServletConfig config) throws
ServletException {
super.init(config);
Properties prop = new
Properties();
try
{
String propFileName = config.getInitParameter("PropertiesFile");
if
(propFileName==null)
{
propFileName = "../servlets/"+this.getClass().getName()+".properties";
}
prop.load(new
FileInputStream(propFileName));
} catch
(IOException io) {
throw
new
ServletException("IO
Error reading properties file!");
}
MT = InitSystem.initSystem(config, prop);
//
MT.getPM().setPermissionsAuthorityName("PA");
//MT.getPM().setDefaultPermissionsAuthority(new
NoPermissionsAuthority());
}
public
void
doGet (HttpServletRequest servletReq, HttpServletResponse servletRes) throws
ServletException, IOException {
doService(servletReq,servletRes);
}
public
void
doPost (HttpServletRequest servletReq, HttpServletResponse servletRes) throws
ServletException, IOException {
doService(servletReq,servletRes);
}
private
void
doService(HttpServletRequest servletReq, HttpServletResponse servletRes) throws
ServletException, IOException {
MT.getStatsManager().getStat("Servlet").incStat("TotalTransactions");
long
startTime = System.currentTimeMillis();
try
{
HTTPRequest req = new
HTTPRequest(servletReq);
if
(req.getParameter("SessionID")
== null)
{
String fquid;
if
(req.hasValue("PageHandler"))
{
fquid=req.getValue("PageHandler");
} else
{
fquid="";
}
HTTPResponse response = MT.getPM().handleRequest(MT, fquid,req,null);
response.render(servletRes,servletReq);
} else
{
HTTPResponse response;
try
{
WebSession thisSession = MT.getSM().getSession(req.getParameter("SessionID"));
response = MT.getPM().handleRequest(MT, req.getParameter("PageHandler"),
req,thisSession);
} catch
(SessionExpired se) {
WebSession thisSession = MT.getSM().getSession(req.getParameter("SessionID"),
true);
response = MT.getPM().handleRequest(MT, "SessionExpired",
req,thisSession);
}
response.render(servletRes,servletReq);
}
} catch
(Exception e) {
//Get the output stream
ServletOutputStream out = servletRes.getOutputStream();
servletRes.setContentType("text/html");
if
(e instanceof
InvalidSessionID) {
out.println("Invalid
session ID! Try relogging in.");
} else
{
//Add it to the stats
MT.getStatsManager().getStat("UserExceptions").incStat("TotalExceptions");
MT.getStatsManager().getStat("UserExceptions").addStat("Exceptions",new
ExceptionData(e));
MT.getLM().log(e);
HTTPWriter writer = new
HTTPWriter(out);
e.printStackTrace(writer);
writer.close();
}
}
MT.getStatsManager().getStat("Servlet").incStat("TotalServletCPUTime",(((float)
(System.currentTimeMillis() - startTime))/1000));
}
public
void
destroy() {
super.destroy();
MT.destroy();
}
public
String getServletInfo() {
return
"Project Apollo Demo
Site";
}
}