<?xml version="1.0" encoding="UTF-8" ?>
<!--
/*
 * $Id$
 *
 * 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.
 */
-->
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
    
<struts>
    <package name="jsf-default" extends="struts-default">

        <result-types>
            <result-type name="jsf" class="org.apache.struts2.jsf.FacesResult" />
        </result-types>
        <interceptors>
            <interceptor class="org.apache.struts2.jsf.FacesSetupInterceptor" name="jsfSetup" />
            <interceptor class="org.apache.struts2.jsf.RestoreViewInterceptor" name="jsfRestore" />
            <interceptor class="org.apache.struts2.jsf.ApplyRequestValuesInterceptor" name="jsfApply" />
            <interceptor class="org.apache.struts2.jsf.ProcessValidationsInterceptor" name="jsfValidate" />
            <interceptor class="org.apache.struts2.jsf.UpdateModelValuesInterceptor" name="jsfUpdate" />
            <interceptor class="org.apache.struts2.jsf.InvokeApplicationInterceptor" name="jsfInvoke" />

            <interceptor-stack name="jsfStack">
                <interceptor-ref name="jsfSetup">
                    <param name="variableResolver">org.apache.struts2.jsf.StrutsVariableResolver</param>
                    <param name="navigationHandler">org.apache.struts2.jsf.StrutsNavigationHandler</param>
                </interceptor-ref>
                <interceptor-ref name="jsfRestore" />
                <interceptor-ref name="jsfApply" />
                <interceptor-ref name="jsfValidate" />
                <interceptor-ref name="jsfUpdate" />
                <interceptor-ref name="jsfInvoke" />
            </interceptor-stack>
        </interceptors>
        
        <default-interceptor-ref name="jsfStack"/>
        
    </package>

</struts>
