henning     2003/06/02 03:24:46

  Modified:    .        project.xml
               src/java/org/apache/turbine Turbine.java
               src/java/org/apache/turbine/util TurbineConfig.java
  Added:       src/test-cactus/org/apache/turbine TurbineTest.java
                        TurbineTest2.java
               src/test-cactus/testapp/WEB-INF/conf
                        TurbineComplete.properties TurbineConfiguration.xml
  Removed:     proposals/epugh/compositeconfiguration Turbine.java
                        TurbineComplete.properties TurbineConfig.java
                        TurbineConfiguration.xml TurbineTest.java
                        TurbineTest2.java project.xml readme.txt
  Log:
  Moved Erics' composite configuration proposal in. He was sitting on it
  for quite a while and it was up for a review for a long time and nobody
  objected. I did clean up the code a little but all kudos go to Eric.
  
  Revision  Changes    Path
  1.114     +2 -1      jakarta-turbine-2/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/project.xml,v
  retrieving revision 1.113
  retrieving revision 1.114
  diff -u -r1.113 -r1.114
  --- project.xml       24 Apr 2003 16:03:30 -0000      1.113
  +++ project.xml       2 Jun 2003 10:24:45 -0000       1.114
  @@ -318,6 +318,7 @@
       <dependency>
         <id>commons-configuration</id>
         <version>20030311.152757</version>
  +      <!-- <version>0.8.1</version> -->
         <url>http://jakarta.apache.org/commons/sandbox/configuration/index.html</url>
         <properties>
           <war.bundle.jar>true</war.bundle.jar>
  @@ -541,7 +542,7 @@
       </dependency>
       <dependency>
         <id>xmlrpc</id>
  -      <version>1.2-a1</version>
  +      <version>1.2-a2</version>
         <url>http://xml.apache.org/xmlrpc/</url>
         <properties>
           <war.bundle.jar>true</war.bundle.jar>
  
  
  
  1.40      +86 -31    jakarta-turbine-2/src/java/org/apache/turbine/Turbine.java
  
  Index: Turbine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/Turbine.java,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- Turbine.java      21 May 2003 15:04:40 -0000      1.39
  +++ Turbine.java      2 Jun 2003 10:24:45 -0000       1.40
  @@ -68,6 +68,7 @@
   import javax.servlet.http.HttpServletResponse;
   
   import org.apache.commons.configuration.Configuration;
  +// import org.apache.commons.configuration.ConfigurationFactory;
   import org.apache.commons.configuration.PropertiesConfiguration;
   
   import org.apache.commons.lang.StringUtils;
  @@ -132,6 +133,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Martin Poeschl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Quinton McCombs</a>
  + * @author <a href="mailto:[EMAIL PROTECTED]">Eric Pugh</a>
    * @version $Id$
    */
   public class Turbine
  @@ -226,12 +228,8 @@
               try
               {
                   ServletContext context = config.getServletContext();
  -                String trProps =
  -                    findInitParameter(context, config,
  -                                      TurbineConfig.PROPERTIES_PATH_KEY,
  -                                      TurbineConfig.PROPERTIES_PATH_DEFAULT);
   
  -                configure(config, context, trProps);
  +                configure(config, context);
   
                   templateService = TurbineTemplate.getService();
                   rundataService = TurbineRunDataFacade.getService();
  @@ -254,19 +252,26 @@
           }
       }
   
  -    private void configure(ServletConfig config, ServletContext context,
  -                           String propsFile)
  +    /**
  +     * Read the master configuration file in, configure logging
  +     * and start up any early services.
  +     *
  +     * @param config The Servlet Configuration supplied by the container
  +     * @param context The Servlet Context supplied by the container
  +     *
  +     * @throws Exception A problem occured while reading the configuration or 
performing early startup
  +     */
  +
  +    private void configure(ServletConfig config, ServletContext context)
               throws Exception
       {
  -
           // Set the application root. This defaults to the webapp
           // context if not otherwise set. This is to allow 2.1 apps
           // to be developed from CVS. This feature will carry over
           // into 3.0.
  -        applicationRoot =
  -            findInitParameter(context, config,
  -                              APPLICATION_ROOT_KEY,
  -                              APPLICATION_ROOT_DEFAULT);
  +        applicationRoot = findInitParameter(context, config,
  +                APPLICATION_ROOT_KEY,
  +                APPLICATION_ROOT_DEFAULT);
   
           webappRoot = config.getServletContext().getRealPath("/");
           // log.info("Web Application root is " + webappRoot);
  @@ -286,25 +291,71 @@
           createRuntimeDirectories(context, config);
   
           //
  -        // Set up logging as soon as possible
  +        // Now we run the Turbine configuration code. There are two ways
  +        // to configure Turbine:
           //
  +        // a) By supplying an web.xml init parameter called "configuration"
  +        //
  +        // <init-param>
  +        //   <param-name>configuration</param-name>
  +        //   <param-value>/WEB-INF/conf/turbine.xml</param-value>
  +        // </init-param>
  +        //
  +        // This loads an XML based configuration file.
  +        //
  +        // b) By supplying an web.xml init parameter called "properties"
  +        //
  +        // <init-param>
  +        //   <param-name>properties</param-name>
  +        //   <param-value>/WEB-INF/conf/TurbineResources.properties</param-value>
  +        // </init-param>
  +        //
  +        // This loads a Properties based configuration file. Actually, these are
  +        // extended properties as provided by commons-configuration
  +        //
  +        // If neither a) nor b) is supplied, Turbine will fall back to the
  +        // known behaviour of loading a properties file called
  +        // /WEB-INF/conf/TurbineResources.properties relative to the
  +        // web application root.
  +
  +        String confFile= findInitParameter(context, config, 
  +                TurbineConfig.CONFIGURATION_PATH_KEY, 
  +                null);
  +
  +        String confPath;
  +        String confStyle = "unset";
  +
  +// Remove these comments and uncomment the 0.8.1 version of commons-configuration
  +// once this is on ibiblio. Until then, the XML code is not enabled. Don't forget
  +// to remove the comment in front of the import above.
  +//
  +//        if (StringUtils.isNotEmpty(confFile))
  +//        {
  +//            confPath = getRealPath(confFile);
  +//            ConfigurationFactory configurationFactory = new 
ConfigurationFactory();
  +//            configurationFactory.setBasePath(getApplicationRoot());
  +//            configurationFactory.setConfigurationFileName(confPath);
  +//            configuration = configurationFactory.getConfiguration();
  +//            confStyle = "XML";
  +//        }
  +//        else
  +//        {
  +            confFile = findInitParameter(context, config,
  +                    TurbineConfig.PROPERTIES_PATH_KEY,
  +                    TurbineConfig.PROPERTIES_PATH_DEFAULT);
  +
  +            confPath = getRealPath(confFile);
  +
  +            // This should eventually be a Configuration
  +            // interface so that service and app configuration
  +            // can be stored anywhere.
  +            configuration = (Configuration) new PropertiesConfiguration(confPath);
  +            confStyle = "Properties";
  +//        }
   
  -        // Get the full path to the properties file.
  -        if (propsFile == null)
  -        {
  -            propsFile = TurbineConfig.PROPERTIES_PATH_DEFAULT;
  -        }
  -
  -        String propsPath = getRealPath(propsFile);
  -
  -        // log.info("Loading Configuration from " + propsPath);
  -
  -        // This should eventually be a Configuration
  -        // interface so that service and app configuration
  -        // can be stored anywhere.
  -        configuration = (Configuration) new PropertiesConfiguration(propsPath);
  -
  -
  +        //
  +        // Set up logging as soon as possible
  +        //
           String log4jFile = configuration.getString(LOG4J_CONFIG_FILE,
                                                      LOG4J_CONFIG_FILE_DEFAULT);
   
  @@ -316,7 +367,6 @@
           // Load the config file above into a Properties object and
           // fix up the Application root
           //
  -
           Properties p = new Properties();
           try
           {
  @@ -339,6 +389,11 @@
           System.getProperties().setProperty(LogFactory.class.getName(),
                                              Log4jFactory.class.getName());
   
  +
  +        // Now report our successful configuration to the world
  +        log.info("Loaded configuration  (" + confStyle + ") from " + confFile + " 
(" + confPath + ")");
  +
  +        
           setTurbineServletConfig(config);
           setTurbineServletContext(context);
   
  
  
  
  1.13      +8 -1      
jakarta-turbine-2/src/java/org/apache/turbine/util/TurbineConfig.java
  
  Index: TurbineConfig.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/util/TurbineConfig.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- TurbineConfig.java        9 Mar 2003 06:58:43 -0000       1.12
  +++ TurbineConfig.java        2 Jun 2003 10:24:46 -0000       1.13
  @@ -106,11 +106,18 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Jon S. Stevens</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Daniel Rall</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
  + * @author <a href="mailto:[EMAIL PROTECTED]">Eric Pugh</a>
    * @version $Id$
    */
   public class TurbineConfig
           implements ServletConfig, ServletContext, Initializable, Disposable
   {
  +    /**
  +     * Servlet initialization parameter name for the path to
  +     * TurbineConfiguration.xml file used by Turbine
  +     */
  +    public static final String CONFIGURATION_PATH_KEY = "configuration";    
  +
       /**
        * Servlet initialization parameter name for the path to
        * Turbine.properties file used by Turbine
  
  
  
  1.1                  
jakarta-turbine-2/src/test-cactus/org/apache/turbine/TurbineTest.java
  
  Index: TurbineTest.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000-2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *     "Apache Jetspeed" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache" or
   *    "Apache Jetspeed", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.turbine;
  
  // Cactus and Junit imports
  import junit.awtui.TestRunner;
  import junit.framework.Test;
  import junit.framework.TestSuite;
  import org.apache.cactus.*;
  
  import org.apache.turbine.Turbine;
  import org.apache.commons.configuration.Configuration;
  /**
   * Test starting up Turbine with various parameters.  Because I can't get
   * shutdown to work, I made two tests.
   *
   * @author <a href="[EMAIL PROTECTED]">Eric Pugh</a>
   * @version $Id: TurbineTest.java,v 1.1 2003/06/02 10:24:46 henning Exp $
   */
  public class TurbineTest extends ServletTestCase
  {
      private Configuration configuration = null;
      private Turbine turbine = null;
  
      /**
       * Defines the testcase name for JUnit.
       *
       * @param name the testcase's name.
       */
      public TurbineTest(String name)
      {
          super(name);
      }
  
      /**
       * Start the tests.
       *
       * @param args the arguments. Not used
       */
      public static void main(String args[])
      {
          TestRunner.main(new String[] { TurbineTest.class.getName()});
      }
  
      /**
       * Creates the test suite.
       *
       * @return a test suite (<code>TestSuite</code>) that includes all methods
       *         starting with "test"
       */
      public static Test suite()
      {
          // All methods starting with "test" will be executed in the test suite.
          return new TestSuite(TurbineTest.class);
      }
  
      /**
       * This setup will be running server side.  We startup Turbine and
       * get our test port from the properties.  This gets run before
       * each testXXX test.
       */
      protected void setUp() throws Exception
      {
          super.setUp();
          configuration = null;
          turbine = new Turbine();
  
      }
  
      /**
       * After each testXXX test runs, shut down the Turbine servlet.
       */
      protected void tearDown() throws Exception
      {
          if (turbine != null)
          {
              turbine.destroy();
          }
          super.tearDown();
      }
  
      /**
       * Simple test that verify that turbine throws an exception 
       * when all parameters are missing, and the default TR.props
       * doesn't exists
       * @throws Exception
       */
      public void offtestCreateTurbineNoParameters() throws Exception
      {
  //System.out.println("Config:" + config.getInitParameter("properties"))
          try
          {
  
              
              turbine.init(config);
              fail(
                  "Should have thrown a javax.servlet.ServletException "
                      + "because the default TR.props doesn't exist!");
          }
          catch (javax.servlet.ServletException se)
          {
              turbine = null;
          }
          assertTrue("Make sure turbine is null", turbine == null);
      }
  
      /**
       * Simple test that verify that turbine can start up with a
       * TR.props
       * @throws Exception
       */
      public void testCreateTurbineWithTRProps() throws Exception
      {
          config.setInitParameter(
              "properties",
              "WEB-INF/conf/TurbineComplete.properties");
  
          turbine.init(config);
          assertNotNull("Make sure turbine loaded", turbine);
          configuration = turbine.getConfiguration();
          assertTrue("Make sure we have values", !configuration.isEmpty());
          assertEquals(
              "Read a config value",
              "lower",
              configuration.getString("url.case.folding"));
      }
  
    
  }
  
  
  
  1.1                  
jakarta-turbine-2/src/test-cactus/org/apache/turbine/TurbineTest2.java
  
  Index: TurbineTest2.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000-2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *     "Apache Jetspeed" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache" or
   *    "Apache Jetspeed", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.turbine;
  
  // Cactus and Junit imports
  import junit.awtui.TestRunner;
  import junit.framework.Test;
  import junit.framework.TestSuite;
  import org.apache.cactus.*;
  
  import org.apache.turbine.Turbine;
  import org.apache.commons.configuration.Configuration;
  /**
   * Test starting up Turbine with various parameters.  Because I can't get
   * shutdown to work, I made two tests.
   *
   * @author <a href="[EMAIL PROTECTED]">Eric Pugh</a>
   * @version $Id: TurbineTest2.java,v 1.1 2003/06/02 10:24:46 henning Exp $
   */
  public class TurbineTest2 extends ServletTestCase
  {
      private Configuration configuration = null;
      private Turbine turbine = null;
  
      /**
       * Defines the testcase name for JUnit.
       *
       * @param name the testcase's name.
       */
      public TurbineTest2(String name)
      {
          super(name);
      }
  
      /**
       * Start the tests.
       *
       * @param args the arguments. Not used
       */
      public static void main(String args[])
      {
          TestRunner.main(new String[] { TurbineTest2.class.getName()});
      }
  
      /**
       * Creates the test suite.
       *
       * @return a test suite (<code>TestSuite</code>) that includes all methods
       *         starting with "test"
       */
      public static Test suite()
      {
          // All methods starting with "test" will be executed in the test suite.
          return new TestSuite(TurbineTest2.class);
      }
  
      /**
       * This setup will be running server side.  We startup Turbine and
       * get our test port from the properties.  This gets run before
       * each testXXX test.
       */
      protected void setUp() throws Exception
      {
          super.setUp();
          configuration = null;
          turbine = new Turbine();
  
      }
  
      /**
       * After each testXXX test runs, shut down the Turbine servlet.
       */
      protected void tearDown() throws Exception
      {
          if (turbine != null)
          {
              turbine.destroy();
          }
          super.tearDown();
      }
  
      /**
       * Simple test that verify that turbine throws an exception 
       * when all parameters are missing, and the default TR.props
       * doesn't exists
       * @throws Exception
       */
      public void offtestCreateTurbineNoParameters() throws Exception
      {
  //System.out.println("Config:" + config.getInitParameter("properties"))
          try
          {
  
              
              turbine.init(config);
              fail(
                  "Should have thrown a javax.servlet.ServletException "
                      + "because the default TR.props doesn't exist!");
          }
          catch (javax.servlet.ServletException se)
          {
              turbine = null;
          }
          assertTrue("Make sure turbine is null", turbine == null);
      }
  
      /**
       * Simple test that verify that turbine can start up with a
       * configuration.xml file
       * @throws Exception
       */
      public void testCreateTurbineWithConfigurationXML() throws Exception
      {
          config.setInitParameter(
              "configuration",
              "WEB-INF/conf/TurbineConfiguration.xml");
  
    
          turbine.init(config);
          assertNotNull("Make sure turbine loaded", turbine);
  
          configuration = turbine.getConfiguration();
          assertTrue("Make sure we have values", !configuration.isEmpty());
          assertEquals(
              "Read a config value",
              "lower",
              configuration.getString("url.case.folding"));
  
          assertEquals(
              "Read in an overridden config value",
              "WEB-INF/conf/specialIntake.xml",
              configuration.getString("services.IntakeService.xml.path"));
      }
  }
  
  
  
  1.1                  
jakarta-turbine-2/src/test-cactus/testapp/WEB-INF/conf/TurbineComplete.properties
  
  Index: TurbineComplete.properties
  ===================================================================
  # -------------------------------------------------------------------
  # $Id: TurbineComplete.properties,v 1.1 2003/06/02 10:24:46 henning Exp $
  #
  # This is the configuration file for Turbine.
  #
  # Note that strings containing "," (comma) characters must backslash
  # escape the comma (i.e. '\,')
  #
  # -------------------------------------------------------------------
  
  # -------------------------------------------------------------------
  #
  #  L O G S
  #
  # -------------------------------------------------------------------
  
  log4j.file = /WEB-INF/conf/Log4j.properties
  
  # -------------------------------------------------------------------
  #
  #  M A I L  S E R V E R
  #
  # -------------------------------------------------------------------
  # Your mail server for outgoing email.
  #
  # Default: null
  # -------------------------------------------------------------------
  
  mail.server=localhost
  
  # -------------------------------------------------------------------
  # SMTP-From header for your outgoing messages
  #
  # All failed delivery messages will be returned to this address.
  # If unset, these messages will be sent to the address in the
  # From header (standard behaviour)
  #
  # Default: null
  # -------------------------------------------------------------------
  
  [EMAIL PROTECTED]
  
  # -------------------------------------------------------------------
  #
  #  M O D U L E  C A C H I N G
  #
  # -------------------------------------------------------------------
  # This determines whether or not to cache the modules in memory.  For
  # development, turn this off.  For production, turn this on.
  #
  # Default: false
  # -------------------------------------------------------------------
  
  module.cache=false
  
  # If module.cache=true, then how large should we make the hashtables
  # by default.
  
  action.cache.size=20
  layout.cache.size=10
  navigation.cache.size=10
  page.cache.size=5
  screen.cache.size=50
  scheduledjob.cache.size=10
  
  # -------------------------------------------------------------------
  #
  #  M O D U L E  P A C K A G E S
  #
  # -------------------------------------------------------------------
  # This is the "classpath" for Turbine.  In order to locate your own
  # modules, you should add them to this path.  For example, if you have
  # com.company.actions, com.company.screens, com.company.navigations,
  # then this setting would be "com.company,org.apache.turbine.modules".
  # This path is searched in order.  For example, Turbine comes with a
  # screen module named "Login".  If you wanted to have your own screen
  # module named "Login", then you would specify the path to your
  # modules before the others.
  #
  # Default: org.apache.turbine.modules
  # -------------------------------------------------------------------
  
  module.packages=com.upstate.turbine.modules,org.apache.turbine.modules
  
  # -------------------------------------------------------------------
  #
  #  F R A M E W O R K  S E T T I N G S
  #
  # -------------------------------------------------------------------
  # These are settings that control the behaviour of the framework,
  # such as determining whether a template system is in use, what
  # the default templates and screens are and session handling settings.
  # -------------------------------------------------------------------
  
  # Used to set the template homepage if you are using a template
  # layout.  This is the template that will be displayed to the user
  # when no specific template is requested.  This is normally executed
  # as the first template the user sees when they access the system.
  #
  # Default: Index.vm
  
  template.homepage=Index.vm
  
  # This is the default screen to show to people when they first access
  # the system.  This is only used if there is no value for
  # template.homepage.  This is for use when you are not using a
  # templating system such as Velocity or JSP.
  #
  # Default: Login
  
  screen.homepage=
  
  # This is the template that is shown on an incorrect login attempt.
  # Setting this property will override any value of screen.login specfied
  # below.
  #
  # Default: Login.vm
  
  template.login=Login.vm
  
  # This is the page that is shown on an incorrect login attempt.  It is
  # referenced in the LoginUser action. This is only used if there is no value
  # for template.login.  This is for use when you are not using a
  # templating system such as Velocity or JSP.
  #
  # Default: Login
  
  screen.login=
  
  # This is the template that is used by the respective Template based
  # ErrorScreen for displaying the error. If you are not using a Template based
  # ErrorScreen, then this is ignored.
  #
  # Default: Error.vm
  
  template.error=Error.vm
  
  # This is the default error screen.
  #
  # Default: VelocityErrorScreen
  
  screen.error=VelocityErrorScreen
  
  # This is the screen that is displayed when the user's web page is in
  # an invalid state.
  #
  # Default: error.InvalidState
  
  screen.invalidstate=error.InvalidState
  
  # Set the default Doctype.  The default Doctype can be set by using
  # the single strings: Html40Strict, Html40Transitional, or
  # Html40Frameset.  Additionally the default can be supplied as two
  # strings separated by a comma giving the DTD and URI.
  #
  # Default: ignored if not set to some value.
  
  default.doctype=Html40Transitional
  
  # This is the default action to log a user in.  If you write your own
  # implementation of the login action, make sure that you change this
  # to reflect the new name.
  
  action.login=LoginUser
  
  # This is the default action to log a user out. If you write your own
  # implementation of the logout action, make sure that you change this
  # to reflect the new name.
  
  action.logout=LogoutUser
  
  # This is the default action to validate whether or not a session is
  # valid.  For example, if you want to make sure if a user has already
  # logged in or not.
  #
  # Default: SessionValidator
  
  action.sessionvalidator=sessionvalidator.TemplateSessionValidator
  
  # This is the timeout in seconds for sessions. If left commented out, the
  # servlet container's default timeout will be left as is.
  
  # session.timeout=1800
  
  # This is the default action that builds up the AccessControlList for
  # the individual users session.
  
  action.accesscontroller=AccessController
  
  # -------------------------------------------------------------------
  #
  #  J N D I  C O N T E X T S
  #
  # -------------------------------------------------------------------
  
  # This indicates whether Turbine should try to create JNDI contexts.
  #
  # Default: false
  #
  # contexts=true
  
  # These are the JNDI context properties.  Each context's properties
  # are defined by the properties beginning with context.name.
  #
  # Default: none
  #
  # Example: The following will create a JNDI context named "name" in
  # the data.contexts Hashtable.  It will point at the RMI registry on
  # localhost running on port 1099, and will use
  # com.sun.jndi.rmi.registry.RegistryContextFactory as the initial
  # context factory:
  #
  # context.name.java.naming.provider.url=rmi://localhost:1099
  # 
context.name.java.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory
  
  # -------------------------------------------------------------------
  #
  #  P E E R S
  #
  # -------------------------------------------------------------------
  # Supplies Turbine with information about the database schema, which
  # can simplify any required Peer classes.
  #
  # Default: org.apache.turbine.util.db.map.TurbineMapBuilder
  # -------------------------------------------------------------------
  
  database.maps.builder=org.apache.turbine.util.db.map.TurbineMapBuilder
  
  # -------------------------------------------------------------------
  #
  #  M E S S A G E S
  #
  # -------------------------------------------------------------------
  # Note that strings containing "," (comma) characters must backslash
  # escape the comma (i.e. '\,')
  
  # The message that can be displayed before a user logs in.
  
  login.message=Thank you for your visit. Please log into the system.
  
  # The message that can be displayed when no screen is defined.
  
  login.message.noscreen=There has been an error. Your session is valid but the screen 
variable is not defined.
  
  # The message that can be displayed when a user enters an incorrect
  # password or username.
  
  login.error=Sorry your username or password is incorrect!
  
  # The message that can be displayed when a user logs out.
  
  logout.message=Thank you for using the system. Please come back soon.
  
  # -------------------------------------------------------------------
  #
  #  S E C U R E  S O C K E T S  L A Y E R
  #
  # -------------------------------------------------------------------
  # Whether the web server is able to use SSL.  Links in Turbine can
  # check this property to determine if SSL can be used.
  #
  # Default: true
  # -------------------------------------------------------------------
  
  use.ssl=true
  
  # -------------------------------------------------------------------
  #
  #  S E R V I C E S
  #
  # -------------------------------------------------------------------
  # Classes for Turbine Services should be defined here.
  # Format: services.[name].classname=[implementing class]
  #
  # To specify properties of a service use the following syntax:
  # service.[name].[property]=[value]
  #
  # The order that these services is listed is important! The
  # order that is stated here is the order in which the services
  # will be initialized. Keep this is mind if you have services
  # that depend on other services during initialization.
  # -------------------------------------------------------------------
  
  
services.CryptoService.classname=org.apache.turbine.services.crypto.TurbineCryptoService
  
services.ComponentService.classname=org.apache.turbine.services.component.TurbineComponentService
  
services.FactoryService.classname=org.apache.turbine.services.factory.TurbineFactoryService
  services.PoolService.classname=org.apache.turbine.services.pool.TurbinePoolService
  
services.RunDataService.classname=org.apache.turbine.services.rundata.TurbineRunDataService
  
services.ServletService.classname=org.apache.turbine.services.servlet.TurbineServletService
  
services.AssemblerBrokerService.classname=org.apache.turbine.services.assemblerbroker.TurbineAssemblerBrokerService
  
services.LocalizationService.classname=org.apache.turbine.services.localization.TurbineLocalizationService
  
services.MimeTypeService.classname=org.apache.turbine.services.mimetype.TurbineMimeTypeService
  
services.GlobalCacheService.classname=org.apache.turbine.services.cache.TurbineGlobalCacheService
  
#services.SchedulerService.classname=org.apache.turbine.services.schedule.TurbineSchedulerService
  
services.UniqueIdService.classname=org.apache.turbine.services.uniqueid.TurbineUniqueIdService
  
services.UploadService.classname=org.apache.turbine.services.upload.TurbineUploadService
  
services.SecurityService.classname=org.apache.turbine.services.security.db.DBSecurityService
  services.PullService.classname=org.apache.turbine.services.pull.TurbinePullService
  
services.TemplateService.classname=org.apache.turbine.services.template.TurbineTemplateService
  
  # Turn on the appropriate template service.
  
services.VelocityService.classname=org.apache.turbine.services.velocity.TurbineVelocityService
  
  
  
  # -------------------------------------------------------------------
  #
  #  R U N   D A T A   S E R V I C E
  #
  # -------------------------------------------------------------------
  # Default implementations of base interfaces for request processing.
  # Additional configurations can be defined by using other keys
  # in the place of the <default> key.
  # -------------------------------------------------------------------
  
  
services.RunDataService.default.run.data=org.apache.turbine.services.rundata.DefaultTurbineRunData
  
services.RunDataService.default.parameter.parser=org.apache.turbine.util.parser.DefaultParameterParser
  
services.RunDataService.default.cookie.parser=org.apache.turbine.util.parser.DefaultCookieParser
  
  # -------------------------------------------------------------------
  #
  #  C A C H E   S E R V I C E
  #
  # -------------------------------------------------------------------
  
  # Interval at which the cache will be checked. The default is
  # 5000ms or 5 seconds.
  
  services.GlobalCacheService.cache.check.frequency = 5000
  
  # -------------------------------------------------------------------
  #
  #  A S S E M B L E R  B R O K E R  S E R V I C E
  #
  # -------------------------------------------------------------------
  # A list of AssemblerFactory classes that will be registered
  # with TurbineAssemblerBrokerService
  # -------------------------------------------------------------------
  
  
services.AssemblerBrokerService.screen=org.apache.turbine.services.assemblerbroker.util.java.JavaScreenFactory
  
services.AssemblerBrokerService.action=org.apache.turbine.services.assemblerbroker.util.java.JavaActionFactory
  
services.AssemblerBrokerService.layout=org.apache.turbine.services.assemblerbroker.util.java.JavaLayoutFactory
  
services.AssemblerBrokerService.page=org.apache.turbine.services.assemblerbroker.util.java.JavaPageFactory
  
services.AssemblerBrokerService.navigation=org.apache.turbine.services.assemblerbroker.util.java.JavaNavigationFactory
  
services.AssemblerBrokerService.scheduledjob=org.apache.turbine.services.assemblerbroker.util.java.JavaScheduledJobFactory
  
  # -------------------------------------------------------------------
  #
  #  T E M P L A T E  S E R V I C E
  #
  # -------------------------------------------------------------------
  
  # Roughly, the number of templates in each category.
  #
  # Defaults: layout=2, navigation=10, screen=50
  
  services.TemplateService.layout.cache.size=2
  services.TemplateService.navigation.cache.size=10
  services.TemplateService.screen.cache.size=50
  
  # -------------------------------------------------------------------
  #
  #  P U L L  S E R V I C E
  #
  # -------------------------------------------------------------------
  # These are the properties for the Pull Service, the service
  # that works in conjuction with the Turbine Pull Model API.
  # -------------------------------------------------------------------
  services.PullService.earlyInit= true
  
  # This determines whether the non-request tools are refreshed
  # on each request (request tools aren't ever, because they're
  # instantiated for the request only anyway).
  services.PullService.tools.per.request.refresh=true
  
  # These are tools that are placed in the context by the service
  # These tools will be made available to all your
  # templates. You list the tools in the following way:
  #
  # tool.<scope>.<id> = <classname>
  #
  # <scope>      is the tool scope: global, request, session
  #              or persistent (see below for more details)
  # <id>         is the name of the tool in the context
  #
  # You can configure the tools in this way:
  # tool.<id>.<parameter> = <value>
  #
  # So if you find "global", "request", "session" or "persistent" as second
  # part, it is a configuration to put a tool into the toolbox, else it is a
  # tool specific configuration.
  #
  # For example:
  #
  # tool.global.ui    = org.apache.turbine.util.pull.UIManager
  # tool.global.mm    = org.apache.turbine.util.pull.MessageManager
  # tool.request.link = org.apache.turbine.services.pull.tools.TemplateLink
  # tool.request.page = org.apache.turbine.util.template.TemplatePageAttributes
  #
  # Then:
  #
  # tool.ui.skin = default
  #
  # configures the value of "skin" for the "ui" tool.
  #
  # Tools are accessible in all templates by the <id> given
  # to the tool. So for the above listings the UIManager would
  # be available as $ui, the MessageManager as $mm, the TemplateLink
  # as $link and the TemplatePageAttributes as $page.
  #
  # You should avoid using tool names called "global", "request",
  # "session" or "persistent" because of clashes with the possible Scopes.
  #
  # Scopes:
  #
  #   global:     tool is instantiated once and that instance is available
  #               to all templates for all requests. Tool must be threadsafe.
  #
  #   request:    tool is instantiated once for each request (although the
  #               PoolService is used to recycle instances). Tool need not
  #               be threadsafe.
  #
  #   session:    tool is instantiated once for each user session, and is
  #               stored in the user's temporary hashtable. Tool should be
  #               threadsafe.
  #
  #   persistent: tool is instantitated once for each use session, and
  #               is stored in the user's permanent hashtable. This means
  #               for a logged in user the tool will be persisted in the
  #               user's objectdata. Tool should be threadsafe and
  #               Serializable.
  #
  # Defaults: none
  
  tool.request.link=org.apache.turbine.service.pull.tools.TemplateLink
  tool.request.page=org.apache.turbine.util.template.HtmlPageAttributes
  tool.request.content=org.apache.turbine.service.pull.tools.ContentTool
  #tool.request.l10n=org.apache.turbine.services.localization.LocalizationTool
  
  
  # -------------------------------------------------------------------
  #
  #  V E L O C I T Y  S E R V I C E
  #
  # -------------------------------------------------------------------
  services.VelocityService.earlyInit= true
  
  # The location of Velocity configuration file, relative to webapp root
  # These properties will override the default properties set by Velocity.
  # You should specify the path to the templates directories as well as
  # the path to the log file and they should also be relative to webapp root
  
  services.VelocityService.template.extension=vm
  services.VelocityService.default.page = VelocityPage
  services.VelocityService.default.screen=DefaultScreen
  services.VelocityService.default.layout = VelocityECSLayout
  services.VelocityService.default.navigation=VelocityNavigation
  services.VelocityService.default.error.screen = VelocityErrorScreen
  services.VelocityService.default.layout.template = /Default.vm
  
  services.VelocityService.runtime.log=/logs/velocity.log
  #services.VelocityService.input.encoding=UTF-8
  services.VelocityService.velocimacro.library = GlobalMacros.vm
  
  services.VelocityService.resource.loader = file
  services.VelocityService.file.resource.loader.description = Velocity File Resource 
Loader
  services.VelocityService.file.resource.loader.class = 
org.apache.velocity.runtime.resource.loader.FileResourceLoader
  services.VelocityService.file.resource.loader.path = /templates/app
  services.VelocityService.file.resource.loader.cache = true
  services.VelocityService.file.resource.loader.modificationCheckInterval = 2
  
  services.VelocityService.resource.loader = classpath
  services.VelocityService.classpath.resource.loader.description = Velocity Classpath 
Resource Loader
  services.VelocityService.classpath.resource.loader.class = 
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
  
  # -------------------------------------------------------------------
  #
  #  J S P  S E R V I C E
  #
  # -------------------------------------------------------------------
  
  services.JspService.template.extension=jsp
  services.JspService.default.page = JspPage
  services.JspService.default.screen=BaseJspScreen
  services.JspService.default.layout = JspLayout
  services.JspService.default.navigation=BaseJspNavigation
  services.JspService.default.error.screen = JspErrorScreen
  services.JspService.default.layout.template = Default.jsp
  
  services.JspService.templates = /templates/app
  services.JspService.buffer.size = 8192
  
  # -------------------------------------------------------------------
  #
  #  U P L O A D  S E R V I C E
  #
  # -------------------------------------------------------------------
  
  # Whether the files should be automatically picked up by
  # ParameterParser.
  
  services.UploadService.automatic=true
  
  #
  # The directory where files will be temporarily stored.
  #
  services.UploadService.repository=.
  
  #
  # The maximum size of a request that will be processed.
  #
  services.UploadService.size.max=1048576
  
  #
  # The maximum size of a request that will have it's elements cached in
  # memory by TurbineUploadService class.
  #
  services.UploadService.size.threshold=10240
  
  # -------------------------------------------------------------------
  #
  #  L O C A L I Z A T I O N  S E R V I C E
  #
  # -------------------------------------------------------------------
  
  # Default ResourceBundle and language/country codes used by the
  # TurbineLocalizationService.
  #
  locale.default.bundle=MyBundle
  locale.default.language=en
  locale.default.country=US
  
  #
  # This will set the charset= portion of the ContentType: header.
  # Leave commented out unless you want to return stuff as a different
  # charset.
  #
  # locale.default.charset=
  
  # -------------------------------------------------------------------
  #
  #  M I M E T Y P E  S E R V I C E
  #
  # -------------------------------------------------------------------
  
  # This property specifies a file containing mappings between MIME
  # content types and the corresponding file name extensions. The
  # service itself contains a hardcoded set of most common mappings.
  # The file must use the same syntax as the mime.types file of
  # the Apache Server, i.e.
  # <mimetype> <ext1> <ext2>...
  #
  #services.MimeTypeService.mime.types=/WEB-INF/conf/mime.types
  
  # This property specifies a file containing mappings between locales
  # and the corresponding character encodings. The service itself
  # contains a hardcoded set of most common mappings.
  # The file should use the Java property file syntax, i.e.
  # <lang_country_variant>=<charset>
  #
  #services.MimeTypeService.charsets=/WEB-INF/conf/charset.properties
  
  # -------------------------------------------------------------------
  #
  #  S C H E D U L E R  S E R V I C E
  #
  # -------------------------------------------------------------------
  
  #
  # Set enabled to true to start the scheduler.  The scheduler can be
  # stopped and started after Turbine has been intialized.  See the
  # javadocs for org.apache.turbine.services.schedule.TurbineScheduler
  # for the methods calls.
  #
  # Default = false
  #
  
  services.SchedulerService.enabled=false
  
  # Determines if the scheduler service should be initialized early.  This
  # Should always be set to true!!!!
  
  services.SchedulerService.earlyInit=true
  
  # -------------------------------------------------------------------
  #
  #  C R Y P T O   S E R V I C E
  #
  # -------------------------------------------------------------------
  
  #
  # Standard Unix crypt(3) password encryption.
  #
  services.CryptoService.algorithm.unix  = 
org.apache.turbine.services.crypto.provider.UnixCrypt
  #
  # This providers allows access to the Java Message Digest encryption algorithms
  #
  services.CryptoService.algorithm.java  = 
org.apache.turbine.services.crypto.provider.JavaCrypt
  #
  # This is a simple, cleartext "encryption" provider.
  #
  services.CryptoService.algorithm.cleartext  = 
org.apache.turbine.services.crypto.provider.ClearCrypt
  #
  # Use this provider if you upgrade from Turbine 2.1 to current. It provides 
bug-to-bug
  # compatibility for passwords created with the old Security Service. See the 
javadocs for
  # OldJavaCrypt
  #
  services.CryptoService.algorithm.oldjava  = 
org.apache.turbine.services.crypto.provider.OldJavaCrypt
  #
  # This is the default crypto provider. It implements the normal Java MessageDigest 
ciphers
  # You need not to have this, it is the default if no algorithms are given. The 
default
  # provider gives you all the Java MessageDigest Ciphers
  #
  services.CryptoService.algorithm.default  = 
org.apache.turbine.services.crypto.provider.JavaCrypt
  # -------------------------------------------------------------------
  #
  #  S E C U R I T Y  S E R V I C E
  #
  # -------------------------------------------------------------------
  
  #
  # This is the class that implements the UserManager interface to
  # manage User objects. Default is the UserManager from the
  # DBSecurityService.
  # Override this setting if you want your User information stored
  # on a different medium (LDAP directory is a good example).
  #
  # Adjust this setting if you change the Setting of the SecurityService class (see 
above).
  
  # Default: org.apache.turbine.services.security.db.DBUserManager
  services.SecurityService.user.manager = 
org.apache.turbine.services.security.db.DBUserManager
  
  #
  # These are the default classes used by the Security Service to
  # provide User, Group, Role and Permission objects.
  # You want to override this setting only if you want your
  # implementation to provide application specific addtional
  # functionality.
  #
  # For LDAP use:
  # 
services.SecurityService.user.class=org.apache.turbine.services.security.ldap.LDAPUser
  # LDAP does not yet provide custom Group, User and Role objects so you
  # must use it with the default TurbineGroup, TurbineRole and
  # TurbinePermission objects.
  #
  # Class for User. Default: org.apache.turbine.om.security.TurbineUser
  services.SecurityService.user.class=org.apache.turbine.om.security.TurbineUser
  # Class for Group. Default: org.apache.turbine.om.security.TurbineGroup
  services.SecurityService.group.class=org.apache.turbine.om.security.TurbineGroup
  # Class for Role. Default: org.apache.turbine.om.security.TurbineRole
  services.SecurityService.role.class=org.apache.turbine.om.security.TurbineRole
  # Class for Permission. Default: org.apache.turbine.om.security.TurbinePermission
  
services.SecurityService.permission.class=org.apache.turbine.om.security.TurbinePermission
  
  #
  # This is the class that implements the ACL interface.
  # You want to override this setting only if you want your ACL
  # implementation to provide application specific addtional
  # functionality.
  #
  
  # Default: org.apache.turbine.util.security.TurbineAccessControlList
  services.SecurityService.acl.class = 
org.apache.turbine.util.security.TurbineAccessControlList
  
  #
  # This setting is DBSecurityService specific - this class is consulted for the names
  # of the columns in the users' tables for the purpose of creating join queries.
  # If you use your own User implementation in conjunction with DBSecurityService,
  # it's peer class must implement org.apache.turbine.om.security.peer.UserPeer 
interface,
  # and you need to specify the name of the peer class here.
  #
  # Default: org.apache.turbine.om.security.peer.TurbineUserPeer
  #
  
services.SecurityService.userPeer.class=org.apache.turbine.om.security.peer.TurbineUserPeer
  
  #
  # This is used by the SecurityService to make the password checking
  # secure. When enabled, passwords are transformed by a one-way
  # function into a sequence of bytes that is base64 encoded.
  # It is impossible to guess the plain-text form of the password
  # from the representation. When user logs in, the entered password
  # is transformed the same way and then compared with stored value.
  #
  # Default: false
  #
  
  services.SecurityService.secure.passwords=false
  
  #
  # This property lets you choose what digest algorithm will be used
  # for encrypting passwords. Check documentation of your JRE for
  # available algorithms.
  #
  # Default: SHA
  #
  
  services.SecurityService.secure.passwords.algorithm=SHA
  
  # Configuration for the LDAP Security Service implementation
  
  #services.SecurityService.ldap.security.athentication=simple
  #services.SecurityService.ldap.port=<LDAP PORT>
  #services.SecurityService.ldap.host=<LDAP HOST>
  #services.SecurityService.ldap.admin.username=<ADMIN USERNAME>
  #services.SecurityService.ldap.admin.password=<ADMIN PASSWORD>
  #services.SecurityService.ldap.user.basesearch=<SEARCH PATTERN>
  #services.SecurityService.ldap.user.search.filter=<SEARCH FILTER>
  #services.SecurityService.ldap.dn.attribute=userPrincipalName
  #services.SecurityService.ldap.provider=com.sun.jndi.ldap.LdapCtxFactory
  
  #
  # This property specifies the type of security authentication
  #
  # Default: simple
  #
  
  # services.SecurityService.ldap.security.authentication=simple
  
  #
  # The host name where the LDAP server is listenting.
  #
  # Default: localhost
  #
  
  # services.SecurityService.ldap.host=localhost
  
  #
  # The port number where the LDAP server is listenting.
  #
  # Default: 389
  #
  
  # services.SecurityService.ldap.port=389
  
  #
  # The user name of the admin user. The admin user should be able to
  # read from the LDAP repository.
  # Characteres '/' are replaced by '=' and '%' are replaced by ','.
  #
  # Default: none
  #
  
  # 
services.SecurityService.ldap.admin.username=turbineUserUniqueId/turbine%dc/example%dc/com
  
  #
  # The password of the admin user.
  #
  # Default: none
  #
  
  # services.SecurityService.ldap.admin.password=turbine
  
  #
  # The class name of the ldap provider.
  #
  # Default: com.sun.jndi.ldap.LdapCtxFactory
  #
  
  # services.SecurityService.ldap.provider=com.sun.jndi.ldap.LdapCtxFactory
  
  #
  # The directory base to search.
  # '/' are replaced by '=' and '%' are replaced by ','.
  #
  # Default: none
  #
  
  # services.SecurityService.ldap.basesearch=dc/example%dc/com
  
  #
  # The unique id. It must be an integer field and it is required only when
  # the users are in LDAP but the groups, roles and permissions are in the
  # Database.
  #
  # services.SecurityService.ldap.user.userid=
  
  #
  # This property maps the username with an attribute in LDAP.
  #
  # Default: turbineUserUniqueId
  #
  
  # services.SecurityService.ldap.user.username=turbineUserUniqueId
  
  #
  # This property maps the firstname with an attribute in LDAP.
  #
  # Default: turbineUserFirstName
  #
  
  # services.SecurityService.ldap.user.firstname=turbineUserFirstName
  
  #
  # This property maps the lastname with an attribute in LDAP.
  #
  # Default: turbineUserLastName
  #
  
  # services.SecurityService.ldap.user.lastname=turbineUserLastName
  
  #
  # This property maps the email with an attribute in LDAP.
  #
  # Default: turbineUserMailAddress
  #
  
  # services.SecurityService.ldap.user.email=turbineUserMailAddress
  
  #
  # This property maps the userPassword with an attribute in LDAP.
  #
  # Default: none
  #
  
  # services.SecurityService.ldap.user.password=userPassword
  
  
  # -------------------------------------------------------------------
  #
  #  X M L R P C  S E R V I C E
  #
  # -------------------------------------------------------------------
  # This property specifies which class should be used to parse
  # xml for XmlRpc functionality.
  #
  # Default: org.apache.xerces.parsers.SAXParser
  
  services.XmlRpcService.parser=org.apache.xerces.parsers.SAXParser
  
  # This property specifies which network interface the server part of
  # XmlRpc should bind to (if it is active).  If not specified, the
  # server will bind to all addresses configured for your host.
  #
  # Default: 127.0.0.1
  
  #services.XmlRpcService.address=127.0.0.1
  
  # This property specifies which TCP port the web server part of
  # XmlRpc should listen on (if it is active).
  #
  # Default: 12345
  
  services.XmlRpcService.port=12345
  
  # If any classes are specified here, the Service will create an
  # instance of them here and start up a listener on the specified
  # port.
  #
  # Note that the handlers demonstrated are not very useful.  You
  # will have to invent your own services.  They do however
  # illustrate that any class with a default constructor can be
  # added here
  #
  # The handler parameter without further extension determines
  # the default handler for the service
  #
  # Default: no classes are specified by default
  
  #services.XmlRpcService.handler.$default=java.util.Hashtable
  #services.XmlRpcService.handler.stringhandler=java.lang.String
  
  # The following properties allow the transfer of data between
  # separate Turbine applications running on different servers.
  # This allows B2B type behavior such as sending database
  # updates in the form of XML or whatever type of data
  # that needs to be shared between Turbine applications
  # running on separate servers.
  
  services.XmlRpcService.handler.file = 
org.apache.turbine.services.xmlrpc.util.FileHandler
  services.XmlRpcService.paranoid = false
  services.XmlRpcService.acceptClient = 192.168.1.*
  services.XmlRpcService.denyClient =
  
  # Do we want a secure server
  
  services.XmlRpcService.secure.server = false
  
  # Secure server options
  
  services.XmlRpcService.secure.server.option.java.protocol.handler.pkgs = \
      com.sun.net.ssl.internal.www.protocol
  
  services.XmlRpcService.secure.server.option.security.provider = \
      com.sun.net.ssl.internal.ssl.Provider
  
  services.XmlRpcService.secure.server.option.security.protocol = TLS
  
  # You probably want to keep your key stores and trust stores
  # clear out of your webapp.
  
  services.XmlRpcService.secure.server.option.javax.net.ssl.keyStore = /tmp/keystore
  services.XmlRpcService.secure.server.option.javax.net.ssl.keyStoreType = jks
  services.XmlRpcService.secure.server.option.javax.net.ssl.keyStorePassword = password
  services.XmlRpcService.secure.server.option.javax.net.ssl.trustStore = 
/tmp/truststore
  services.XmlRpcService.secure.server.option.javax.net.ssl.trustStoreType = jks
  services.XmlRpcService.secure.server.option.javax.net.ssl.trustStorePassword = 
password
  
  services.XmlRpcService.secure.server.option.sun.ssl.keymanager.type = SunX509
  services.XmlRpcService.secure.server.option.sun.ssl.trust.manager.type = SunX509
  
  # These values should be set to 'all' for debugging purposes.
  
  services.XmlRpcService.secure.server.option.javax.net.debug = none
  services.XmlRpcService.secure.server.option.java.security.debug = none
  
  # -------------------------------------------------------------------
  #
  #  P O O L  S E R V I C E
  #
  # -------------------------------------------------------------------
  
  # Default capacity of pools of the Object pooling service.
  #
  # Default: 128
  services.PoolService.pool.capacity = 128
  
  # Class specific capacities used instead of the default if specified.
  #
  
#services.PoolService.pool.capacity.org.apache.turbine.services.rundata.DefaultTurbineRunData=512
  
  # -------------------------------------------------------------------
  #
  #  F A C T O R Y  S E R V I C E
  #
  # -------------------------------------------------------------------
  
  # A comma separated list of classloaders (very optional)
  #
  # Example: org.foo.bar.MyClassLoader, org.ack.joe.YourClassLoader
  #
  #services.FactoryService.class.loaders=
  
  # Customized factories to be used instead of the default factory.
  # E.g. to instantiate XML parsers, SSL sockets, etc., which require
  # specific instantiation not supported by the default factory.
  # The property name is prefixed with "factory" followed by the
  # name of the production class. The value is the class name of
  # the factory implementing the Factory interface. The factory
  # will be instantiated by using the service itself.
  #
  # Examples:
  #
  # 
services.FactoryService.factory.javax.xml.parsers.DocumentBuilder=org.foo.xml.DomBuilderFactory
  # 
services.FactoryService.factory.javax.xml.parsers.SAXParser=org.foo.xml.SaxParserFactory
  # 
services.FactoryService.factory.java.net.ServerSocket=org.foo.net.SslServerSocketFactory
  
  #--------------------------------------------------------------------
  #
  # X S L T  S E R V I C E
  #
  #--------------------------------------------------------------------
  
  services.XSLTService.path = /path/to/stylesheets
  services.XSLTService.cache = false
  
  # -------------------------------------------------------------------
  #
  #  I N T A K E   S E R V I C E
  #
  # -------------------------------------------------------------------
  
  # The location of the xml file specifying valid inputs
  #
  # If you need to define multiple definition files, you can should
  # seperate them with commas.
  #
  # Default: WEB-INF/conf/intake.xml
  #
  services.IntakeService.xml.path=WEB-INF/conf/intake.xml
  
  # This file is used to cache the XML definitions after they are
  # parsed.  It provides for a small performance gain on startup.
  #
  # Note: Even if you have multiple XML definition files, you will
  # only need one serialization file!
  #
  # Default: WEB-INF/appData.ser
  #
  services.IntakeService.serialize.path=WEB-INF/appData.ser
  
  #--------------------------------------------------------------------
  #
  # P A R A M E T E R  P A R S E R
  #
  #--------------------------------------------------------------------
  #
  # This variable controls the case folding applied to URL variable
  # names.
  #
  # Allowed values: none, lower, upper
  # Default: lower
  #
  
  url.case.folding=lower
  
  
  
  # -------------------------------------------------------------------
  #
  #  A D D I T I O N A L  P R O P E R T I E S
  #
  # -------------------------------------------------------------------
  # The full path name to an additional properties file. Properties in
  # this file will be included in this property set. Duplicate name
  # values will be replaced, so be careful.
  #
  # Default: none
  # -------------------------------------------------------------------
  
  
  
  
  
  
  1.1                  
jakarta-turbine-2/src/test-cactus/testapp/WEB-INF/conf/TurbineConfiguration.xml
  
  Index: TurbineConfiguration.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1" ?>
  
  <configuration>
    <dom4j className="org.apache.commons.configuration.DOM4JConfiguration" 
fileName="/WEB-INF/conf/TurbineResources.xml"/>
    <properties className="org.apache.commons.configuration.PropertiesConfiguration" 
fileName="/WEB-INF/conf/TurbineComplete.properties"/>
  </configuration>
  
    
    
  
  
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to