<?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>
            rewrite.org.apache.myfaces.extensions.scripting.jsf.dynamicdecorators.factories.ScriptingApplicationFactory
        </application-factory>

        <faces-context-factory>
            rewrite.org.apache.myfaces.extensions.scripting.jsf.dynamicdecorators.factories.ScriptingFacesContextFactory
        </faces-context-factory>


        <lifecycle-factory>
            rewrite.org.apache.myfaces.extensions.scripting.jsf.dynamicdecorators.factories.ScriptingLifecycleFactory
        </lifecycle-factory>

        <render-kit-factory>
            rewrite.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>
    <lifecycle>
        <phase-listener>rewrite.org.apache.myfaces.extensions.scripting.jsf.startup.AnnotationScanPhaseListener</phase-listener>
    </lifecycle>

    <!--
    <application>
        <resource-handler>rewrite.org.apache.myfaces.extensions.scripting.jsf.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>
   -->

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


</faces-config>