--- android/TrainInfoService/src/dk/thoerup/traininfoservice/SettingsListener.java 2011/04/19 11:52:39 1303 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/SettingsListener.java 2011/04/20 16:47:21 1345 @@ -5,8 +5,12 @@ import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; +import javax.servlet.ServletRegistration; import javax.servlet.annotation.WebListener; +import dk.thoerup.webconfig.ConfigServlet; +import dk.thoerup.webconfig.ContextConfigLoader; + /** @@ -26,15 +30,27 @@ logger.warning("Context Init - Loading settings"); ServletContext cxt = sce.getServletContext(); + TraininfoSettings settings = loadSettings(cxt); + + + ConfigServlet servlet = new ConfigServlet(); + servlet.setConfigObject( settings ); + ServletRegistration.Dynamic dynconf = cxt.addServlet("webconfig", servlet ); + dynconf.addMapping("/ConfigServlet"); - TraininfoSettings settings = new TraininfoSettings(); - settings.useazuresite = Boolean.parseBoolean( cxt.getInitParameter("useazuresite") ); - settings.cache_timeout = Integer.parseInt( cxt.getInitParameter("cache_timeout") ); - settings.reply_timeout = Integer.parseInt( cxt.getInitParameter("reply_timeout") ); - - - sce.getServletContext().setAttribute("settings", settings); - + } + + public static TraininfoSettings loadSettings(ServletContext cxt) { + TraininfoSettings settings = (TraininfoSettings) cxt.getAttribute("settings"); + if (settings != null) + return settings; + + settings = new TraininfoSettings(); + new ContextConfigLoader(cxt).loadConfig(settings); + + cxt.setAttribute("settings", settings); + + return settings; } /**