<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 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">

	<display-name>appfuse</display-name>
	<distributable/>

	<!-- precompiled jsp mappings -->

	<!-- Define the default CSS Theme -->
	<context-param>
		<param-name>csstheme</param-name>
		<param-value>seer</param-value>
	</context-param>
	<!-- Define the basename for a resource bundle for I18N -->
	<context-param>
		<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
		<param-value>ApplicationResources</param-value>
	</context-param>
	<!-- Fallback locale if no bundles found for browser's preferred locale -->
	<!-- Force a single locale using param-name 'javax.servlet.jsp.jstl.fmt.locale' -->
	<context-param>
		<param-name>javax.servlet.jsp.jstl.fmt.fallbackLocale</param-name>
		<param-value>en</param-value>
	</context-param>
	<!-- Context Configuration locations for Spring XML files -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:/applicationContext-resources.xml
			classpath:/applicationContext-dao.xml
			classpath:/applicationContext-service.xml
			classpath*:/applicationContext.xml
			/WEB-INF/applicationContext*.xml
			/WEB-INF/xfire-servlet.xml
			/WEB-INF/security.xml
		</param-value>
	</context-param>

<!-- rich -->
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>blueSky</param-value>	
	</context-param>												
<!-- rich -->

	<context-param>
		<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
		<param-value>com.sun.facelets.FaceletViewHandler</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>client</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.xhtml</param-value>
	</context-param>
	<context-param>
		<param-name>facelets.DEVELOPMENT</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>facelets.LIBRARIES</param-name>
		<param-value>
			/WEB-INF/taglibs/acegijsf.taglib.xml;
			/WEB-INF/taglibs/corejsf-validator.taglib.xml;
			/WEB-INF/taglibs/tomahawk.taglib.xml
		</param-value>
	</context-param>

<!-- rich -->
	<filter> 
		<display-name>RichFaces Filter</display-name> 
		<filter-name>richfaces</filter-name> 
		<filter-class>org.ajax4jsf.Filter</filter-class> 
		<init-param>
		    <param-name>forceparser</param-name>
		    <param-value>false</param-value>
		</init-param>	
	</filter> 
<!-- rich -->
<!--
	<filter>
		<filter-name>ajax4jsf</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>
-->
	<filter>
		<filter-name>cacheFilter</filter-name>
		<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
	</filter>
	<filter>
		<filter-name>clickstreamFilter</filter-name>
		<filter-class>com.opensymphony.clickstream.ClickstreamFilter</filter-class>
	</filter>
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>extensionsFilter</filter-name>
		<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
		<init-param>
			<param-name>maxFileSize</param-name>
			<param-value>2m</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>gzipFilter</filter-name>
		<filter-class>net.sf.ehcache.constructs.web.filter.GzipFilter</filter-class>
	</filter>
	<!--<filter>
		<filter-name>lazyLoadingFilter</filter-name>
		<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
	</filter>-->
	<!-- Use "org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter" if you're using JPA -->
	<filter>
		<filter-name>localeFilter</filter-name>
		<filter-class>com.puckdroll.app.webapp.filter.LocaleFilter</filter-class>
	</filter>
	<filter>
		<filter-name>messageFilter</filter-name>
		<filter-class>com.puckdroll.app.webapp.filter.MessageFilter</filter-class>
	</filter>
	<filter>
		<filter-name>rewriteFilter</filter-name>
		<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
		<init-param>
			<param-name>logLevel</param-name>
			<param-value>log4j</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>securityFilter</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
		<init-param>
			<param-name>targetBeanName</param-name>
			<param-value>springSecurityFilterChain</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>sitemesh</filter-name>
		<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>securityFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>extensionsFilter</filter-name>
		<servlet-name>faces</servlet-name>
	</filter-mapping>
	<filter-mapping>
		<filter-name>extensionsFilter</filter-name>
		<url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
	</filter-mapping>
<!-- rich -->
	<filter-mapping> 
		<filter-name>richfaces</filter-name> 
		<servlet-name>faces</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
<!-- rich -->
<!--
	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>faces</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>
-->
	<!-- Commented out for 2 reasons: 1) it's a pain when developing JSPs, and
									  2) it causes the Signup webtest to fail -->
	<!--filter-mapping>
		<filter-name>cacheFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping-->
	<!--<filter-mapping>
		<filter-name>lazyLoadingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>-->
	<filter-mapping>
		<filter-name>clickstreamFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>localeFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- GZipFilter has issues with XFire's service-listing servlet. -->
	<!-- http://issues.appfuse.org/browse/APF-863 -->
	<filter-mapping>
		<filter-name>gzipFilter</filter-name>
		<url-pattern>*.css</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>gzipFilter</filter-name>
		<url-pattern>*.html</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>gzipFilter</filter-name>
		<url-pattern>*.js</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>gzipFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>rewriteFilter</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>
	<filter-mapping>
		<filter-name>sitemesh</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>
	<filter-mapping>
		<filter-name>messageFilter</filter-name>
		<url-pattern>*.html</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>

	<listener>
		<listener-class>com.opensymphony.clickstream.ClickstreamListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>
	<listener>
		<listener-class>com.puckdroll.app.webapp.listener.StartupListener</listener-class>
	</listener>
	<listener>
		<listener-class>com.puckdroll.app.webapp.listener.UserCounterListener</listener-class>
	</listener>
	<listener>
		<listener-class>net.sf.navigator.menu.MenuContextListener</listener-class>
	</listener>

	<servlet>
		<servlet-name>faces</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>

	<servlet>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>
	</servlet>
	
	<servlet>
		<servlet-name>xfire</servlet-name>
		<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>faces</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>dwr-invoker</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>xfire</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>

	<session-config>
		<session-timeout>10</session-timeout>
	</session-config>
	
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>Protect XHTML Templates</web-resource-name>
			<url-pattern>*.xhtml</url-pattern>
		</web-resource-collection>
		<auth-constraint/>
   </security-constraint>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<error-page>
		<error-code>500</error-code>
		<location>/error.jsp</location>
	</error-page>
	<error-page>
		<error-code>400</error-code>
		<location>/index.jsp</location>
	</error-page>
	<error-page>
		<error-code>403</error-code>
		<location>/403.jsp</location>
	</error-page>
	<error-page>
		<error-code>404</error-code>
		<location>/404.jsp</location>
	</error-page>
</web-app>
