<?xml version="1.0" encoding="UTF-8" ?>
<faces-config 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-facesconfig_2_0.xsd"
              version="2.0">

    <!--
     * 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.
    -->

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


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

        <tag-handler-delegate-factory>
            org.apache.myfaces.extensions.scripting.facelet.TagHandlerDelegateFactoryImpl
        </tag-handler-delegate-factory>

    </factory>


    <application>
        <resource-handler>org.apache.myfaces.extensions.scripting.jsf2.resources.SourceResourceHandler</resource-handler>
    </application>
    <!--
    <application>
        <system-event-listener>
            <system-event-listener-class>org.apache.myfaces.extensions.scripting.startup.IntialScanAnnotationListener
            </system-event-listener-class>
            <system-event-class>javax.faces.event.PostConstructApplicationEvent</system-event-class>
        </system-event-listener>

    </application>
   -->
</faces-config>