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

    <!-- Must use a webapp-local class for "class:", otherwise it won't find local resources. -->
    <servlet>
        <servlet-name>freemarker-class-root</servlet-name>
        <servlet-class>webapps.cfg.WebappLocalFreemarkerServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>class://</param-value>
        </init-param>
    </servlet>
    <servlet>
        <servlet-name>freemarker-class-sub</servlet-name>
        <servlet-class>webapps.cfg.WebappLocalFreemarkerServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>class://sub</param-value>
        </init-param>
    </servlet>

    <!-- No need to use webapp-local class for "classpath:" -->
    <servlet>
        <servlet-name>freemarker-classpath-root</servlet-name>
        <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>classpath:/</param-value>
        </init-param>
    </servlet>
	<servlet>
		<servlet-name>freemarker-classpath-sub</servlet-name>
		<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>classpath:sub</param-value>
        </init-param>
	</servlet>

    <servlet>
        <servlet-name>freemarker-webinfPerTemplates</servlet-name>
        <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>WEB-INF/templates</param-value>
        </init-param>
    </servlet>
    <servlet>
        <servlet-name>freemarker-contentRoot</servlet-name>
        <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value></param-value>
        </init-param>
    </servlet>

    <servlet>
        <servlet-name>freemarker-assertDefaultsFreemarkerServlet</servlet-name>
        <servlet-class>freemarker.ext.jsp.RealServletContainertTest$AssertDefaultsFreemarkerServlet</servlet-class>
        <init-param>
            <param-name>incompatible_improvements</param-name>
            <param-value>2.3.22</param-value>
        </init-param>
    </servlet>
    <servlet>
        <servlet-name>freemarker-assertDefaultsIcI2322FreemarkerServlet</servlet-name>
        <servlet-class>freemarker.ext.jsp.RealServletContainertTest$AssertDefaultsIcI2322FreemarkerServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>freemarker-assertCustomizedDefaultsFreemarkerServlet</servlet-name>
        <servlet-class>freemarker.ext.jsp.RealServletContainertTest$AssertCustomizedDefaultsFreemarkerServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>freemarker-assertObjectWrapperDefaults1FreemarkerServlet</servlet-name>
        <servlet-class>freemarker.ext.jsp.RealServletContainertTest$AssertObjectWrapperDefaults1FreemarkerServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>freemarker-assertObjectWrapperDefaults2FreemarkerServlet</servlet-name>
        <servlet-class>freemarker.ext.jsp.RealServletContainertTest$AssertObjectWrapperDefaults2FreemarkerServlet</servlet-class>
    </servlet>

</web-app>