<?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.
-->

<web-app version="3.0">
    <display-name>Apache OFBiz - Web Pos</display-name>
    <description>Web Pos component of the Apache OFBiz Project</description>

    <context-param>
        <description>A unique ID used to look up the WebSite entity</description>
        <param-name>webSiteId</param-name>
        <param-value>WebStorePos</param-value>
    </context-param>
    <context-param>
        <description>A unique name used to identify/recognize the local dispatcher for the Service Engine</description>
        <param-name>localDispatcherName</param-name>
        <param-value>webpos</param-value>
    </context-param>
    <context-param>
        <description>The Name of the Entity Delegator to use, defined in entityengine.xml</description>
        <param-name>entityDelegatorName</param-name>
        <param-value>default</param-value>
    </context-param>
    <context-param>
        <description>The location of the main-decorator screen to use for this webapp; referred to as a context variable in screen def XML files.</description>
        <param-name>mainDecoratorLocation</param-name>
        <param-value>component://webpos/widget/CommonScreens.xml</param-value>
    </context-param>

    <filter>
        <display-name>ContextFilter</display-name>
        <filter-name>ContextFilter</filter-name>
        <filter-class>org.apache.ofbiz.webapp.control.ContextFilter</filter-class>
        <init-param>
            <param-name>disableContextSecurity</param-name>
            <param-value>N</param-value>
        </init-param>
        <init-param>
            <param-name>allowedPaths</param-name>
            <param-value>/control:/products:/select:/index.html:/index.jsp:/default.html:/default.jsp:/images</param-value>
        </init-param>
        <init-param>
            <param-name>errorCode</param-name>
            <param-value>403</param-value>
        </init-param>
        <init-param>
            <param-name>redirectPath</param-name>
            <param-value>/control/main</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>ContextFilter</filter-name>
            <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener><listener-class>org.apache.ofbiz.webapp.control.ControlEventListener</listener-class></listener>
    <!-- NOTE: not all app servers support mounting implementations of the HttpSessionActivationListener interface -->
    <!-- <listener><listener-class>org.apache.ofbiz.webapp.control.ControlActivationEventListener</listener-class></listener> -->
    
    <!-- this listener will save any abandoned cart info -->
    <listener><listener-class>org.apache.ofbiz.order.shoppingcart.CartEventListener</listener-class></listener>
    <!-- this listener will clean up info -->
    <listener><listener-class>org.apache.ofbiz.webapp.control.LoginEventListener</listener-class></listener>

    <servlet>
        <description>Main Control Servlet</description>
        <display-name>ControlServlet</display-name>
        <servlet-name>ControlServlet</servlet-name>
        <servlet-class>org.apache.ofbiz.webapp.control.ControlServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <description>Catalog (Category/Product) URL Servlet</description>
        <display-name>CatalogUrlServlet</display-name>
        <servlet-name>CatalogUrlServlet</servlet-name>
        <servlet-class>org.apache.ofbiz.product.category.CatalogUrlServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ControlServlet</servlet-name>
        <url-pattern>/control/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>CatalogUrlServlet</servlet-name>
        <url-pattern>/products/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>60</session-timeout>
        <cookie-config>
            <http-only>true</http-only>
            <secure>true</secure>
        </cookie-config>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
    </welcome-file-list>
</web-app>