<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE faces-config
        PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
        "http://java.sun.com/dtd/web-facesconfig_1_1.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.
-->

<faces-config>
    <factory>
        <!--
          all these factories are replacements for the normal ones
          issue is we have to make a codeweaving for every bean created
        -->
        <application-factory>
            org.apache.myfaces.extensions.scripting.jsf.dynamicdecorators.factories.ScriptingApplicationFactory
        </application-factory>
        <faces-context-factory>
            org.apache.myfaces.extensions.scripting.jsf.dynamicdecorators.factories.ScriptingFacesContextFactory
        </faces-context-factory>
        <lifecycle-factory>
            org.apache.myfaces.extensions.scripting.jsf.dynamicdecorators.factories.ScriptingLifecycleFactory
        </lifecycle-factory>
        <render-kit-factory>
            org.apache.myfaces.extensions.scripting.jsf.dynamicdecorators.factories.ScriptingRenderkitFactory
        </render-kit-factory>
    </factory>

    <lifecycle>
        <phase-listener>org.apache.myfaces.extensions.scripting.jsf.RefreshPhaseListener</phase-listener>
    </lifecycle>

    <component>
        <component-type>org.apache.myfaces.extensions.scripting.components.CompilerComponent</component-type>
        <component-class>org.apache.myfaces.extensions.scripting.components.CompilerComponent</component-class>
    </component>

    <component>
        <component-type>org.apache.myfaces.extensions.scripting.components.TaintHistory</component-type>
        <component-class>org.apache.myfaces.extensions.scripting.components.TaintHistory</component-class>
    </component>


    <render-kit>
        <renderer>
            <component-family>javax.faces.Output</component-family>
            <renderer-type>org.apache.myfaces.extensions.scripting.components.CompilerComponentRenderer</renderer-type>
            <renderer-class>org.apache.myfaces.extensions.scripting.components.CompilerComponentRenderer</renderer-class>
        </renderer>
        <renderer>
            <component-family>javax.faces.Output</component-family>
            <renderer-type>org.apache.myfaces.extensions.scripting.components.TaintHistoryRenderer</renderer-type>
            <renderer-class>org.apache.myfaces.extensions.scripting.components.TaintHistoryRenderer</renderer-class>
        </renderer>

    </render-kit>

</faces-config>