<?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>