<!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/checkout/dist/</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>
