Author: cziegeler Date: Fri Jan 21 13:40:39 2005 New Revision: 125965 URL: http://svn.apache.org/viewcvs?view=rev&rev=125965 Log: Read settings from optional property files Modified: cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java cocoon/trunk/src/java/org/apache/cocoon/servlet/CocoonServlet.java cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java
Modified: cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java?view=diff&rev=125965&p1=cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java&r1=125964&p2=cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java&r2=125965 ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java Fri Jan 21 13:40:39 2005 @@ -26,6 +26,9 @@ */ public class Settings { + /** Name of the property specifying a user properties file */ + public static final String PROPERTY_USER_SETTINGS = "org.apache.cocoon.settings"; + /** * Default value for [EMAIL PROTECTED] #isAllowReload()} parameter (false) */ Modified: cocoon/trunk/src/java/org/apache/cocoon/servlet/CocoonServlet.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/servlet/CocoonServlet.java?view=diff&rev=125965&p1=cocoon/trunk/src/java/org/apache/cocoon/servlet/CocoonServlet.java&r1=125964&p2=cocoon/trunk/src/java/org/apache/cocoon/servlet/CocoonServlet.java&r2=125965 ============================================================================== --- cocoon/trunk/src/java/org/apache/cocoon/servlet/CocoonServlet.java (original) +++ cocoon/trunk/src/java/org/apache/cocoon/servlet/CocoonServlet.java Fri Jan 21 13:40:39 2005 @@ -16,6 +16,7 @@ package org.apache.cocoon.servlet; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -29,6 +30,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Properties; import java.util.StringTokenizer; import java.util.jar.Attributes; import java.util.jar.Manifest; @@ -167,8 +169,42 @@ * can be overwritten */ protected Settings getSettings() { - // create a settings object from the servlet parameters - Settings s = SettingsHelper.getSettings(this.getServletConfig()); + // create an empty settings objects + final Settings s = new Settings(); + + String additionalPropertyFile = System.getProperty(Settings.PROPERTY_USER_SETTINGS); + + // read cocoon-settings.properties - if available + InputStream propsIS = this.getServletContext().getResourceAsStream("cocoon-settings.properties"); + if ( propsIS != null ) { + this.servletContext.log("Reading settings from 'cocoon-settings.properties'"); + final Properties p = new Properties(); + try { + p.load(propsIS); + propsIS.close(); + s.fill(p); + additionalPropertyFile = p.getProperty(Settings.PROPERTY_USER_SETTINGS, additionalPropertyFile); + } catch (IOException ignore) { + this.servletContext.log("Unable to read 'cocoon-settings.properties'.", ignore); + this.servletContext.log("Continuing initialization."); + } + } + // fill from the servlet parameters + SettingsHelper.fill(s, this.getServletConfig()); + + // read additional properties file + if ( additionalPropertyFile != null ) { + this.servletContext.log("Reading user settings from '" + additionalPropertyFile + "'"); + final Properties p = new Properties(); + try { + FileInputStream fis = new FileInputStream(additionalPropertyFile); + p.load(fis); + fis.close(); + } catch (IOException ignore) { + this.servletContext.log("Unable to read '" + additionalPropertyFile + "'.", ignore); + this.servletContext.log("Continuing initialization."); + } + } // now overwrite with system properties s.fill(System.getProperties()); @@ -189,7 +225,9 @@ */ public void init(ServletConfig conf) throws ServletException { - + this.servletContext = conf.getServletContext(); + this.servletContext.log("Initializing Apache Cocoon " + Constants.VERSION); + super.init(conf); // initialize settings @@ -216,7 +254,6 @@ System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"); } - this.servletContext = conf.getServletContext(); this.appContext.put(Constants.CONTEXT_ENVIRONMENT_CONTEXT, new HttpContext(this.servletContext)); this.servletContextPath = this.servletContext.getRealPath("/"); @@ -384,6 +421,8 @@ // Add the servlet configuration this.appContext.put(CONTEXT_SERVLET_CONFIG, conf); this.createCocoon(); + this.servletContext.log("Apache Cocoon " + Constants.VERSION + " is initialized and ready to serve requests."); + } /** @@ -1191,7 +1230,7 @@ } private Logger getCocoonLogger() { - final String rootlogger = getInitParameter("cocoon-logger"); + final String rootlogger = this.settings.getCocoonLogger(); if (rootlogger != null) { return this.getLoggerManager().getLoggerForCategory(rootlogger); } else { Modified: cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java?view=diff&rev=125965&p1=cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java&r1=125964&p2=cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java&r2=125965 ============================================================================== --- cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java (original) +++ cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java Fri Jan 21 13:40:39 2005 @@ -34,9 +34,7 @@ // no instantiation } - public static Settings getSettings(ServletConfig config) { - final Settings s = new Settings(); - + public static void fill(Settings s, ServletConfig config) { // logging s.setCocoonLogger(config.getInitParameter("cocoon-logger")); s.setAccessLogger(config.getInitParameter("servlet-logger")); @@ -76,8 +74,6 @@ s.setFormEncoding(config.getInitParameter("form-encoding")); // TODO extra classpath - - return s; } /** Convenience method to access boolean servlet parameters */
