X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2FMir.java;h=91be32de1f460388b90c869d812d828da6df6589;hb=63e0ee1fb8038eb6d8f0190cf38c3b3ab2727216;hp=d3673423d48c7c74b3a1826b9bb2d21466e019f4;hpb=8b91e8d8bf4a31a88440a404e83238dcf32f8f4a;p=mir.git diff --git a/source/Mir.java b/source/Mir.java index d3673423..91be32de 100755 --- a/source/Mir.java +++ b/source/Mir.java @@ -28,50 +28,30 @@ * If you do not wish to do so, delete this exception statement from your version. */ -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Vector; - -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.UnavailableException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpSessionBindingEvent; -import javax.servlet.http.HttpSessionBindingListener; - +import mir.bundle.Bundle; import mir.config.MirPropertiesConfiguration; -import mir.servlet.AbstractServlet; -import mir.servlet.ServletModule; -import mir.servlet.ServletModuleDispatch; -import mir.servlet.ServletModuleExc; -import mir.servlet.ServletModuleUserExc; +import mir.servlet.*; import mir.util.ExceptionFunctions; import mir.util.StringRoutines; +import mir.log.LoggerWrapper; import mircoders.entity.EntityUsers; import mircoders.global.MirGlobal; import mircoders.module.ModuleUsers; import mircoders.servlet.ServletHelper; -import mircoders.storage.DatabaseUsers; - -import org.apache.struts.util.MessageResources; - +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.UnavailableException; +import javax.servlet.http.*; +import java.io.IOException; +import java.io.PrintWriter; +import java.lang.reflect.Method; +import java.util.*; +import multex.Failure; /** * Mir.java - main servlet, that dispatches to servletmodules - * - * @author $Author: zapata $ - * @version $Id: Mir.java,v 1.49.2.11 2004/01/18 17:30:56 zapata Exp $ - * */ public class Mir extends AbstractServlet { private static ModuleUsers usersModule = null; @@ -80,29 +60,29 @@ public class Mir extends AbstractServlet { private static List loginLanguages = null; - protected List getLoginLanguages() throws ServletException { + private List getLoginLanguages() throws Failure { synchronized (Mir.class) { try { if (loginLanguages == null) { - MessageResources messageResources = - MessageResources.getMessageResources("bundles.adminlocal"); - MessageResources messageResources2 = - MessageResources.getMessageResources("bundles.admin"); - List languages = StringRoutines.splitString(MirGlobal.config().getString("Mir.Login.Languages", "en"), ";"); - loginLanguages = new Vector(); + loginLanguages = new ArrayList(); Iterator i = languages.iterator(); while (i.hasNext()) { String code = (String) i.next(); - Locale locale = new Locale(code, ""); - String name = messageResources.getMessage(locale, "languagename"); + + Bundle bundle = + MirGlobal.getBundleFactory().getBundle("etc/bundles/adminlocal", new String[] { code }); + Bundle defaultBundle = + MirGlobal.getBundleFactory().getBundle("bundles/admin", new String[] { code }); + + String name = bundle.getValue("languagename", Collections.EMPTY_LIST); if (name == null) { - name = messageResources2.getMessage(locale, "languagename"); + name = defaultBundle.getValue("languagename", Collections.EMPTY_LIST); } if (name == null) { @@ -119,7 +99,7 @@ public class Mir extends AbstractServlet { return loginLanguages; } catch (Throwable t) { - throw new ServletException(t.getMessage()); + throw new Failure("Error while retrieving the available login languages", t); } } } @@ -127,7 +107,7 @@ public class Mir extends AbstractServlet { public void init(ServletConfig config) throws ServletException { super.init(config); - usersModule = new ModuleUsers(DatabaseUsers.getInstance()); + usersModule = new ModuleUsers(); } protected String getDefaultLanguage(HttpServletRequest aRequest) { @@ -253,7 +233,7 @@ public class Mir extends AbstractServlet { } } catch (Throwable t) { - t.printStackTrace(); + t.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE)); throw new ServletException(t.toString()); } @@ -308,8 +288,21 @@ public class Mir extends AbstractServlet { Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] {getLocale(aRequest), getFallbackLocale()}); - MessageResources messages = MessageResources.getMessageResources("bundles.admin"); - responseData.put("errorstring", messages.getMessage(getLocale(aRequest), anException.getMessage(), anException.getParameters())); + Bundle bundle = + MirGlobal.getBundleFactory().getBundle("etc/bundles/adminlocal", new + String[] { getLocale(aRequest).getLanguage() }); + Bundle defaultBundle = + MirGlobal.getBundleFactory().getBundle("bundles/admin", new + String[] { getLocale(aRequest).getLanguage() }); + String message = + bundle.getValue(anException.getMessage(), Arrays.asList(anException.getParameters())); + + if (message==null) { + message = + defaultBundle.getValue(anException.getMessage(), Arrays.asList(anException.getParameters())); + } + + responseData.put("errorstring", message); responseData.put("date", new GregorianCalendar().getTime()); ServletHelper.generateResponse(aResponse.getWriter(), responseData, MirPropertiesConfiguration.instance().getString("Mir.UserErrorTemplate")); @@ -332,6 +325,22 @@ public class Mir extends AbstractServlet { } catch (Throwable e) { logger.error("Error handling error: " + e.toString()); + + try { + Throwable rootException = ExceptionFunctions.traceCauseException(anException); + + PrintWriter writer = aResponse.getWriter(); + writer.println("FATAL Error"); + writer.println("

" + rootException.toString()+"

"); + writer.println(""); + rootException.printStackTrace(writer); + writer.println(""); + writer.println(""); + writer.close(); + } + catch (Throwable t) { + + } } }