<?xml version="1.0"?>

<!--
  ~ 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" version="2.4"
         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>Continuum Webapp</display-name>

  <context-param>
    <param-name>extremecomponentsPreferencesLocation</param-name>
    <param-value>/extremecomponents.properties</param-value>
  </context-param>

  <context-param>
    <param-name>extremecomponentsMessagesLocation</param-name>
    <param-value>localization/Continuum</param-value>
  </context-param>


  <filter>
    <filter-name>struts-prepare</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
  </filter>

  <filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
  </filter>

  <filter>
    <filter-name>struts-execute</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</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-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>struts-prepare</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>struts-execute</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <!-- TODO: some Spring technique for this? -->
    <listener-class>org.apache.continuum.web.startup.ContinuumStartup</listener-class>
  </listener>
  <listener>
    <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextClass</param-name>
    <param-value>org.codehaus.plexus.spring.PlexusWebApplicationContext</param-value>
  </context-param>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      classpath*:/META-INF/plexus/components.xml
      classpath*:/META-INF/spring-context.xml
      /WEB-INF/classes/META-INF/plexus/application.xml
      /WEB-INF/classes/META-INF/plexus/components.xml
      /WEB-INF/applicationContext.xml
    </param-value>
  </context-param>

  <servlet>
    <servlet-name>XmlRpcServlet</servlet-name>
    <servlet-class>org.apache.maven.continuum.xmlrpc.server.ContinuumXmlRpcServlet</servlet-class>
  </servlet>

  <servlet>
    <servlet-name>MasterXmlRpcServlet</servlet-name>
    <servlet-class>
      com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet
    </servlet-class>
    <init-param>
      <param-name>serviceListBeanName</param-name>
      <param-value>xmlrpcServicesList</param-value>
    </init-param>
    <init-param>
      <param-name>enabledForExtensions</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>RedbackXmlRpcServlet</servlet-name>
    <servlet-class>
      com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet
    </servlet-class>
    <init-param>
      <param-name>serviceListBeanName</param-name>
      <param-value>redbackXmlrpcServicesList</param-value>
    </init-param>
    <init-param>
      <param-name>authHandlerBeanName</param-name>
      <param-value>redbackXmlRpcAuthenticator</param-value>
    </init-param>
    <init-param>
      <param-name>enabledForExtensions</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>XmlRpcServlet</servlet-name>
    <url-pattern>/xmlrpc</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>MasterXmlRpcServlet</servlet-name>
    <url-pattern>/master-xmlrpc</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>RedbackXmlRpcServlet</servlet-name>
    <url-pattern>/redback-xmlrpc</url-pattern>
  </servlet-mapping>

  <error-page>
    <error-code>403</error-code>
    <location>/httpError.jsp?errorCode=403</location>
  </error-page>
  <error-page>
    <error-code>404</error-code>
    <location>/httpError.jsp?errorCode=404</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/httpError.jsp?errorCode=500</location>
  </error-page>

  <!-- [jspc-maven-plugin:post-compiled-jsps-as-servlets] -->

  <resource-ref>
    <res-ref-name>jdbc/continuum</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

  <resource-ref>
    <res-ref-name>jdbc/users</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

  <resource-ref>
    <res-ref-name>mail/Session</res-ref-name>
    <res-type>javax.mail.Session</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

</web-app>

