2 * Copyright (C) 2001, 2002 The Mir-coders group
4 * This file is part of Mir.
6 * Mir is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * Mir is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with Mir; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 * In addition, as a special exception, The Mir-coders gives permission to link
21 * the code of this program with the com.oreilly.servlet library, any library
22 * licensed under the Apache Software License, The Sun (tm) Java Advanced
23 * Imaging library (JAI), The Sun JIMI library (or with modified versions of
24 * the above that use the same license as the above), and distribute linked
25 * combinations including the two. You must obey the GNU General Public
26 * License in all respects for all of the code used other than the above
27 * mentioned libraries. If you modify this file, you may extend this exception
28 * to your version of the file, but you are not obligated to do so. If you do
29 * not wish to do so, delete this exception statement from your version.
34 import mir.misc.Logfile;
35 import mir.misc.MirConfig;
36 import mir.misc.StringUtil;
37 import mir.storage.StorageObjectException;
39 import javax.servlet.UnavailableException;
40 import javax.servlet.http.HttpServlet;
41 import javax.servlet.http.HttpServletRequest;
42 import javax.servlet.http.HttpServletResponse;
43 import javax.servlet.http.HttpSession;
44 import java.util.Locale;
45 import java.util.Random;
49 * Description: Abstract servlet-class
50 * Copyright: Copyright (c) 2001, 2002
51 * Company: Mir-coders group
52 * @author idfx, the Mir-coders group
53 * @version $Id: AbstractServlet.java,v 1.19 2002/12/23 03:12:46 mh Exp $
56 public abstract class AbstractServlet extends HttpServlet {
57 protected static String lang;
58 protected static Logfile theLog;
60 protected void setNoCaching(HttpServletResponse res) {
61 //nothing in Mir can or should be cached as it's all dynamic...
63 //this needs to be done here and not per page (via meta tags) as some
64 //browsers have problems w/ it per-page -mh
65 res.setHeader("Pragma", "no-cache");
66 res.setDateHeader("Expires", 0);
67 res.setHeader("Cache-Control", "no-cache");
73 protected boolean getConfig(HttpServletRequest req)
74 throws UnavailableException {
76 String name = super.getServletName();
79 MirConfig.initConfig(super.getServletContext(), req.getContextPath(),
80 name, getInitParameter("Config"));
82 theLog = Logfile.getInstance(MirConfig.getPropWithHome(name + ".Logfile"));
83 theLog.printInfo(name + " started.");
84 theLog.printInfo("Path is: " + MirConfig.getProp("Home"));
85 theLog.printInfo("Root URI is: " + MirConfig.getProp("RootUri"));
86 theLog.printInfo("StandardLanguage is: " + MirConfig.getProp("StandardLanguage"));
88 MirConfig.initDbPool();
90 catch (StorageObjectException e) {
91 throw new UnavailableException(
92 "Could not initialize database pool. -- "
95 super.getServletContext().setAttribute("mir.confed", new Boolean(true));
100 * Bind the language to the session
102 protected void setLanguage(HttpSession session, String language) {
103 session.setAttribute("Language", language);
106 protected void setLocale(HttpSession session, Locale loc) {
107 session.setAttribute("Locale", loc);
111 * Get the session-bound language
113 protected String getLanguage(HttpServletRequest req, HttpSession session) {
114 String lang = (String) session.getAttribute("Language");
115 if (lang == null || lang.equals("")) {
116 return getAcceptLanguage(req);
124 * get the locale either from the session or the accept-language header ot the request
125 * this supersedes getLanguage for the new i18n
127 public Locale getLocale(HttpServletRequest req) {
129 HttpSession session = req.getSession(false);
131 // session can be null in case of logout
132 loc = (Locale) session.getAttribute("Locale");
134 // if there is nothing in the session get it fron the accept-language
136 loc = req.getLocale();
142 * Checks the Accept-Language of the client browser.
143 * If this language is available it returns its country-code,
144 * else it returns the standard-language
146 protected String getAcceptLanguage(HttpServletRequest req) {
147 Locale loc = req.getLocale();
148 lang = loc.getLanguage();