<?xml version='1.0' encoding='UTF-8'?>
<!--

    Copyright (c) 2004, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

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


<web-app>

    <display-name>JavaServer Faces Custom Components</display-name>
    <description>
        JavaServer Faces Custom Components
    </description>

    <context-param>
        <param-name>jakarta.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>

    <context-param>
        <param-name>tree.control.images</param-name>
        <param-value>/images</param-value>
    </context-param>

    <context-param>
        <param-name>com.sun.faces.validateXml</param-name>
        <param-value>true</param-value>
        <description>
            Set this flag to true if you want the JavaServer Faces
            Reference Implementation to validate the XML in your
            faces-config.xml resources against the DTD.  Default
            value is false.
        </description>
    </context-param>

    <!--
         PENDING:  MapComponent and GraphComponent currently add
         a default listener in their constructor, which can only
         succeed if there is a FacesContext for the current request.
    -->
    <context-param>
        <param-name>com.sun.faces.verifyObjects</param-name>
        <param-value>false</param-value>
        <description>
            Set this flag to true if you want the JavaServer Faces
            Reference Implementation to verify that all of the application
            objects you have configured (components, converters,
            renderers, and validators) can be successfully created.
            Default value is false.
        </description>
    </context-param>

    <!-- Faces Servlet -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup> 1 </load-on-startup>
    </servlet>

    <!-- Chart Servlet -->
    <servlet>
        <servlet-name>ChartServlet</servlet-name>
        <servlet-class>components.renderkit.ChartServlet</servlet-class>
    </servlet>


    <!-- Faces Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

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




    <!-- Welcome File List -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <security-constraint>
        <!-- This security constraint illustrates how JSP pages
             with JavaServer Faces components can be protected from
             being accessed without going through the Faces Servlet.
             The security constraint ensures that the Faces Servlet will
             be used or the pages will not be processed. -->
        <display-name>Restrict access to JSP pages</display-name>
        <web-resource-collection>
            <web-resource-name>
                Restrict access to JSP pages
            </web-resource-name>
            <url-pattern>/imagemap.jsp</url-pattern>
            <url-pattern>/menu.jsp</url-pattern>
            <url-pattern>/repeater.jsp</url-pattern>
            <url-pattern>/result-set.jsp</url-pattern>
            <url-pattern>/tabbedpanes.jsp</url-pattern>
        </web-resource-collection>
        <auth-constraint>
                <description>
                    With no roles defined, no access granted
                </description>
        </auth-constraint>
    </security-constraint>

</web-app>
