<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	version="2.4">

	<servlet>
		<servlet-name>tester</servlet-name>
		<servlet-class>freemarker.test.servlet.Model2TesterServlet</servlet-class>
	</servlet>

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

	<servlet>
		<servlet-name>freemarker</servlet-name>
		<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>

		<!-- FreemarkerServlet settings: -->
		<init-param>
			<param-name>TemplatePath</param-name>
			<param-value>/</param-value>
		</init-param>
		<init-param>
			<param-name>NoCache</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>ContentType</param-name>
			<param-value>text/html; charset=UTF-8</param-value> <!-- Forces UTF-8 output encoding! -->
		</init-param>
        <init-param>
            <param-name>BufferSize</param-name>
            <param-value>128 KB</param-value>
        </init-param>

		<!-- FreeMarker settings: -->
		<init-param>
			<param-name>incompatible_improvements</param-name>
			<param-value>2.3.22</param-value>
            <!-- Recommended to set to a high value. For the details, see the Java API docs of
                 freemarker.template.Configuration#Configuration(Version). -->
		</init-param>
		<init-param>
			<param-name>template_exception_handler</param-name>
			<!-- Some may prefer "html_debug" for development. -->
			<param-value>rethrow</param-value>
		</init-param>
		<init-param>
			<param-name>template_update_delay</param-name>
			<param-value>0</param-value> <!-- 0 is for development only! Use higher value otherwise. -->
		</init-param>
		<init-param>
			<param-name>default_encoding</param-name>
			<param-value>UTF-8</param-value> <!-- The encoding of the template files. -->
		</init-param>
        <init-param>
            <param-name>locale</param-name>
            <param-value>en_US</param-value>
        </init-param>
		<init-param>
			<param-name>number_format</param-name>
			<param-value>0.##########</param-value>
		</init-param>

		<load-on-startup>1</load-on-startup>
	</servlet>

    <servlet>
        <servlet-name>freemarker-2.3.0</servlet-name>
        <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
        
        <!-- Specific parts: -->
        <init-param>
            <param-name>incompatible_improvements</param-name>
            <param-value>2.3.0</param-value>
        </init-param>
        
        <!-- Common parts: -->
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>/</param-value>
        </init-param>
        <init-param>
            <param-name>locale</param-name>
            <param-value>en_US</param-value>
        </init-param>
        <init-param>
            <param-name>default_encoding</param-name>
            <param-value>UTF-8</param-value> <!-- The encoding of the template files. -->
        </init-param>
        <init-param>
            <param-name>template_exception_handler</param-name>
            <!-- Some may prefer "html_debug" for development. -->
            <param-value>rethrow</param-value>
        </init-param>
    </servlet>

    <servlet>
        <servlet-name>freemarker-2.3.22-future</servlet-name>
        <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
        
        <!-- Specific parts: -->
        <init-param>
            <param-name>incompatible_improvements</param-name>
            <param-value>2.3.22</param-value>
        </init-param>
        <init-param>
            <param-name>object_wrapper</param-name>
            <param-value>DefaultObjectWrapper(2.3.22, forceLegacyNonListCollections=false)</param-value>
        </init-param>
        
        <!-- Common parts: -->
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>/</param-value>
        </init-param>
        <init-param>
            <param-name>locale</param-name>
            <param-value>en_US</param-value>
        </init-param>
        <init-param>
            <param-name>default_encoding</param-name>
            <param-value>UTF-8</param-value> <!-- The encoding of the template files. -->
        </init-param>
        <init-param>
            <param-name>template_exception_handler</param-name>
            <!-- Some may prefer "html_debug" for development. -->
            <param-value>rethrow</param-value>
        </init-param>
    </servlet>

	<servlet-mapping>
		<servlet-name>freemarker</servlet-name>
		<url-pattern>*.ftl</url-pattern>
	</servlet-mapping>

    <!-- Prevent the visiting of MVC Views from outside the servlet container. 
        RequestDispatcher.forward/include should and will still work. Removing this 
        may open security holes! -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>FreeMarker MVC Views</web-resource-name>
            <url-pattern>*.ftl</url-pattern>
            <url-pattern>*.jsp</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <!-- Nobody is allowed to visit these -->
        </auth-constraint>
    </security-constraint>

</web-app>