<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!-- Set the standard (filesystem) extension of your templates -->
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>

    <!-- Disable JSF 2.0 Facelets -->
    <context-param>
        <param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name>
        <param-value>true</param-value>
    </context-param>

    
    <!-- Facelets libraries that are not loaded through the classloader -->
    <context-param>
        <param-name>facelets.LIBRARIES</param-name>
        <param-value>/WEB-INF/cms.taglib.xml</param-value>
    </context-param>
    <context-param>
        <param-name>facelets.RESOURCE_RESOLVER</param-name>
        <param-value>com.flexive.cms.war.facelets.CmsResourceResolver</param-value>
    </context-param>
    <!--
        Facelets refresh period in seconds (-1 to disable automatic refresh of facelets pages).
     -->
    <context-param>
        <param-name>facelets.REFRESH_PERIOD</param-name>
        <param-value>2</param-value>
    </context-param>

    <!-- Prevent session fixation attacks for login screen -->
    <filter>
        <filter-name>SessionFixationFilter</filter-name>
        <filter-class>com.flexive.war.filter.SessionFixationFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>SessionFixationFilter</filter-name>
        <url-pattern>/admin/login.xhtml</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>SessionFixationFilter</filter-name>
        <url-pattern>/admin/login.html</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>SessionFixationFilter</filter-name>
        <url-pattern>/admin/login.jsf</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>SessionFixationFilter</filter-name>
        <url-pattern>/admin/login.faces</url-pattern>
    </filter-mapping>


    <!-- Error handling filter -->
    <filter>
        <filter-name>CmsExceptionFilter</filter-name>
        <filter-class>com.flexive.cms.war.filters.CmsExceptionFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CmsExceptionFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    <!-- Error handling filter -->
    <filter>
        <filter-name>CmsCacheHeadersFilter</filter-name>
        <filter-class>com.flexive.cms.war.filters.CmsPageHeadersFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CmsCacheHeadersFilter</filter-name>
        <url-pattern>*.xhtml</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    <filter>
        <display-name>RichFaces Filter</display-name>
        <filter-name>richfaces</filter-name>
        <filter-class>org.ajax4jsf.Filter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>richfaces</filter-name>
        <url-pattern>/__edit/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    <!-- Configure FxFilter -->
    <filter>
        <filter-name>FxFilter</filter-name>
        <filter-class>com.flexive.war.filter.FxFilter</filter-class>
    </filter>
    <!-- Configure FxFilter -->
    <filter-mapping>
        <filter-name>FxFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    <filter>
        <filter-name>CmsFilter</filter-name>
        <filter-class>com.flexive.cms.war.filters.CmsTemplateFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CmsFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    <!-- Configure MyFaces extension filter -->
    <filter>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
        <init-param>
            <param-name>maxFileSize</param-name>
            <param-value>100m</param-value>
        </init-param>
        <init-param>
            <param-name>uploadThresholdSize</param-name>
            <param-value>512k</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
    </filter-mapping>
    <!-- Configure URL Rewrite filter -->
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>com.flexive.cms.war.filters.CmsUrlRewriteFilter</filter-class>

        <!-- set the amount of seconds the conf file will be checked for reload
        can be a valid integer (0 denotes check every time,
        -1 denotes no reload check, default -1) -->
        <init-param>
            <param-name>confReloadCheckInterval</param-name>
            <param-value>10</param-value>
        </init-param>
        
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <!-- don't map to INCLUDE/FORWARD or endless recursion will result for the current rewrite rules.
            Also, the request-scoped PageBean probably wouldn't work with INCLUDE
            anyway.
        -->
    </filter-mapping>
    <!-- Configure Faces servlet -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    <!--
        /faces/* (or another suffix pattern) should always be the last url-pattern for the FacesServlet,
        otherwise the flexive Weblets includes won't work
    -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <!-- Configure thumbnail and download servlet -->
    <servlet>
        <servlet-name>Thumbnail</servlet-name>
        <servlet-class>com.flexive.war.servlet.ThumbnailServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>Download</servlet-name>
        <servlet-class>com.flexive.war.servlet.DownloadServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Thumbnail</servlet-name>
        <url-pattern>/thumbnail/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Download</servlet-name>
        <url-pattern>/download/*</url-pattern>
    </servlet-mapping>
    <!-- CMS download servlet -->
    <servlet>
        <servlet-name>CMSDownload</servlet-name>
        <servlet-class>com.flexive.cms.war.servlets.FileDownloadServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CMSDownload</servlet-name>
        <url-pattern>/__cmsdownload/*</url-pattern>
    </servlet-mapping>
    <!-- JSON-RPC-Java servlet -->
    <servlet>
        <servlet-name>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-name>
        <servlet-class>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-name>
        <url-pattern>/adm/JSON-RPC</url-pattern>
    </servlet-mapping>
   <listener>
        <listener-class>com.flexive.war.listener.SessionTimeoutListener</listener-class>
    </listener>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <!-- Error pages -->
    <error-page>
        <error-code>404</error-code>
        <location>/_cms/404.xhtml</location>
    </error-page>
</web-app>
