<?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 version="3.0"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<!--
	This is the PXF webapp xml descriptor
	used by tomcat to load the webapp

	servlet-class	Jersey entrypoint class
	init-param		com.sun.jersey.config.property.packages
						Tells Jersey where are the REST components of this webapp
					jersey.config.server.provider.scanning.recursive
						Tells Jersey to recusively scan package for REST resources
	load-on-startup	Initialize the webapp on tomcat startup
	servlet-mapping	Maps the path of the servlet (pxf/*)
	listener		A class called after the webapp was initialized and before it's about
					to go down
-->

    <servlet>
        <servlet-name>PXF REST Service</servlet-name>
        <servlet-class>
            com.sun.jersey.spi.container.servlet.ServletContainer
        </servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>org.apache.hawq.pxf.service.rest</param-value>
        </init-param>
        <init-param>
            <param-name>jersey.config.server.provider.scanning.recursive</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>PXF REST Service</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <listener>
       <listener-class>org.apache.hawq.pxf.service.servlet.ServletLifecycleListener</listener-class>
    </listener>
    <filter>
        <filter-name>PXF Security Filter</filter-name>
        <filter-class>org.apache.hawq.pxf.service.servlet.SecurityServletFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>PXF Security Filter</filter-name>
        <url-pattern>/@pxfProtocolVersion@/*</url-pattern>
    </filter-mapping>

    <!-- log4j configuration 
         Log4jConfigListener looks for a file under log4jConfigLocation.
         When not using aboslute path, the path starts from the webapp root directory.
         If this file cannot be read, log4j will revert to using the default 
         pxf-log4j.properties inside the webapp. -->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/etc/pxf/conf/pxf-log4j.properties</param-value>
    </context-param>
</web-app>
