<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~ Copyright 2005-2006 The Apache Software Foundation.
  ~
  ~ Licensed 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>Apache Archiva</display-name>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath*:META-INF/spring-context.xml,
        /WEB-INF/applicationContext.xml
    </param-value>
  </context-param>

  <!-- to activate sirona -->
  <context-param>
    <param-name>org.apache.sirona.reporting.activated</param-name>
    <param-value>true</param-value>
  </context-param>

  <context-param>
    <param-name>org.apache.sirona.reporting.mapping</param-name>
    <param-value>/sirona-monitoring</param-value>
  </context-param>

  <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>/js/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/css/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/feeds/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/restServices/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.html</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.archiva.web.startup.ArchivaStartup
    </listener-class>
  </listener>

  <listener>
    <listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
  </listener>

  <!-- to cleanup temporary group index created during a session -->
  <listener>
    <listener-class>org.apache.archiva.webdav.util.TemporaryGroupIndexSessionCleaner</listener-class>
  </listener>

  <servlet>
    <servlet-name>RepositoryServlet</servlet-name>
    <servlet-class>
      org.apache.archiva.webdav.RepositoryServlet
    </servlet-class>
    <!-- Loading this on startup so as to take advantage of configuration listeners -->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>RestDocumentation</servlet-name>
    <servlet-class>org.apache.archiva.web.docs.RestDocsServlet</servlet-class>
    <load-on-startup>3</load-on-startup>
  </servlet>


  <servlet>
    <servlet-name>RssFeedServlet</servlet-name>
    <servlet-class>
      org.apache.archiva.web.rss.RssFeedServlet
    </servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>RssFeedServlet</servlet-name>
    <url-pattern>/feeds/*</url-pattern>
  </servlet-mapping>
  
  <servlet-mapping>
    <servlet-name>RestDocumentation</servlet-name>
    <url-pattern>/rest-docs/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>RepositoryServlet</servlet-name>
    <url-pattern>/repository/*</url-pattern>
  </servlet-mapping>



  <resource-ref>
    <res-ref-name>jdbc/users</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
  </resource-ref>
  <resource-ref>
    <res-ref-name>mail/Session</res-ref-name>
    <res-type>javax.mail.Session</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
  </resource-ref>

  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/restServices/*</url-pattern>
  </servlet-mapping>

  <!-- Removing dir-listing from Jetty default-servlet -->
  <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
    <init-param>
      <param-name>dirAllowed</param-name>
      <param-value>false</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

  <session-config>
    <!-- 30 minutes session timeout -->
    <session-timeout>30</session-timeout>
  </session-config>

</web-app>
