<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<!--********************************************************************************
 * CruiseControl, a Continuous Integration Toolkit
 * Copyright (c) 2001, ThoughtWorks, Inc.
 * 651 W Washington Ave. Suite 600
 * Chicago, IL 60661 USA
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *     + Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *
 *     + 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.
 *
 *     + Neither the name of ThoughtWorks, Inc., CruiseControl, nor the
 *       names of its contributors may be used to endorse or promote
 *       products derived from this software without specific prior
 *       written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS 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 REGENTS OR
 * 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.
 ********************************************************************************-->
<web-app>
    <display-name>groovy CruiseControl Reporting App</display-name>
    <description>The reporting application for CruiseControl. Provides a simple but rich
        interface for viewing CruiseControl build reports.
    </description>

    <context-param>
        <param-name>singleProject</param-name>
        <param-value>true</param-value>
        <description>Indicates if the CruiseControl instance is to report on only one project.
            If it is, then you should set this to true.
        </description>
    </context-param>

    <context-param>
      <!-- You can set this value via the user.log.dir property in Ant, when building the WAR file. -->
      <param-name>logDir</param-name>
      <param-value>/opt/groovy/cruisecontrol/logs/</param-value>
      <description> This should be the full path to your CruiseControl log directory. If you
          are in single project mode, this will contain only the logs for your project. If you
          are in multi-project mode, it is expected that you will have multiple sub-directories
          inside this log directory, one for each project.
      </description>
    </context-param>

    <context-param>
      <!-- You can set this value via the user.build.status.file property in Ant, when building the WAR file. -->
      <param-name>currentBuildStatusFile</param-name>
      <param-value>status.txt</param-value>
      <description>This should be the path to your current build status file, which is relative
          to the log directory (or, in single-project mode, relative to the project's log
          directory)
      </description>
    </context-param>

    <servlet>
      <servlet-name>buildresults</servlet-name>
      <display-name>Build Result Reporter</display-name>
      <description>Presents build results in a human-readable and intuitive format.</description>
      <jsp-file>/main.jsp</jsp-file>
    </servlet>

    <servlet>
        <servlet-name>index</servlet-name>
        <display-name>Index/Summary page</display-name>
        <description>Presents a summary of all projects, allowing easy navigation to each.</description>
        <jsp-file>/index.jsp</jsp-file>
    </servlet>

    <servlet>
        <servlet-name>ArtifactServlet</servlet-name>
        <servlet-class>net.sourceforge.cruisecontrol.servlet.FileServlet</servlet-class>
        <init-param>
            <param-name>rootDir</param-name>
            <param-value>/opt/groovy/cruisecontrol/artifacts/</param-value>
        </init-param>
    </servlet>

    <servlet>
        <servlet-name>LogServlet</servlet-name>
        <servlet-class>net.sourceforge.cruisecontrol.servlet.FileServlet</servlet-class>
    </servlet>

    <!-- Used for charting... -->
    <servlet>
        <servlet-name>CewolfServlet</servlet-name>
        <servlet-class>de.laures.cewolf.CewolfRenderer</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>CewolfServlet</servlet-name>
        <url-pattern>/cewolf/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>LogServlet</servlet-name>
        <url-pattern>/logs/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>ArtifactServlet</servlet-name>
        <url-pattern>/artifacts/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
      <servlet-name>buildresults</servlet-name>
      <!-- Strictly speaking, this should be /buildresults for single-project mode. But it works anyway. -->
      <url-pattern>/buildresults/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>index</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
    	<welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
