Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

JwaaServlet.java

00001 package edu.virtualschool.jwaa.xml;
00002 
00003 import java.io.File;
00004 import java.io.IOException;
00005 import java.io.PrintWriter;
00006 import java.sql.Connection;
00007 
00008 import javax.servlet.ServletConfig;
00009 import javax.servlet.ServletException;
00010 import javax.servlet.http.HttpServletRequest;
00011 import javax.servlet.http.HttpServletResponse;
00012 
00013 import org.apache.log4j.Logger;
00014 import org.apache.log4j.PropertyConfigurator;
00015 
00016 import edu.virtualschool.jwaa.AccountAbstraction;
00017 import edu.virtualschool.jwaa.Fault;
00018 import edu.virtualschool.jwaa.GenericServlet;
00019 import edu.virtualschool.jwaa.MetaPage;
00020 import edu.virtualschool.jwaa.bean.DemoAccountBean;
00021 import edu.virtualschool.jwaa.dbms.DBPool;
00022 
00027 public class JwaaServlet extends GenericServlet
00028 {
00029   DBPool connectionPool;
00030   File homeDirectory;
00031   File rootDirectory;
00032   String servletUrlPrefix;
00033   RootDirectory root;
00034   
00035   final static Logger logger = Logger.getLogger(JwaaServlet.class.getName());
00036   
00037   public JwaaServlet()
00038   {
00039     super(new edu.virtualschool.jwaa.MetaPage[] 
00040     { 
00041       Controller.meta 
00042     });
00043   }
00044   public void init(ServletConfig config) throws ServletException
00045   {
00046     logger.info("Initializing Jwaa/XML servlet");
00047     super.init(config);
00048     {
00049       String s = config.getInitParameter("home.directory");
00050       if (s == null)
00051         throw new ServletException("home.directory init parameter missing");
00052       this.homeDirectory = new File(s);
00053       if (!homeDirectory.isDirectory())
00054         throw new ServletException(homeDirectory+" is not a directory");
00055     }
00056     {
00057       File webDir = new File(homeDirectory, "WEB-INF");
00058       File propertiesDir = new File(webDir, "classes");
00059       File log4jProperties = new File(propertiesDir, "log4j.properties");
00060       if (!log4jProperties.exists())
00061         throw new ServletException (log4jProperties+" not found");
00062       logger.info("watching log4j properties = "+log4jProperties);
00063       PropertyConfigurator.configureAndWatch(log4jProperties.toString());
00064     }
00065     {
00066       this.servletUrlPrefix = config.getInitParameter("url.prefix");
00067       if (servletUrlPrefix == null)
00068         throw new ServletException ("url.prefix init parameter missing");
00069       logger.debug("url.prefix is " + servletUrlPrefix);
00070     }
00071     {
00072       String p = config.getInitParameter("root.directory");
00073       if (p == null)
00074         throw new ServletException("root.directory init parameter missing");
00075       rootDirectory = new File(p);
00076       logger.debug("root.directory is " + rootDirectory);
00077       if (!rootDirectory.isDirectory())
00078         throw new ServletException(rootDirectory+" is not a directory");
00079     }
00080     logger.debug("initializing root with "+rootDirectory+" and "+servletUrlPrefix);
00081     root = new RootDirectory(rootDirectory, servletUrlPrefix);
00082     logger.info("Jwaa/XML servlet initialization OK");
00083   }
00091   public final void doFault(
00092       MetaPage meta,
00093       HttpServletRequest rq,
00094       HttpServletResponse rs,
00095       Throwable e)
00096   {
00097     logger.error(e, e);
00098     try
00099     {
00100       PrintWriter pw = rs.getWriter();
00101       pw.println("<h1 align=\"center\">Whups: "+e.getMessage()+"</h1>");
00102       pw.println("<pre>");
00103       e.printStackTrace(pw);
00104       pw.println("</pre>");
00105     }
00106     catch (IOException e2)
00107     {
00108       e2.printStackTrace();
00109     }
00110   }
00111   public MetaPage getDefaultPage()
00112   {
00113     return Controller.meta;
00114   }
00115   public MetaPage getRefusePage()
00116   {
00117     return Controller.meta;
00118   }
00119   public MetaPage getRootPage()
00120   {
00121     return Controller.meta;
00122   }
00123   public AccountAbstraction getNullAccount()
00124   {
00125     return DemoAccountBean.Null;
00126   }
00127   public RootDirectory getRoot()
00128   {
00129     return root;
00130   }
00131   public Connection checkoutConnection() throws Fault
00132   {
00133     return connectionPool.checkout();
00134   }
00135   public void checkinConnection(Connection c) throws Fault
00136   {
00137     connectionPool.checkin(c);
00138   }
00139 }