<?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>Iframe</servlet-name> 
        <servlet-class>org.apache.hadoop.chukwa.hicc.Iframe</servlet-class> 
    </servlet>
    <servlet-mapping>
        <servlet-name>Workspace</servlet-name>
        <url-pattern>/Workspace</url-pattern>
    </servlet-mapping>
    <servlet-mapping> 
        <servlet-name>Iframe</servlet-name> 
        <url-pattern>/iframe/*</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>
