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.HttpSession;
43 import java.util.Locale;
44 import java.util.Random;
48 * Description: Abstract servlet-class
49 * Copyright: Copyright (c) 2001, 2002
50 * Company: Mir-coders group
51 * @author idfx, the Mir-coders group
52 * @version $Id: AbstractServlet.java,v 1.18 2002/11/27 08:22:03 mh Exp $
55 public abstract class AbstractServlet extends HttpServlet {
56 protected static String lang;
57 protected static Logfile theLog;
62 protected boolean getConfig(HttpServletRequest req)
63 throws UnavailableException {
65 //String RealPath = super.getServletContext().getRealPath("/");
66 String name = super.getServletName();
69 //MirConfig.initConfig(RealPath, RootUri, Name, getInitParameter("Config"));
70 MirConfig.initConfig(super.getServletContext(), req.getContextPath(),
71 name, getInitParameter("Config"));
73 theLog = Logfile.getInstance(MirConfig.getPropWithHome(name + ".Logfile"));
74 theLog.printInfo(name + " started.");
75 theLog.printInfo("Path is: " + MirConfig.getProp("Home"));
76 theLog.printInfo("Root URI is: " + MirConfig.getProp("RootUri"));
77 theLog.printInfo("StandardLanguage is: " + MirConfig.getProp("StandardLanguage"));
79 MirConfig.initDbPool();
81 catch (StorageObjectException e) {
82 throw new UnavailableException(
83 "Could not initialize database pool. -- "
86 super.getServletContext().setAttribute("mir.confed", new Boolean(true));
91 * Bind the language to the session
93 protected void setLanguage(HttpSession session, String language) {
94 session.setAttribute("Language", language);
97 protected void setLocale(HttpSession session, Locale loc) {
98 session.setAttribute("Locale", loc);
102 * Get the session-bound language
104 protected String getLanguage(HttpServletRequest req, HttpSession session) {
105 String lang = (String) session.getAttribute("Language");
106 if (lang == null || lang.equals("")) {
107 return getAcceptLanguage(req);
115 * get the locale either from the session or the accept-language header ot the request
116 * this supersedes getLanguage for the new i18n
118 public Locale getLocale(HttpServletRequest req) {
120 HttpSession session = req.getSession(false);
122 // session can be null in case of logout
123 loc = (Locale) session.getAttribute("Locale");
125 // if there is nothing in the session get it fron the accept-language
127 loc = req.getLocale();
133 * Checks the Accept-Language of the client browser.
134 * If this language is available it returns its country-code,
135 * else it returns the standard-language
137 protected String getAcceptLanguage(HttpServletRequest req) {
138 Locale loc = req.getLocale();
139 lang = loc.getLanguage();
140 /* not needed anymore due to new i18n
141 File f = new File(HTMLTemplateProcessor.templateDir+"/"+lang);
142 //is there an existing template-path?
143 if(!f.isDirectory()){
144 //no there isn't. we use standard-language
145 lang = MirConfig.getProp("StandardLanguage");
146 theLog.printDebugInfo("language not existing");
148 theLog.printDebugInfo("Language: " + lang);