<?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-cleanup</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
  </filter>
  <filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
  </filter>
  <filter>
    <filter-name>struts</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts-cleanup</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</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>

  <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-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>
  
  <error-page>
    <error-code>403</error-code>
    <location>/WEB-INF/jsp/error/httpError.jsp?errorCode=403</location>
  </error-page>
  <error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/error/httpError.jsp?errorCode=404</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/jsp/error/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>

