<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 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/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_2_5.xsd"
   version="2.5"> 

    <description>
      Hadoop Infrastructure Care Center
    </description>
    <display-name>hicc</display-name>

    <listener>
      <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
    </listener>
    <filter>
      <filter-name>ShiroFilter</filter-name>
      <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>ShiroFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>Workspace</servlet-name>
        <servlet-class>org.apache.hadoop.chukwa.hicc.Workspace</servlet-class>
    </servlet>
    <servlet> 
        <servlet-name>SolrProxy</servlet-name> 
        <servlet-class>org.apache.hadoop.chukwa.hicc.proxy.HttpProxy</servlet-class> 
    </servlet>
    <servlet-mapping>
        <servlet-name>Workspace</servlet-name>
        <url-pattern>/Workspace</url-pattern>
    </servlet-mapping>
    <servlet-mapping> 
        <servlet-name>SolrProxy</servlet-name> 
        <url-pattern>/solr/*</url-pattern> 
    </servlet-mapping>

    <servlet>
      <servlet-name>REST_API</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.hadoop.chukwa.rest.resource;org.apache.hadoop.chukwa.hicc.rest</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>REST_API</servlet-name>
      <url-pattern>/v1/*</url-pattern>
    </servlet-mapping>    

<!--    <security-role>
    <role-name>user</role-name>
    </security-role>

    <login-config>
    <realm-name>Auth</realm-name>
    </login-config>

    <security-constraint>
    <web-resource-collection>
    <web-resource-name>File Upload</web-resource-name>
    <url-pattern>/*</url-pattern>
    </web-resource-collection>

    <auth-constraint>
    <role-name>user</role-name>
    </auth-constraint>
    </security-constraint> -->

</web-app>
