X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=source%2FOpenMir.java;h=93460f093773eda32298230f01dd195dfb924ae3;hb=485710ae6b88e29280cfcdde3d47afdd9ce2ec2c;hp=2c6f09200f7eb997b9600edeb30e4f786d05772f;hpb=5b2d2279e1d26546a38c5cd3ba3e4f72192e351b;p=mir.git diff --git a/source/OpenMir.java b/source/OpenMir.java index 2c6f0920..93460f09 100755 --- a/source/OpenMir.java +++ b/source/OpenMir.java @@ -29,124 +29,128 @@ * not wish to do so, delete this exception statement from your version. */ -import java.io.*; -import java.util.*; -import java.net.*; -import java.lang.reflect.*; -import javax.servlet.*; -import javax.servlet.http.*; -import java.sql.*; - -import freemarker.template.*; - -import mir.misc.*; -import mir.servlet.*; - -import mircoders.servlet.*; -import mircoders.module.*; -import mircoders.entity.*; -import mircoders.storage.*; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.GregorianCalendar; +import java.util.Locale; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import mir.config.MirPropertiesConfiguration; +import mir.misc.HTMLTemplateProcessor; +import mir.misc.StringUtil; +import mir.servlet.AbstractServlet; +import mir.servlet.ServletModuleDispatch; +import mir.servlet.ServletModuleUserExc; +import mir.util.ExceptionFunctions; +import mircoders.servlet.ServletModuleOpenIndy; + +import org.apache.struts.util.MessageResources; + +import freemarker.template.SimpleHash; +import freemarker.template.SimpleScalar; /** * OpenMir.java - main servlet for open posting and comment feature to articles * - * @author RK 1999-2001 + * @author RK 1999-2001, the mir-coders group + * @version $Id: OpenMir.java,v 1.27 2003/03/09 19:14:21 idfx Exp $ * */ public class OpenMir extends AbstractServlet { - - //private static boolean confed=false; private static String lang; public HttpSession session; - public void doGet(HttpServletRequest req, HttpServletResponse res) - throws ServletException, IOException { - doPost(req,res); + public void doGet(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletException, IOException { + doPost(aRequest,aResponse); } - public void doPost(HttpServletRequest req, HttpServletResponse res) - throws ServletException, IOException { + public void doPost(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletException, IOException { + long startTime = System.currentTimeMillis(); + long sessionConnectTime=0; - long startTime = (new java.util.Date()).getTime(); - long sessionConnectTime=0; - - // get the configration - this could conflict if 2 mirs are in the - // VM maybe? to be checked. -mh - // -- they would have different servlet contexts, so the following is - // no problem (br1) - if(getServletContext().getAttribute("mir.confed") == null) { - getConfig(req); - } - session = req.getSession(); + session = aRequest.getSession(); if(session.getAttribute("Language")==null){ - if (req.getParameter("language")!=null) { - setLanguage(session, req.getParameter("language")); + if (aRequest.getParameter("language")!=null) { + setLanguage(session, aRequest.getParameter("language")); } else { - setLanguage(session, getAcceptLanguage(req)); + setLanguage(session, getAcceptLanguage(aRequest)); } } - if (req.getParameter("language")!=null) - setLocale(session, new Locale(req.getParameter("language"), "") ); + if (session.getAttribute("language")!=null) + setLocale(session, new Locale((String) session.getAttribute("language"), "") ); + + //make sure client browsers don't cache anything + setNoCaching(aResponse); + + aResponse.setContentType("text/html"); + //aResponse.setContentType("text/html; charset="+MirPropertiesConfiguration.instance().getString("Mir.DefaultHTMLCharset")); - res.setContentType("text/html; charset=" - +MirConfig.getProp("Mir.DefaultEncoding")); try { - ServletModuleDispatch.dispatch(ServletModuleOpenIndy.getInstance(),req,res); + ServletModuleDispatch.dispatch(ServletModuleOpenIndy.getInstance(), aRequest, aResponse); } - catch (ServletModuleUserException e) { - handleUserError(req,res,res.getWriter(), e.getMessage()); - } - catch (ServletModuleException e){ - e.printStackTrace(); - handleError(req,res,res.getWriter(), "OpenIndy :: ServletException in Module ServletModule -- " + e.getMessage()); + catch (Throwable e) { + Throwable cause = ExceptionFunctions.traceCauseException(e); + + if (cause instanceof ServletModuleUserExc) + handleUserError(aRequest, aResponse, aResponse.getWriter(), (ServletModuleUserExc) cause); + else + handleError(aRequest, aResponse, aResponse.getWriter(), cause); + } - // timing... - sessionConnectTime = new java.util.Date().getTime() - startTime; - theLog.printInfo("EXECTIME (ServletModuleOpenIndy): " + sessionConnectTime + " ms"); + + sessionConnectTime = System.currentTimeMillis() - startTime; + logger.debug("EXECTIME (ServletModuleOpenIndy): " + sessionConnectTime + " ms"); } - private void handleUserError(HttpServletRequest req, HttpServletResponse res, - PrintWriter out, String errorString) { + private void handleUserError(HttpServletRequest aRequest, HttpServletResponse aResponse, + PrintWriter out, ServletModuleUserExc anException) { try { - theLog.printError(errorString); + logger.info("user error: " + anException.getMessage()); SimpleHash modelRoot = new SimpleHash(); - modelRoot.put("errorstring", new SimpleScalar(errorString)); + MessageResources messages = MessageResources.getMessageResources("bundles.open"); + modelRoot.put("errorstring", + new SimpleScalar( + messages.getMessage(getLocale(aRequest), anException.getMessage(), anException.getParameters()) + )); modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar()))); - HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.UserErrorTemplate"), - modelRoot, out, req.getLocale() ); + HTMLTemplateProcessor.process(aResponse,MirPropertiesConfiguration.instance().getString("ServletModule.OpenIndy.UserErrorTemplate"), + modelRoot, out, getLocale(aRequest)); out.close(); } catch (Exception e) { - System.err.println("Error in UserErrorTemplate"); + logger.error("Error in UserErrorTemplate"); } - } - private void handleError(HttpServletRequest req, HttpServletResponse res,PrintWriter out, String errorString) { - + private void handleError(HttpServletRequest aRequest, HttpServletResponse aResponse,PrintWriter out, Throwable anException) { try { - theLog.printError(errorString); + logger.error("error: " + anException); SimpleHash modelRoot = new SimpleHash(); - modelRoot.put("errorstring", new SimpleScalar(errorString)); + + modelRoot.put("errorstring", new SimpleScalar(anException.getMessage())); modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime( new GregorianCalendar()))); - HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.ErrorTemplate"), - modelRoot,out, req.getLocale()); + HTMLTemplateProcessor.process(aResponse,MirPropertiesConfiguration.instance().getString("ServletModule.OpenIndy.ErrorTemplate"), + modelRoot,out, getLocale(aRequest)); out.close(); } catch (Exception e) { - System.err.println("Error in ErrorTemplate"); + logger.error("Error in ErrorTemplate"); } } public String getServletInfo(){ - return "OpenMir "+MirConfig.getProp("Mir.Version"); + return "OpenMir "+configuration.getString("Mir.Version"); } }