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

<!--
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>
    <display-name>Open For Business - demostore</display-name>
    <description>Demo Store for the Open For Business Project</description>

    <context-param>
        <param-name>webSiteId</param-name>
        <param-value>WebStore</param-value>
        <description>A unique ID used to look up the WebSite entity</description>
    </context-param>
    <context-param>
        <param-name>localDispatcherName</param-name>
        <param-value>ecommerce</param-value>
        <description>A unique name used to identify/recognize the local dispatcher for the Service Engine</description>
    </context-param>
    <context-param>
        <param-name>entityDelegatorName</param-name>
        <param-value>default</param-value>
        <description>The Name of the Entity Delegator to use, defined in entityengine.xml</description>
    </context-param>
    <context-param>
        <param-name>mainDecoratorLocation</param-name>
        <param-value>component://ecommerce/widget/CommonScreens.xml</param-value>
        <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>
    </context-param>
    <context-param>
        <param-name>forceHttpSession</param-name>
        <param-value>true</param-value>
        <description>
            Forces the JSESSIONID cookie to be sent via http rather https, helps prevent lost sessions in web apps that
            frequently switch between http and https.
        </description>
    </context-param>
    <context-param>
        <param-name>defaultPage</param-name>
        <param-value>/main</param-value>
        <description>Default page uri. Important: please DO add or remove /control to match url-pattern of SeoControlServlet.
        </description>
    </context-param>

    <filter>
        <filter-name>SeoCatalogUrlFilter</filter-name>
        <display-name>SeoCatalogUrlFilter</display-name>
        <filter-class>org.ofbiz.product.category.CatalogUrlSeoFilter</filter-class>
        <init-param><param-name>defaultLocaleString</param-name><param-value>en_US</param-value></init-param>
    </filter>
    <filter>
        <filter-name>SeoContentUrlFilter</filter-name>
        <display-name>SeoContentUrlFilter</display-name>
        <filter-class>org.ofbiz.product.category.SeoContentUrlFilter</filter-class>
        <init-param>
            <param-name>defaultLocaleString</param-name>
            <param-value>en_US</param-value>
        </init-param>
        <init-param><param-name>viewRequest</param-name><param-value>ViewBlogArticle</param-value></init-param>
    </filter>
    <filter>
        <filter-name>SeoContextFilter</filter-name>
        <display-name>SeoContextFilter</display-name>
        <filter-class>org.ofbiz.product.category.SeoContextFilter</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>/error:/control:/products:/select:/index.html:/index.jsp:/robots.txt:/default.html:/default.jsp:/images</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SeoCatalogUrlFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>SeoContentUrlFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>SeoContextFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener><listener-class>org.ofbiz.webapp.control.ControlEventListener</listener-class></listener>
    <!-- NOTE: not all app servers support mounting implementations of the HttpSessionActivationListener interface -->
    <!-- <listener><listener-class>org.ofbiz.webapp.control.ControlActivationEventListener</listener-class></listener> -->

    <!-- this listener will save any abandoned cart info -->
    <listener><listener-class>org.ofbiz.order.shoppingcart.CartEventListener</listener-class></listener>
    <!-- this listener will clean up info -->
    <listener><listener-class>org.ofbiz.webapp.control.LoginEventListener</listener-class></listener>

    <servlet>
        <servlet-name>SeoControlServlet</servlet-name>
        <display-name>SeoControlServlet</display-name>
        <description>Main SEO Control Servlet</description>
        <servlet-class>org.ofbiz.product.category.SeoControlServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- un-comment for Worldpay
    <servlet>
        <servlet-name>select</servlet-name>
        <display-name>SelectHandler</display-name>
        <description>WorldPay Select Handler Service</description>
        <servlet-class>com.worldpay.select.merchant.SelectHandler</servlet-class>
        <load-on-startup>5</load-on-startup>
    </servlet>
    -->
    <servlet>
        <servlet-name>SeoCatalogUrlServlet</servlet-name>
        <display-name>SeoCatalogUrlServlet</display-name>
        <description>SEO Catalog (Category/Product) URL Servlet</description>
        <servlet-class>org.ofbiz.product.category.SeoCatalogUrlServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>SeoControlServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <!-- un-comment for Worldpay
    <servlet-mapping>
        <servlet-name>select</servlet-name>
        <url-pattern>/select/*</url-pattern>
    </servlet-mapping>
    -->
    <servlet-mapping>
        <servlet-name>SeoCatalogUrlServlet</servlet-name>
        <url-pattern>/products/*</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>60</session-timeout>
    </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>

    <error-page>
        <error-code>404</error-code>
        <location>/error/404.jsp</location>
    </error-page>
</web-app>
