<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
  -->

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <display-name>Apache Falcon Placeholder</display-name>
    <description>Apache Falcon Placeholder</description>

    <filter>
        <filter-name>authentication</filter-name>
        <filter-class>org.apache.falcon.security.FalconAuthenticationFilter</filter-class>
    </filter>

    <filter>
        <filter-name>authorization</filter-name>
        <filter-class>org.apache.falcon.security.FalconAuthorizationFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>authentication</filter-name>
        <servlet-name>FalconRESTApi</servlet-name>
    </filter-mapping>

    <filter-mapping>
        <filter-name>authorization</filter-name>
        <servlet-name>FalconRESTApi</servlet-name>
    </filter-mapping>

    <listener>
        <listener-class>org.apache.falcon.listener.ContextStartupListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>FalconRESTApi</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
            <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>
                org.apache.falcon.resource.admin,org.apache.falcon.resource.proxy,org.apache.falcon.resource.provider,org.apache.falcon.resource.metadata
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>FalconRESTApi</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>

</web-app>
