[maven-release-plugin]  copy for tag extscript-root-1.0.4

git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4@1397015 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/extscript-root-1.0.4/extscript-bundles/extscript-myfaces20-bundle/pom.xml b/extscript-root-1.0.4/extscript-bundles/extscript-myfaces20-bundle/pom.xml
new file mode 100644
index 0000000..3d507c4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-bundles/extscript-myfaces20-bundle/pom.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.myfaces.extensions.scripting</groupId>
+    <artifactId>extscript-myfaces20-bundle</artifactId>
+    <packaging>jar</packaging>
+    <name>MyFaces Extension Scripting MyFaces 2.0 convenience meta bundle</name>
+    <version>1.0.4</version>
+
+    <description>
+        The meta bundle bundeling all needed core runtimes
+        for a full myfaces 2.0 build
+    </description>
+
+    <parent>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-bundles</artifactId>
+        <version>1.0.4</version>
+    </parent>
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-bundles/extscript-myfaces20-bundle</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-bundles/extscript-myfaces20-bundle</developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-bundles/extscript-myfaces20-bundle</url>
+    </scm>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.scripting</groupId>
+            <artifactId>extscript-core</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+
+    </dependencies>
+
+    <!-- we use the maven shade plugin to bundle our subprojects into bundles -->
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>1.3.1</version>
+                <!--
+                    todo use the shade plugin
+                    to rename references from
+                    util.shared_impl into impl
+                -->
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <artifactSet>
+                        <includes>
+                            <artifact>org.apache.myfaces.extensions.scripting:extscript-core</artifact>
+                        </includes>
+                    </artifactSet>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+
+</project>
diff --git a/extscript-root-1.0.4/extscript-bundles/extscript20-assembly/pom.xml b/extscript-root-1.0.4/extscript-bundles/extscript20-assembly/pom.xml
new file mode 100644
index 0000000..a5fc981
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-bundles/extscript20-assembly/pom.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>extscript20-assembly</artifactId>
+    <packaging>pom</packaging>
+    <name>Apache MyFaces Extensions Scripting MyFaces 2.0 Assembly</name>
+    <description>MyFaces Extensions Scripting Assembly is used to generate
+        .zip and .tar.gz distributions
+    </description>
+
+    <parent>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-bundles</artifactId>
+        <version>1.0.4-SNAPSHOT</version>
+    </parent>
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk/extscript-bundles/extscript20-assembly</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk/extscript-bundles/extscript20-assembly</developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-bundles/extscript20-assembly</url>
+    </scm>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>dependency-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-javadoc</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.myfaces.extensions.scripting</groupId>
+                                    <artifactId>extscript-core</artifactId>
+                                    <version>${version}</version>
+                                    <classifier>javadoc</classifier>
+                                </artifactItem>
+
+
+                            </artifactItems>
+                            <outputDirectory>${project.build.directory}/javadoc</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-source</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+
+                                <artifactItem>
+                                    <groupId>org.apache.myfaces.extensions.scripting</groupId>
+                                    <artifactId>extscript-core</artifactId>
+                                    <version>${version}</version>
+                                    <classifier>sources</classifier>
+                                </artifactItem>
+
+
+                            </artifactItems>
+                            <outputDirectory>${project.build.directory}/src</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <!-- EXECUTE mvn package to generate assembly files -->
+                <artifactId>maven-assembly-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>make_assembly_src</id>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/main/assembly/coresrc.xml</descriptor>
+                            </descriptors>
+                            <finalName>myfaces-extscript20-${version}-src</finalName>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <outputDirectory>target/assembly/out</outputDirectory>
+                            <workDirectory>target/assembly/work</workDirectory>
+                        </configuration>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attached</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>make_assembly_bin</id>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>${basedir}/src/main/assembly/corebin.xml</descriptor>
+                            </descriptors>
+                            <finalName>myfaces-extscript20-${version}-bin</finalName>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <outputDirectory>target/assembly/out</outputDirectory>
+                            <workDirectory>target/assembly/work</workDirectory>
+                        </configuration>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attached</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.scripting</groupId>
+            <artifactId>extscript-core</artifactId>
+            <version>1.0.3-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <version>1.0.3-SNAPSHOT</version>
+    </properties>
+</project>
diff --git a/extscript-root-1.0.4/extscript-bundles/pom.xml b/extscript-root-1.0.4/extscript-bundles/pom.xml
new file mode 100644
index 0000000..c7e67a8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-bundles/pom.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.myfaces.extensions.scripting</groupId>
+    <artifactId>extscript-bundles</artifactId>
+    <packaging>pom</packaging>
+    <name>MyFaces Extension Scripting meta bundles</name>
+    <version>1.0.4</version>
+
+    <description>
+        Meta bundles bundling the various ext-script
+        combinations into one coherent package per
+        jsf version
+    </description>
+
+    <parent>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-root</artifactId>
+        <version>1.0.4</version>
+    </parent>
+
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-bundles</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-bundles</developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-bundles</url>
+    </scm>
+
+    <modules>
+        <module>extscript-myfaces20-bundle</module>
+    </modules>
+
+
+     <profiles>
+        <!-- This profile is invoked by -DprepareRelease=true.  This allows mvn release:prepare to
+            run successfully on the assembly projects. -->
+        <profile>
+            <id>prepare-release</id>
+            <activation>
+                <property>
+                    <name>prepareRelease</name>
+                </property>
+            </activation>
+            <modules>
+                <module>extscript20-assembly</module>
+            </modules>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-release-plugin</artifactId>
+                        <configuration>
+                            <arguments>-DprepareRelease</arguments>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/extscript-root-1.0.4/extscript-core-root/.DS_Store b/extscript-root-1.0.4/extscript-core-root/.DS_Store
new file mode 100644
index 0000000..553f112
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/.DS_Store
Binary files differ
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/pom.xml b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/pom.xml
new file mode 100644
index 0000000..abeba08
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/pom.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>extscript-cdi</artifactId>
+    <version>1.0.4</version>
+    <packaging>jar</packaging>
+    <name>MyFaces Extension Scripting Core</name>
+
+    <description>
+        Core of the MyFaces extensions.scripting
+    </description>
+
+    <parent>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-core-root</artifactId>
+        <version>1.0.4</version>
+    </parent>
+
+    <repositories>
+        <repository>
+            <id>people.apache.snapshots</id>
+            <url>https://repository.apache.org/content/repositories/snapshots/</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+    <scm>
+        <connection>
+            scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-core-root/extscript-core
+        </connection>
+        <developerConnection>
+            scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-core-root/extscript-core
+        </developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-core-root/extscript-core</url>
+    </scm>
+    <properties>
+
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.scripting</groupId>
+            <artifactId>extscript-core</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+        <!--
+        <dependency>
+            <groupId>org.apache.deltaspike.cdictrl</groupId>
+            <artifactId>deltaspike-cdictrl-api</artifactId>
+            <version>${deltaspike.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.deltaspike.cdictrl</groupId>
+            <artifactId>deltaspike-cdictrl-owb</artifactId>
+            <version>${deltaspike.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        -->
+        <!-- openwebbeans -->
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-impl</artifactId>
+            <version>${openwebbeans.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-jsf</artifactId>
+            <version>${openwebbeans.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-web</artifactId>
+            <version>${openwebbeans.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-resource</artifactId>
+            <version>${openwebbeans.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-spi</artifactId>
+            <version>${openwebbeans.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <!-- openwebbeans -->
+        <!-- openwebbeans api -->
+        <dependency>
+           <groupId>org.apache.geronimo.specs</groupId>
+           <artifactId>geronimo-jcdi_1.0_spec</artifactId>
+           <version>1.0</version>
+           <scope>provided</scope>
+       </dependency>
+
+       <!-- javax.inject jsr 330 -->
+       <dependency>
+           <groupId>org.apache.geronimo.specs</groupId>
+           <artifactId>geronimo-atinject_1.0_spec</artifactId>
+           <version>1.0</version>
+           <scope>provided</scope>
+       </dependency>
+
+
+    </dependencies>
+
+    <build>
+        <plugins>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <!--
+            - Build and install into the repository some additional artifacts that we don't
+            - want to build during normal development because they take too long.
+            -->
+            <id>generate-assembly</id>
+            <activation>
+                <property>
+                    <name>performRelease</name>
+                    <value>true</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <!-- Install in the repository a "-javadoc.jar" file -->
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                        <version>2.8</version>
+                        <executions>
+                            <execution>
+                                <id>attach-javadoc</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <!-- Install in the repository a "-sources.jar" file -->
+                        <artifactId>maven-source-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>attach-source</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/LICENSE.TXT b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/LICENSE.TXT
new file mode 100644
index 0000000..dd5b3a5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/LICENSE.TXT
@@ -0,0 +1,174 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/NOTICE.TXT b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/NOTICE.TXT
new file mode 100644
index 0000000..a154ae7
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/NOTICE.TXT
@@ -0,0 +1,14 @@
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+------------------------------------------------------------------------
+See the file LICENSE.txt
+See licenses for accompanying products in the "/licenses" subdirectory.
+------------------------------------------------------------------------
+
+This software also includes code from Facelets (https://facelets.dev.java.net/)
+for the purpose of making components and facelet artifacts reloadable from
+other source directories.
+
+This product also includes the ASM bytecode library (http://asm.ow2.org/) for the purpose of
+dependency bytecode scanning.
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainer.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainer.java
new file mode 100644
index 0000000..ebd1188
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainer.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.api;
+
+
+
+import javax.enterprise.inject.spi.BeanManager;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.http.HttpSession;
+
+/**
+ * <p>A CdiTestContainer provides access to an underlying JSR-299 (CDI)
+ * Container. It allows starting and stopping the container and to start
+ * and stop the built-in contexts of that container.</p>
+ *
+ * <p>The intention is to provide a portable control for CDI containers in
+ * Java SE environments. It is <b>not</b> intended for environments in which the
+ * CDI container is under full control of the server already, e.g. in
+ * EE-containers.</p>
+ */
+public interface CdiContainer
+{
+    /**
+     * Booting the CdiTestContainer will scan the whole classpath
+     * for Beans and extensions available.
+     * The container might throw a DeploymentException or similar on startup.
+     */
+    void boot(ServletContextEvent context);
+    
+    /**
+     * This will shutdown the underlying CDI container.
+     */
+    void shutdown(ServletContextEvent context);
+    
+
+    /**
+     * @return the {@link javax.enterprise.inject.spi.BeanManager} or <code>null</code> it not available
+     */
+    BeanManager getBeanManager();
+
+    /**
+     * @return ContextControl for the started Container. <code>null</code> if the container is not yet started
+     */
+    ContextControl getContextControl(ServletContext context, HttpSession session);
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainerLoader.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainerLoader.java
new file mode 100644
index 0000000..0d56c97
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainerLoader.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.api;
+
+
+import java.util.Iterator;
+import java.util.ServiceLoader;
+
+/**
+ * <p>This class provides access to the ContainerControl.</p>
+ * <p>It uses the {@code java.util.ServiceLoader} mechanism  to 
+ * automatically pickup the container providers from the classpath.</p>
+ */
+public final class CdiContainerLoader
+{
+    private CdiContainerLoader()
+    {
+        // private ct to prevent instantiation
+    }
+
+    
+    public static CdiContainer getCdiContainer()
+    {
+        CdiContainer testContainer;
+
+        //doesn't support the implementation loader (there is no dependency to owb-impl
+        ServiceLoader<CdiContainer> cdiContainerLoader = ServiceLoader.load(CdiContainer.class);
+        Iterator<CdiContainer> cdiIt = cdiContainerLoader.iterator();
+        if (cdiIt.hasNext())
+        {
+            testContainer = cdiIt.next();
+        }
+        else
+        {
+            throw new IllegalStateException("Could not find an implementation of " + CdiContainer.class.getName() +
+                " available in the classpath!");
+        }
+
+        if (cdiIt.hasNext())
+        {
+            String foundContainers = getContainerDetails();
+            throw new IllegalStateException("Too many implementations of " + CdiContainer.class.getName() +
+                " found in the classpath! Details: " + foundContainers);
+        }
+
+        return testContainer;
+    }
+
+    private static String getContainerDetails()
+    {
+        StringBuilder result = new StringBuilder();
+
+        Class containerClass;
+        for (CdiContainer cdiContainer : ServiceLoader.load(CdiContainer.class))
+        {
+            containerClass = cdiContainer.getClass();
+            result.append(containerClass.getProtectionDomain().getCodeSource().getLocation().toExternalForm());
+            result.append(containerClass.getName());
+
+            result.append(System.getProperty("line.separator"));
+        }
+
+        return result.toString();
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/ContextControl.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/ContextControl.java
new file mode 100644
index 0000000..3e45b87
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/ContextControl.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.api;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+import java.lang.annotation.Annotation;
+
+/**
+ * Control native CDI Container Contexts.
+ * Just inject this interface and you gain manual access over built-in Contexts.
+ * The respective integration code will provide a &064;Dependent scoped instance.
+ */
+public interface ContextControl
+{
+    /**
+     * This will start all container built-in Contexts
+     */
+    void startContexts();
+
+    /**
+     * Stop all container built-in Contexts and destroy all beans properly
+     */
+    void stopContexts();
+
+    /**
+     * Start the specified scope. This only works for scopes which are handled
+     * by the CDI container itself. Custom scoped of 3rd party
+     * Context implementations shall be started directly (they are portable anyway).
+     *
+     * @param scopeClass e.g. RequestScoped.class
+     */
+    void startContext(Class<? extends Annotation> scopeClass);
+
+    /**
+     * Stop the specified scope. This only works for scopes which are handled
+     * by the CDI container itself. Custom scoped of 3rd party
+     * Context implementations shall be stopped directly (they are portable anyway).
+     *
+     * @param scopeClass e.g. RequestScoped.class
+     */
+    void stopContext(Class<? extends Annotation> scopeClass);
+
+
+    void setSession(HttpSession session);
+
+    void setServletContext(ServletContext servletContext);
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/CDIThrowAwayClassloader.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/CDIThrowAwayClassloader.java
new file mode 100644
index 0000000..c89f080
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/CDIThrowAwayClassloader.java
@@ -0,0 +1,145 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.core;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.engine.ThrowAwayClassloader;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          We use
+ */
+
+public class CDIThrowAwayClassloader extends ClassLoader
+{
+    ThrowAwayClassloader _delegate;
+
+    public CDIThrowAwayClassloader(ClassLoader classLoader)
+    {
+        super(classLoader);
+        _delegate = new ThrowAwayClassloader(classLoader);
+    }
+
+    public CDIThrowAwayClassloader()
+    {
+        super();
+        _delegate = new ThrowAwayClassloader();
+    }
+
+    @Override
+    public Class<?> loadClass(String className) throws ClassNotFoundException
+    {
+        return _delegate.loadClass(className);
+    }
+
+    @Override
+    public InputStream getResourceAsStream(String name)
+    {
+        return _delegate.getResourceAsStream(name);
+    }
+
+    @Override
+    public URL getResource(String s)
+    {
+        if (s.contains("META-INF/beans.xml"))
+        {
+            //return target dir
+            try
+            {
+                return WeavingContext.getInstance().getConfiguration().getCompileTarget().toURI().toURL();
+            }
+            catch (MalformedURLException e)
+            {
+                //cannot really happen
+                e.printStackTrace();
+            }
+            return null;
+        }
+        return _delegate.getResource(s);
+    }
+
+    @Override
+    public Enumeration<URL> getResources(String s) throws IOException
+    {
+        Enumeration<URL> urls = _delegate.getResources(s);
+        if (s.contains("META-INF/beans.xml"))
+        {
+            ArrayList<URL> tmpList = Collections.list(urls);
+            tmpList.add(WeavingContext.getInstance().getConfiguration().getCompileTarget().toURI().toURL());
+            return Collections.enumeration(tmpList);
+        }
+        return urls;
+    }
+
+    public static URL getSystemResource(String s)
+    {
+        return ClassLoader.getSystemResource(s);
+    }
+
+    public static Enumeration<URL> getSystemResources(String s) throws IOException
+    {
+        return ClassLoader.getSystemResources(s);
+    }
+
+    public static InputStream getSystemResourceAsStream(String s)
+    {
+        return ClassLoader.getSystemResourceAsStream(s);
+    }
+
+    public static ClassLoader getSystemClassLoader()
+    {
+        return ClassLoader.getSystemClassLoader();
+    }
+
+
+    @Override
+    public void setDefaultAssertionStatus(boolean b)
+    {
+        _delegate.setDefaultAssertionStatus(b);
+    }
+
+    @Override
+    public void setPackageAssertionStatus(String s, boolean b)
+    {
+        _delegate.setPackageAssertionStatus(s, b);
+    }
+
+    @Override
+    public void setClassAssertionStatus(String s, boolean b)
+    {
+        _delegate.setClassAssertionStatus(s, b);
+    }
+
+    @Override
+    public void clearAssertionStatus()
+    {
+        _delegate.clearAssertionStatus();
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ExtScriptScannerService.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ExtScriptScannerService.java
new file mode 100644
index 0000000..817279f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ExtScriptScannerService.java
@@ -0,0 +1,227 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.core;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.jsf.startup.StartupServletContextPluginChainLoader;
+import org.apache.webbeans.config.OWBLogConst;
+import org.apache.webbeans.corespi.scanner.AbstractMetaDataDiscovery;
+import org.apache.webbeans.corespi.scanner.AnnotationDB;
+import org.apache.webbeans.corespi.se.BeansXmlAnnotationDB;
+import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.logger.WebBeansLogger;
+import org.apache.webbeans.util.WebBeansUtil;
+import org.scannotation.WarUrlFinder;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Configures the web application to find beans.
+ */
+public class ExtScriptScannerService extends AbstractMetaDataDiscovery
+{
+    private static final String RELOADING_LISTENER = "ReloadingListener";
+    private final WebBeansLogger logger = WebBeansLogger.getLogger(ExtScriptScannerService.class);
+
+    private boolean configure = false;
+
+    protected ServletContext servletContext = null;
+
+    public ExtScriptScannerService()
+    {
+
+    }
+
+    public void init(Object context)
+    {
+        super.init(context);
+        this.servletContext = (ServletContext) context;
+        initExtScript(this.servletContext);
+    }
+
+    private void initExtScript(ServletContext servletContext)
+    {
+        try
+        {
+
+            if (servletContext.getAttribute(RELOADING_LISTENER) == null)
+            {
+                StartupServletContextPluginChainLoader.startup(servletContext);
+                servletContext.setAttribute(RELOADING_LISTENER, new ReloadingListener());
+                WeavingContext.getInstance().addListener((ReloadingListener) servletContext.getAttribute(RELOADING_LISTENER));
+            }
+        }
+        catch (IOException e)
+        {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+    }
+
+    protected void configure()
+    {
+        try
+        {
+            if (!configure)
+            {
+                Set<String> arcs = getArchives();
+                String[] urls = new String[arcs.size()];
+                urls = arcs.toArray(urls);
+
+                getAnnotationDB().scanArchives(urls);
+
+                configure = true;
+            }
+
+        }
+        catch (Exception e)
+        {
+            throw new WebBeansConfigurationException(logger.getTokenString(OWBLogConst.ERROR_0002), e);
+        }
+
+    }
+
+    /**
+     * @return all beans.xml paths
+     */
+    private Set<String> getArchives() throws Exception
+    {
+        Set<String> lists = createURLFromMarkerFile();
+        String warUrlPath = createURLFromWARFile();
+        String targetUrlPath = createURLFromTargetPath();
+
+        if (warUrlPath != null)
+        {
+            lists.add(warUrlPath);
+        }
+        lists.add(targetUrlPath);
+
+        return lists;
+    }
+
+    protected String createURLFromTargetPath()
+    {
+        File targetPath = WeavingContext.getInstance().getConfiguration().getCompileTarget();
+        return "file:" + targetPath.getAbsolutePath();
+    }
+
+    /* Creates URLs from the marker file */
+    protected Set<String> createURLFromMarkerFile() throws Exception
+    {
+        Set<String> listURL = new HashSet<String>();
+
+        // Root with beans.xml marker.
+        String[] urls = findBeansXmlBases("META-INF/beans.xml", WebBeansUtil.getCurrentClassLoader());
+
+        if (urls != null)
+        {
+            String addPath;
+            for (String url : urls)
+            {
+                String fileDir = new URL(url).getFile();
+                if (fileDir.endsWith(".jar!/"))
+                {
+                    fileDir = fileDir.substring(0, fileDir.lastIndexOf("/")) + "/META-INF/beans.xml";
+
+                    //fix for weblogic
+                    if (!fileDir.startsWith("file:/"))
+                    {
+                        fileDir = "file:/" + fileDir;
+                        //TODO switch to a more stable approach
+                        //url = new URL("jar:" + fileDir);
+                    }
+
+                    if (logger.wblWillLogDebug())
+                    {
+                        logger.debug("OpenWebBeans found the following url while doing web scanning: " + fileDir);
+                    }
+
+                    addPath = "jar:" + fileDir;
+
+                    if (logger.wblWillLogDebug())
+                    {
+                        logger.debug("OpenWebBeans added the following jar based path while doing web scanning: " +
+                                addPath);
+                    }
+                } else
+                {
+                    //X TODO check!
+                    addPath = "file:" + url + "META-INF/beans.xml";
+
+                    if (logger.wblWillLogDebug())
+                    {
+                        logger.debug("OpenWebBeans added the following file based path while doing web scanning: " +
+                                addPath);
+                    }
+
+                }
+
+                listURL.add(url);
+            }
+        }
+
+        return listURL;
+    }
+
+    /**
+     * Returns the web application class path if it contains
+     * a beans.xml marker file.
+     *
+     * @return the web application class path
+     * @throws Exception if any exception occurs
+     */
+    protected String createURLFromWARFile() throws Exception
+    {
+        if (servletContext == null)
+        {
+            // this may happen if we are running in a test container, in IDE development, etc
+            return null;
+        }
+
+        URL url = servletContext.getResource("/WEB-INF/beans.xml");
+
+        if (url != null)
+        {
+            addWebBeansXmlLocation(url);
+            URL resourceUrl = WarUrlFinder.findWebInfClassesPath(this.servletContext);
+
+            if (resourceUrl == null)
+            {
+                return null;
+            }
+
+            //set resource to beans.xml mapping
+            AnnotationDB annotationDB = getAnnotationDB();
+
+            if (annotationDB instanceof BeansXmlAnnotationDB)
+            {
+                ((BeansXmlAnnotationDB) annotationDB).setResourceBeansXml(resourceUrl.toExternalForm(), url.toExternalForm());
+            }
+            return resourceUrl.toExternalForm();
+        }
+
+        return null;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ReloadingListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ReloadingListener.java
new file mode 100644
index 0000000..0cf5d77
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ReloadingListener.java
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.core;
+
+import org.apache.myfaces.extensions.scripting.cdi.api.CdiContainerLoader;
+import org.apache.myfaces.extensions.scripting.cdi.owb.OpenWebBeansContainerControl;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEventListener;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.events.RefreshBeginEvent;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.events.TaintedEvent;
+import org.apache.myfaces.extensions.scripting.core.engine.ThrowAwayClassloader;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Reloading listener which triggers a container reload
+ *          the reload can happen at the end of the extscript lifecycle
+ *          when all beans have been tainted
+ */
+public class ReloadingListener implements WeavingEventListener
+{
+    boolean _tainted = false;
+    ServletContext context;
+
+    @Override
+    public void onEvent(WeavingEvent evt)
+    {
+        if (evt instanceof TaintedEvent)
+        {
+            _tainted = true;
+        } else if (evt instanceof RefreshBeginEvent)
+        {
+            RefreshBeginEvent refreshEvent = (RefreshBeginEvent) evt;
+            if (_tainted)
+            {
+                _tainted = false;
+                HttpServletRequest req = (HttpServletRequest) refreshEvent.getRequest();
+                //TODO plug reloadable classloader in here temporarily
+                //as context classloader, then restart the container
+                //then restore the old classloader
+                //ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
+                //ClassLoader tempClassLoader = new ThrowAwayClassloader(oldClassLoader);
+                //Thread.currentThread().setContextClassLoader(tempClassLoader);
+                try
+                {
+                    OpenWebBeansContainerControl container = (OpenWebBeansContainerControl) CdiContainerLoader
+                            .getCdiContainer();
+                    container.init();
+
+                    container.getContextControl(req.getServletContext(),
+                            req.getSession()).stopContexts();
+                    container.shutdown(new ServletContextEvent(req.getServletContext()));
+
+                    CdiContainerLoader.getCdiContainer().boot(new ServletContextEvent(req.getServletContext()));
+
+                    container.getContextControl(req.getServletContext(),
+                            req.getSession()).startContexts();
+                }
+                finally
+                {
+                    //Thread.currentThread().setContextClassLoader(oldClassLoader);
+                }
+            }
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContainerControl.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContainerControl.java
new file mode 100644
index 0000000..60f2bfb
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContainerControl.java
@@ -0,0 +1,96 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.owb;
+
+import org.apache.myfaces.extensions.scripting.cdi.api.CdiContainer;
+import org.apache.myfaces.extensions.scripting.cdi.api.ContextControl;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.spi.ContainerLifecycle;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.http.HttpSession;
+import java.util.Set;
+
+/**
+ * OpenWebBeans specific implementation of {@link org.apache.deltaspike.cdise.api.CdiContainer}.
+ */
+public class OpenWebBeansContainerControl implements CdiContainer
+{
+
+    private ContainerLifecycle lifecycle;
+
+    private ContextControl ctxCtrl = null;
+    private Bean<ContextControl> ctxCtrlBean = null;
+    private CreationalContext<ContextControl> ctxCtrlCreationalContext = null;
+
+    @Override
+    public  BeanManager getBeanManager()
+    {
+        return lifecycle.getBeanManager();
+    }
+
+    public synchronized void init() {
+        lifecycle = WebBeansContext.getInstance().getService(ContainerLifecycle.class);
+    }
+
+    @Override
+    public synchronized void boot(ServletContextEvent servletContext)
+    {
+
+        init();
+        lifecycle.startApplication(servletContext);
+    }
+
+    @Override
+    public synchronized void shutdown(ServletContextEvent servletContext)
+    {
+        if (ctxCtrl != null)
+        {
+            ctxCtrlBean.destroy(ctxCtrl, ctxCtrlCreationalContext);
+
+        }
+
+        if (lifecycle != null) 
+        {
+            lifecycle.stopApplication(servletContext);
+        }
+    }
+
+    public synchronized ContextControl getContextControl(ServletContext context, HttpSession session)
+    {
+        if (ctxCtrl == null)
+        {
+            Set<Bean<?>> beans = getBeanManager().getBeans(ContextControl.class);
+            ctxCtrlBean = (Bean<ContextControl>) getBeanManager().resolve(beans);
+            ctxCtrlCreationalContext = getBeanManager().createCreationalContext(ctxCtrlBean);
+            ctxCtrl = (ContextControl)
+                    getBeanManager().getReference(ctxCtrlBean, ContextControl.class, ctxCtrlCreationalContext);
+            ctxCtrl.setServletContext(context);
+            ctxCtrl.setSession(session);
+        }
+        return ctxCtrl;
+    }
+
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContextControl.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContextControl.java
new file mode 100644
index 0000000..147f894
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContextControl.java
@@ -0,0 +1,246 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.owb;
+
+import org.apache.myfaces.extensions.scripting.cdi.api.ContextControl;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.context.ContextFactory;
+import org.apache.webbeans.context.type.ContextTypes;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.context.ConversationScoped;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.context.RequestScoped;
+import javax.enterprise.context.SessionScoped;
+import javax.enterprise.context.spi.Context;
+import javax.inject.Named;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+import java.lang.annotation.Annotation;
+import java.util.logging.Logger;
+
+/**
+ * OWB specific impl of the {@link ContextControl}
+ */
+@Named
+@Dependent
+public class OpenWebBeansContextControl implements ContextControl
+{
+
+    private static final Logger LOG = Logger.getLogger(OpenWebBeansContextControl.class.getName());
+
+    private HttpSession session = null;
+    private ServletContext servletContext  = null;
+
+    public OpenWebBeansContextControl()
+    {
+    }
+
+    public OpenWebBeansContextControl(HttpSession session, ServletContext servletContext)
+    {
+        this.session = session;
+        this.servletContext = servletContext;
+    }
+
+    @Override
+    public void startContexts()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        contextFactory.initSingletonContext(servletContext);
+        contextFactory.initApplicationContext(servletContext);
+        contextFactory.initSessionContext(session);
+        contextFactory.initRequestContext(null);
+        contextFactory.initConversationContext(null);
+    }
+
+
+    public void stopContexts()
+    {
+        stopSessionScope();
+        stopConversationScope();
+        stopRequestScope();
+        stopApplicationScope();
+        stopSingletonScope();
+    }
+
+
+
+    @Override
+    public void startContext(Class<? extends Annotation> scopeClass)
+    {
+        if (scopeClass.isAssignableFrom(ApplicationScoped.class))
+        {
+            startApplicationScope();
+        }
+        else if (scopeClass.isAssignableFrom(SessionScoped.class))
+        {
+            startSessionScope();
+        }
+        else if (scopeClass.isAssignableFrom(RequestScoped.class))
+        {
+            startRequestScope();
+        }
+        else if (scopeClass.isAssignableFrom(ConversationScoped.class))
+        {
+            startConversationScope();
+        }
+    }
+
+
+    public void stopContext(Class<? extends Annotation> scopeClass)
+    {
+        if (scopeClass.isAssignableFrom(ApplicationScoped.class))
+        {
+            stopApplicationScope();
+        }
+        else if (scopeClass.isAssignableFrom(SessionScoped.class))
+        {
+            stopSessionScope();
+        }
+        else if (scopeClass.isAssignableFrom(RequestScoped.class))
+        {
+            stopRequestScope();
+        }
+        else if (scopeClass.isAssignableFrom(ConversationScoped.class))
+        {
+            stopConversationScope();
+        }
+    }
+
+    /*
+    * start scopes
+    */
+
+    private void startApplicationScope()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        contextFactory.initApplicationContext(servletContext);
+    }
+
+    private void startSessionScope()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        contextFactory.initSessionContext(session);
+    }
+
+    private void startRequestScope()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        contextFactory.initRequestContext(null);
+    }
+
+    private void startConversationScope()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        contextFactory.initConversationContext(null);
+    }
+
+    /*
+     * stop scopes
+     */
+
+    private void stopSingletonScope()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        Context context = contextFactory.getStandardContext(ContextTypes.SINGLETON);
+        if (context != null)
+        {
+            contextFactory.destroySingletonContext(servletContext);
+        }
+    }
+
+    private void stopApplicationScope()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        Context context = contextFactory.getStandardContext(ContextTypes.APPLICATION);
+        if (context != null)
+        {
+            contextFactory.destroyApplicationContext(servletContext);
+        }
+    }
+
+    private void stopSessionScope()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        Context context = contextFactory.getStandardContext(ContextTypes.SESSION);
+        if (context != null)
+        {
+            contextFactory.destroySessionContext(session);
+        }
+    }
+
+    private void stopRequestScope()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        Context context = contextFactory.getStandardContext(ContextTypes.REQUEST);
+        if (context != null)
+        {
+            contextFactory.destroyRequestContext(null);
+        }
+    }
+
+    private void stopConversationScope()
+    {
+        ContextFactory contextFactory = getContextFactory();
+
+        Context context = contextFactory.getStandardContext(ContextTypes.CONVERSATION);
+        if (context != null)
+        {
+            contextFactory.destroyConversationContext();
+        }
+    }
+
+    private ContextFactory getContextFactory()
+    {
+        WebBeansContext webBeansContext = WebBeansContext.getInstance();
+        return webBeansContext.getContextFactory();
+    }
+
+    //--------------------Setter and Getter------------------------------------
+
+    public HttpSession getSession()
+    {
+        return session;
+    }
+
+    public void setSession(HttpSession session)
+    {
+        this.session = session;
+    }
+
+    public ServletContext getServletContext()
+    {
+        return servletContext;
+    }
+
+    public void setServletContext(ServletContext servletContext)
+    {
+        this.servletContext = servletContext;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/ExtScriptStartupPlugin.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/ExtScriptStartupPlugin.java
new file mode 100644
index 0000000..1f5018f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/ExtScriptStartupPlugin.java
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.startup;
+
+import javax.servlet.ServletContextEvent;
+
+import org.apache.myfaces.extensions.scripting.cdi.core.ReloadingListener;
+import org.apache.myfaces.extensions.scripting.core.api.Plugin;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * An Ext-Scripting startup plugin
+ * which is called at the various
+ * stages of the startup lifecycle
+ *
+ * Stage 2 of our startup cycle
+ */
+
+public class ExtScriptStartupPlugin implements Plugin
+{
+    /**
+     * This method is called before myfaces initializes
+     *
+     * @param evt the corresponding servlet context event keeping all the servlet context data and references
+     */
+    public void preInit(ServletContextEvent evt)
+    {
+        //WeavingContext.getInstance().
+        System.out.println("Starting up the jsf subsystem extension");
+    }
+
+    /**
+     * This method is called after myfaces has initialized
+     *
+     * @param evt the corresponding servlet context event keeping all the servlet context data and references
+     */
+    public void postInit(ServletContextEvent evt)
+    {
+       // evt.getServletContext().setAttribute("ReloadingListener", new ReloadingListener());
+      //  WeavingContext.getInstance().addListener((ReloadingListener) evt.getServletContext().getAttribute
+      //      ("ReloadingListener"));
+    }
+
+    /**
+     * This method is called before myfaces is destroyed
+     *
+     * @param evt the corresponding servlet context event keeping all the servlet context data and references
+     */
+    public void preDestroy(ServletContextEvent evt)
+    {
+    }
+
+    /**
+     * This method is called after myfaces is destroyed
+     *
+     * @param evt the corresponding servlet context event keeping all the servlet context data and references
+     */
+    public void postDestroy(ServletContextEvent evt)
+    {
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/StartupExtension.java b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/StartupExtension.java
new file mode 100644
index 0000000..814e2f5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/StartupExtension.java
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.cdi.startup;
+
+import org.apache.myfaces.extensions.scripting.cdi.core.CDIThrowAwayClassloader;
+import org.apache.myfaces.extensions.scripting.core.engine.ThrowAwayClassloader;
+import org.apache.myfaces.extensions.scripting.jsf.startup.StartupServletContextPluginChainLoader;
+
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.AfterDeploymentValidation;
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
+import javax.enterprise.inject.spi.Extension;
+import java.io.IOException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          An extension for cdi which does the initial lifecycle
+ *          trigger from CDI instead of JSF since CDI is enabled
+ *          before JSF we have to do it that way
+ *
+ *          Stage 1 of our startup cycle
+ */
+
+public class StartupExtension implements Extension
+{
+    static ThreadLocal<ClassLoader> _classLoaderHolder = new ThreadLocal<ClassLoader>();
+
+    void beforeBeanDiscovery(@Observes BeforeBeanDiscovery bbd)
+    {
+        //We have to trigger our initial lifecycle with
+        //the compile runs but not with the daemon thread
+        //after that we can load the classes
+        //by temporarily plugging in our throw away classloader
+       _classLoaderHolder.set(Thread.currentThread().getContextClassLoader());
+       Thread.currentThread().setContextClassLoader(new CDIThrowAwayClassloader(Thread.currentThread().getContextClassLoader()));
+    }
+
+    void afterBeanDiscovery(@Observes AfterBeanDiscovery abd)
+    {
+        //here we unplug our temporary classloader
+    }
+
+
+    void afterDeploymentValidation(@Observes AfterDeploymentValidation abv)
+      {
+            Thread.currentThread().setContextClassLoader(_classLoaderHolder.get());
+      }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/licenses/asm-license.txt b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/licenses/asm-license.txt
new file mode 100644
index 0000000..7676ba5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/licenses/asm-license.txt
@@ -0,0 +1,29 @@
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/licenses/facelets-license.txt b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/licenses/facelets-license.txt
new file mode 100644
index 0000000..959625a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/licenses/facelets-license.txt
@@ -0,0 +1,70 @@
+Apache License, Version 2.0
+
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+   1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+   2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+   3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+   4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/beans.xml b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..75d0933
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<beans 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/beans_1_0.xsd">
+</beans>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/openwebbeans/openwebbeans.properties b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/openwebbeans/openwebbeans.properties
new file mode 100644
index 0000000..4200b90
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/openwebbeans/openwebbeans.properties
@@ -0,0 +1,25 @@
+#####################################################################################
+# 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.
+#####################################################################################
+
+configuration.ordinal=12
+
+################################### WEB Scanner Service ####################################
+#Default implementation of org.apache.webbeans.corespi.ScannerService.
+org.apache.webbeans.spi.ScannerService=org.apache.myfaces.extensions.scripting.cdi.core.ExtScriptScannerService
+################################################################################################
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
new file mode 100644
index 0000000..a394685
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
@@ -0,0 +1,20 @@
+#####################################################################################
+# 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.
+#####################################################################################
+
+org.apache.myfaces.extensions.scripting.cdi.startup.StartupExtension
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/services/org.apache.myfaces.extensions.scripting.cdi.api.CdiContainer b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/services/org.apache.myfaces.extensions.scripting.cdi.api.CdiContainer
new file mode 100644
index 0000000..ea989fb
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/services/org.apache.myfaces.extensions.scripting.cdi.api.CdiContainer
@@ -0,0 +1,20 @@
+#####################################################################################
+# 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.
+#####################################################################################
+
+org.apache.myfaces.extensions.scripting.cdi.owb.OpenWebBeansContainerControl
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/services/org.apache.myfaces.extensions.scripting.core.api.Plugin b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/services/org.apache.myfaces.extensions.scripting.core.api.Plugin
new file mode 100644
index 0000000..47f326a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-cdi/src/main/resources/META-INF/services/org.apache.myfaces.extensions.scripting.core.api.Plugin
@@ -0,0 +1,20 @@
+#####################################################################################
+# 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.
+#####################################################################################
+#deprecated not needed anymore
+org.apache.myfaces.extensions.scripting.cdi.startup.ExtScriptStartupPlugin
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/.DS_Store b/extscript-root-1.0.4/extscript-core-root/extscript-core/.DS_Store
new file mode 100644
index 0000000..e5b6784
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/.DS_Store
Binary files differ
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/pom.xml b/extscript-root-1.0.4/extscript-core-root/extscript-core/pom.xml
new file mode 100644
index 0000000..5662431
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/pom.xml
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>extscript-core</artifactId>
+    <version>1.0.4</version>
+    <packaging>jar</packaging>
+    <name>MyFaces Extension Scripting Core</name>
+
+    <description>
+        Core of the MyFaces extensions.scripting
+    </description>
+
+    <parent>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-core-root</artifactId>
+        <version>1.0.4</version>
+    </parent>
+
+    <scm>
+        <connection>
+            scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-core-root/extscript-core
+        </connection>
+        <developerConnection>
+            scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-core-root/extscript-core
+        </developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-core-root/extscript-core</url>
+    </scm>
+
+
+    <dependencies>
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-api</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-impl</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+
+        <dependency>
+            <groupId>commons-beanutils</groupId>
+            <artifactId>commons-beanutils</artifactId>
+            <version>1.8.3</version>
+        </dependency>
+
+        <!-- asm dependency readded for class scanning -->
+        <dependency>
+            <groupId>asm</groupId>
+            <artifactId>asm</artifactId>
+            <version>3.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.xml.stream</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>1.0-2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax</artifactId>
+            <version>1.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-all</artifactId>
+            <version>${groovy.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+
+        <!-- To define the plugin version in your parent POM -->
+
+
+        <plugins>
+
+            <plugin>
+                <groupId>org.codehaus.gmaven</groupId>
+                <artifactId>gmaven-plugin</artifactId>
+                <version>1.2</version>
+                <configuration>
+
+                    <providerSelection>1.7</providerSelection>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generateStubs</goal>
+                            <goal>compile</goal>
+                            <goal>generateTestStubs</goal>
+                            <goal>testCompile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.codehaus.groovy</groupId>
+                        <artifactId>groovy-all</artifactId>
+                        <version>${groovy.version}</version>
+                    </dependency>
+                    <!--
+                    <dependency>
+                        <groupId>org.codehaus.gmaven.runtime</groupId>
+                        <artifactId>gmaven-runtime-1.7</artifactId>
+                        <version>1.2</version>
+                        <exclusions>
+                            <exclusion>
+                                <groupId>org.codehaus.groovy</groupId>
+                                <artifactId>groovy-all</artifactId>
+                            </exclusion>
+                        </exclusions>
+                    </dependency>
+                    -->
+                </dependencies>
+            </plugin>
+            <!-- scala tools plugin -->
+            <plugin>
+                <groupId>org.scala-tools</groupId>
+                <artifactId>maven-scala-plugin</artifactId>
+                <executions>
+
+                    <execution>
+                        <id>compile</id>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                        <phase>compile</phase>
+                    </execution>
+                    <execution>
+                        <id>test-compile</id>
+                        <goals>
+                            <goal>testCompile</goal>
+                        </goals>
+                        <phase>test-compile</phase>
+                    </execution>
+                    <execution>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.scala-lang</groupId>
+                        <artifactId>scala-library</artifactId>
+                        <version>${scala-library.version}</version>
+                    </dependency>
+
+
+                    <dependency>
+                        <groupId>org.scala-lang</groupId>
+                        <artifactId>scala-compiler</artifactId>
+                        <version>${scala-library.version}</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+            <!--
+                we reuse the maven shader plugin to get rid of the
+                asm transitive dependency in the final build
+                what we will do simply is to relocate the original
+                asm packages into our own namespace to avoid
+                name conflicts
+             -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>1.3.3</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <artifactSet>
+                        <includes>
+                            <artifact>asm:asm</artifact>
+                        </includes>
+                    </artifactSet>
+                    <relocations>
+                        <relocation>
+                            <pattern>org.objectweb.asm</pattern>
+                            <shadedPattern>org.apache.myfaces.extensions.scripting.org.objectweb.asm</shadedPattern>
+                        </relocation>
+                    </relocations>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <!--
+            - Build and install into the repository some additional artifacts that we don't
+            - want to build during normal development because they take too long.
+            -->
+            <id>generate-assembly</id>
+            <activation>
+                <property>
+                    <name>performRelease</name>
+                    <value>true</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <!-- Install in the repository a "-javadoc.jar" file -->
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                        <version>2.8</version>
+                        <executions>
+                            <execution>
+                                <id>attach-javadoc</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <!-- Install in the repository a "-sources.jar" file -->
+                        <artifactId>maven-source-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>attach-source</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/groovy/org/apache/myfaces/extensions/scripting/groovyloader/core/GroovyPropertyMapper.groovy b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/groovy/org/apache/myfaces/extensions/scripting/groovyloader/core/GroovyPropertyMapper.groovy
new file mode 100644
index 0000000..4067b75
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/groovy/org/apache/myfaces/extensions/scripting/groovyloader/core/GroovyPropertyMapper.groovy
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.groovyloader.core
+
+
+
+
+public class GroovyPropertyMapper
+{
+
+
+  public GroovyPropertyMapper() {
+    super();
+  }
+
+  /**
+   * central algorithm which determines which property values are overwritten and which are not
+   */
+  public static void mapProperties(def target, def src) {
+    src.properties.each {property ->
+      //ok here is the algorithm, basic datatypes usually are not copied but read in anew and then overwritten
+      //later on
+      //all others can be manually overwritten by adding an attribute <attributename>_changed
+
+      try {
+        if (target.properties.containsKey(property.key)
+                && !property.key.equals("metaClass")        //the class information and meta class information cannot be changed
+                && !property.key.equals("class")            //otherwise we will get following error
+                // java.lang.IllegalArgumentException: object is not an instance of declaring class
+                && !(
+        target.properties.containsKey(property.key + "_changed") //||
+        //nothing further needed the phases take care of that
+        )) {
+          target.setProperty(property.key, property.value)
+        }
+      } catch (Exception e) {
+
+      }
+    }
+  }
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/AnnotationScanListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/AnnotationScanListener.java
new file mode 100644
index 0000000..f9891f1
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/AnnotationScanListener.java
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.api;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          We use a source code artifact observer here to register the
+ *          meta data in the correct registry entries
+ */
+
+public interface AnnotationScanListener extends ClassScanListener
+{
+
+    /**
+     * returns true if the annotation marked by the incoming parameter is supported by this scanner
+     *
+     * @param annotation the supported annotation as neutral string representation of its class
+     * @return in case of support
+     */
+    public boolean supportsAnnotation(String annotation);
+
+    /**
+     * returns true if the annotation marked by the incoming parameter is supported by this scanner
+     *
+     * @param annotation the supported annotation as neutral string representation of its class
+     * @return in case of support
+     */
+    public boolean supportsAnnotation(Class annotation);
+
+
+    /**
+     * Class file registration of the supported annotation
+     *
+     * @param clazz          the class to be registered
+     * @param annotationName the annotation for the class
+     */
+    public void register(Class clazz, Annotation annotationName);
+
+    /**
+     * Purges the class from the correct places of the myfaces registry
+     * so that the artifact is not reachable anymore
+     *
+     * @param className the class name for the class which needs to be purged
+     */
+    public void purge(String className);
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ClassScanListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ClassScanListener.java
new file mode 100644
index 0000000..573a32c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ClassScanListener.java
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.api;
+
+/**
+ * Observer interface which will be the base
+ * of a future event system
+ * (note currently unused)
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface ClassScanListener {
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java
new file mode 100644
index 0000000..c9c25a9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java
@@ -0,0 +1,335 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api;
+
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.FactoryEngines;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.lang.ref.WeakReference;
+import java.net.MalformedURLException;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentSkipListSet;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_GROOVY;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_JAVA;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.GROOVY_FILE_ENDING;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_INITIAL_COMPILE;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_RESOURCE_PATH;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_SCRIPTING_ADDITIONAL_CLASSPATH;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_SCRIPTING_PACKAGE_WHITELIST;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.JAVA_FILE_ENDING;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class Configuration
+{
+    private static final String WEB_INF_CLASSES = "/WEB-INF/classes";
+    List<String> _additionalClassPath = new CopyOnWriteArrayList<String>();
+    /**  kk
+     * the package whitelist used by our system
+     * to determine which packages are under control.
+     * <p/>
+     * Note an empty whitelist means, all packages with sourcedirs attached to.
+     */
+    Set<String> _packageWhiteList = new ConcurrentSkipListSet<String>();
+    /**
+     * we keep track of separate resource dirs
+     * for systems which can use resource loaders
+     * <p/>
+     * so that we can load various resources as well
+     * from separate source directories instead
+     */
+    volatile List<String> _resourceDirs = new CopyOnWriteArrayList<String>();
+
+    String _initialCompile;
+
+    WeakReference<ServletContext> _contextWeakReference = null;
+
+    /**
+     * the target compile path
+     */
+    volatile File _compileTarget = FileUtils.getTempDir();
+
+    /**
+     * the source dirs per scripting engine
+     */
+    volatile Map<Integer, CopyOnWriteArrayList<String>> _sourceDirs = new ConcurrentHashMap<Integer, CopyOnWriteArrayList<String>>();
+
+    public Configuration(ServletContext context)
+    {
+        init(context);
+    }
+
+    public Configuration()
+    {
+    }
+
+
+    private Collection<String> performWildCardSearch(String classPathEntry) {
+
+        if(classPathEntry.toLowerCase().endsWith("*.jar")|| classPathEntry.toLowerCase().endsWith("*.zip")){
+            //peform a full search of jars on the dir
+            classPathEntry = classPathEntry.substring(0, classPathEntry.length()-5);
+            File classPathDir = new File(classPathEntry);
+            String[] foundFiles = classPathDir.list(new FilenameFilter() {
+                @Override
+                public boolean accept(File dir, String name) {
+                    return name.toLowerCase().endsWith(".jar") || name.toLowerCase().endsWith(".zip");
+                }
+            });
+            if(foundFiles == null) {
+                return Collections.emptyList();
+            }
+            ArrayList<String> retVal = new ArrayList<String>(foundFiles.length);
+            for(String foundFile: foundFiles) {
+                retVal.add(classPathEntry+foundFile);
+            }
+            return retVal;
+        }
+        return Arrays.asList(new String[] {classPathEntry});
+    }
+
+    public void init(ServletContext context)
+    {
+        String packageWhiteList = context.getInitParameter(INIT_PARAM_SCRIPTING_PACKAGE_WHITELIST);
+        packageWhiteList = (packageWhiteList == null) ? "" : packageWhiteList;
+        _packageWhiteList.addAll(Arrays.asList(packageWhiteList.split("\\,")));
+
+        String additionalClassPath = context.getInitParameter(INIT_PARAM_SCRIPTING_ADDITIONAL_CLASSPATH);
+        additionalClassPath = (additionalClassPath == null) ? "" : additionalClassPath;
+        String[] additionalClassPaths = additionalClassPath.split("\\,");
+        for(String cp: additionalClassPaths) {
+            _additionalClassPath.addAll(performWildCardSearch(cp));
+        }
+
+        _additionalClassPath.addAll(Arrays.asList(additionalClassPaths));
+
+        String resourcePath = context.getInitParameter(INIT_PARAM_RESOURCE_PATH);
+        resourcePath = (resourcePath == null) ? "" : resourcePath;
+        _resourceDirs.addAll(Arrays.asList(resourcePath.split("\\,")));
+
+        _initialCompile = context.getInitParameter(INIT_PARAM_INITIAL_COMPILE);
+        //_additionalClassPath = context.getInitParameter(INIT_PARAM_SCRIPTING_ADDITIONAL_CLASSPATH);
+
+        for (ScriptingEngine engine : FactoryEngines.getInstance().getEngines())
+        {
+            engine.init(context);
+        }
+
+        _contextWeakReference = new WeakReference<ServletContext>(context);
+    }
+
+    public String getFileEnding(int scriptingEngine)
+    {
+        switch (scriptingEngine)
+        {
+            case ENGINE_TYPE_JSF_JAVA:
+                return JAVA_FILE_ENDING;
+            case ENGINE_TYPE_JSF_GROOVY:
+                return GROOVY_FILE_ENDING;
+            default:
+                throw new UnsupportedOperationException("Engine type unknown");
+        }
+    }
+
+    public Collection<String> getSourceDirs(int scriptingEngine)
+    {
+        return WeavingContext.getInstance().getEngine(scriptingEngine).getSourcePaths();
+    }
+
+    /**
+     * returns a set of whitelisted subdirs hosting the source
+     *
+     * @param scriptingEngine the scripting engine for which the dirs have to be determined
+     *                        (note every scripting engine has a unique integer value)
+     * @return the current whitelisted dirs hosting the sources
+     */
+    public Collection<String> getWhitelistedSourceDirs(int scriptingEngine)
+    {
+        Collection<String> origSourceDirs = getSourceDirs(scriptingEngine);
+        if (_packageWhiteList.isEmpty())
+        {
+            return origSourceDirs;
+        }
+
+        return mergeWhitelisted(origSourceDirs);
+    }
+
+    /**
+     * merges the whitelisted packages with the sourcedirs and generates a final list
+     * which left join of both sets - the ones which do not exist in reality
+     *
+     * @param origSourceDirs the original source dirs
+     * @return the joined existing subset of all directories which exist
+     */
+    private Collection<String> mergeWhitelisted(Collection<String> origSourceDirs)
+    {
+        List<String> retVal = new ArrayList<String>(_packageWhiteList.size() * origSourceDirs.size() + origSourceDirs.size());
+
+        for (String whitelisted : _packageWhiteList)
+        {
+            whitelisted = whitelisted.replaceAll("\\.", FileUtils.getFileSeparatorForRegex());
+            for (String sourceDir : origSourceDirs)
+            {
+                String newSourceDir = sourceDir + File.separator + whitelisted;
+                if ((new File(newSourceDir)).exists())
+                {
+                    retVal.add(newSourceDir);
+                }
+            }
+        }
+        return retVal;
+    }
+
+    //----------------------- standard setter and getter --------------------------------------
+
+    /**
+     * Add a new source dir for the corresponding scripting engine
+     *
+     * @param scriptingEngine integer value marking the corresponding engine
+     * @param sourceDir       the source directory added to the existing source dir list
+     */
+    public void addSourceDir(int scriptingEngine, String sourceDir)
+    {
+        if (!WeavingContext.getInstance().getEngine(scriptingEngine).getSourcePaths().contains(sourceDir))
+            WeavingContext.getInstance().getEngine(scriptingEngine).getSourcePaths().add(sourceDir);
+    }
+
+    public String getSystemClasspath() {
+        return System.getProperty("java.class.path");
+    }
+    
+    public List<String> getJarPaths()
+    {
+        ServletContext context = _contextWeakReference.get();
+        Collection<String> relativePaths = _contextWeakReference.get().getResourcePaths("/WEB-INF/lib");
+        List<String> ret = new ArrayList<String>(relativePaths.size());
+        for (String jarPath : relativePaths)
+        {
+            try
+            {
+                ret.add(context.getResource(jarPath).getFile());
+            }
+            catch (MalformedURLException e)
+            {
+                e.printStackTrace();
+            }
+        }
+        return ret;
+    }
+
+    public List<String> getClassesPaths()
+    {
+        ServletContext context = _contextWeakReference.get();
+        Collection<String> relativePaths = _contextWeakReference.get().getResourcePaths(WEB_INF_CLASSES);
+        List<String> ret = new ArrayList<String>(relativePaths.size());
+        for (String jarPath : relativePaths)
+        {
+            try
+            {
+                String file = context.getResource(jarPath).getFile();
+                int pos = file.indexOf(WEB_INF_CLASSES);
+                file = file.substring(0, pos + WEB_INF_CLASSES.length());
+                ret.add(file);
+            }
+            catch (MalformedURLException e)
+            {
+                e.printStackTrace();
+            }
+        }
+        return ret;
+    }
+
+    public List<String> getAdditionalClassPath()
+    {
+        return _additionalClassPath;
+    }
+
+    public void setAdditionalClassPath(List<String> additionalClassPath)
+    {
+        _additionalClassPath = additionalClassPath;
+    }
+
+    public void addAdditionalClassPath(String additionalClassPath)
+    {
+        _additionalClassPath.add(additionalClassPath);
+    }
+
+    public Set<String> getPackageWhiteList()
+    {
+        return _packageWhiteList;
+    }
+
+    public void setPackageWhiteList(Set<String> packageWhiteList)
+    {
+        _packageWhiteList = packageWhiteList;
+    }
+
+    public void addWhitelistPackage(String pckg)
+    {
+        _packageWhiteList.add(pckg);
+    }
+
+    public List<String> getResourceDirs()
+    {
+        return _resourceDirs;
+    }
+
+    public void setResourceDirs(List<String> resourceDirs)
+    {
+        _resourceDirs = resourceDirs;
+    }
+
+    public void addResourceDir(String resourceDir)
+    {
+        _resourceDirs.add(resourceDir);
+    }
+
+    public String getInitialCompile()
+    {
+        return _initialCompile;
+    }
+
+    public void setInitialCompile(String initialCompile)
+    {
+        _initialCompile = initialCompile;
+    }
+
+    public File getCompileTarget()
+    {
+        return _compileTarget;
+    }
+
+    public void setCompileTarget(File compileTarget)
+    {
+        _compileTarget = compileTarget;
+    }
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Decorated.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Decorated.java
new file mode 100644
index 0000000..923a0a1
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Decorated.java
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.api;
+
+/**
+ * General decoration interface
+ * for the Decorator pattern
+ *
+ * @author Werner Punz
+ */
+public interface Decorated
+{
+    public Object getDelegate();
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ImplementationService.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ImplementationService.java
new file mode 100644
index 0000000..5daa42c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ImplementationService.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.api;
+
+import javax.servlet.ServletContext;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ * SPI Interface which ever implementation
+ * connector has to implement
+ * This spi is mirrored into the WeavingContext
+ */
+public interface ImplementationService
+{
+    public void registerClassloadingExtension(ServletContext context);
+    public Class forName(String clazz);
+    public void refreshManagedBeans();
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Plugin.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Plugin.java
new file mode 100644
index 0000000..be01ebd
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Plugin.java
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api;
+
+import javax.servlet.ServletContextEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * Plugin SPI which is called in different phases of the startup process
+ */
+public interface Plugin
+{
+    /**
+      * This method is called before myfaces initializes
+      *
+      * @param evt the corresponding servlet context event keeping all the servlet context data and references
+      */
+     public void preInit(ServletContextEvent evt);
+
+     /**
+      * This method is called after myfaces has initialized
+      *
+      * @param evt the corresponding servlet context event keeping all the servlet context data and references
+      */
+     public void postInit(ServletContextEvent evt);
+
+     /**
+      * This method is called before myfaces is destroyed
+      *
+      * @param evt the corresponding servlet context event keeping all the servlet context data and references
+      */
+     public void preDestroy(ServletContextEvent evt);
+
+     /**
+      * This method is called after myfaces is destroyed
+      *
+      * @param evt the corresponding servlet context event keeping all the servlet context data and references
+      */
+     public void postDestroy(ServletContextEvent evt);
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ReloadingStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ReloadingStrategy.java
new file mode 100644
index 0000000..fa4566e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ReloadingStrategy.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.api;
+
+
+/**
+ * <p/>
+ * Generic strategy for reloading
+ * this should encapsulate various
+ * reloading strategies
+ * which have to be applied depending
+ * on the artifact
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface ReloadingStrategy {
+    /**
+     * Reload method which is the central point for this
+     * strategy pattern
+     *
+     * @param toReload     the object to be reloaded
+     * @param engineType   the engine type to reload
+     * @param artifactType the artifact type to be reloaded (so that the pattern either can ignore it or use it)
+     * @return either the original or the reloaded artifact depending on its type and state
+     */
+    public Object reload(Object toReload, int engineType, int artifactType);
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java
new file mode 100644
index 0000000..a8584c1
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java
@@ -0,0 +1,129 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * common constants shared amont the scriping configuration
+ */
+
+public class ScriptingConst
+{
+
+    public static final String SCRIPTING_CLASSLOADER = "org.apache.myfaces.extensions.SCRIPTING_CLASSLOADER";
+    public static final String SCRIPTING_GROOVFACTORY = "org.apache.myfaces.extensions.SCRIPTING_GROOVYFACTORY";
+    public static final String SCRIPTING_REQUSINGLETON = "org.apache.myfaces.extensions.SCRIPTING_REQUSINGLETON";
+
+    public static final String INIT_PARAM_SCRIPTING_PACKAGE_WHITELIST = "org.apache.myfaces.extensions.scripting.PGK_WHITELIST";
+    public static final String INIT_PARAM_SCRIPTING_ADDITIONAL_CLASSPATH = "org.apache.myfaces.extensions.scripting.ADDITIONAL_CLASSPATH";
+    public static final String INIT_PARAM_RESOURCE_PATH = "org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS";
+    public static final String INIT_PARAM_CUSTOM_GROOVY_LOADER_PATHS = "org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS";
+    public static final String INIT_PARAM_CUSTOM_SCALA_LOADER_PATHS = "org.apache.myfaces.extensions.scripting.scala" +
+            ".LOADER_PATHS";
+    //TODO add this
+
+
+    public static final String INIT_PARAM_CUSTOM_JAVA_LOADER_PATHS = "org.apache.myfaces.extensions.scripting.java.LOADER_PATHS";
+    public static final String INIT_PARAM_INITIAL_COMPILE="org.apache.myfaces.extensions.scripting.INITIAL_COMPILE_AND_SCAN";
+    public static final String INIT_PARAM_MYFACES_PLUGIN = "org.apache.myfaces.FACES_INIT_PLUGINS";
+
+    public static final String EXT_VAL_MARKER="org.apache.myfaces.extensions.validator";
+
+    public static final String CONTEXT_VALUE_DIVIDER = ",";
+
+    public static final String RELOAD_MAP = "reloadMap";
+    public static final String SESS_BEAN_REFRESH_TIMER = "sessbeanrefrsh";
+
+    public static final int TAINT_INTERVAL = 2000;
+
+    public static final int ENGINE_TYPE_JSF_ALL = -2;
+    public static final int ENGINE_TYPE_JSF_NO_ENGINE = -1;
+    public static final int ENGINE_TYPE_JSF_GROOVY = 0;
+    public static final int ENGINE_TYPE_JSF_JAVA = 1;
+    public static final int ENGINE_TYPE_JSF_SCALA = 2;
+    public static final int ARTIFACT_TYPE_UNKNOWN = -1;
+    public static final int ARTIFACT_TYPE_MANAGEDBEAN = 1;
+    public static final int ARTIFACT_TYPE_MANAGEDPROPERTY = 2;
+    public static final int ARTIFACT_TYPE_RENDERKIT = 3;
+    public static final int ARTIFACT_TYPE_VIEWHANDLER = 4;
+    public static final int ARTIFACT_TYPE_RENDERER = 5;
+    public static final int ARTIFACT_TYPE_COMPONENT = 6;
+    public static final int ARTIFACT_TYPE_VALIDATOR = 7;
+    public static final int ARTIFACT_TYPE_BEHAVIOR = 8;
+    public static final int ARTIFACT_TYPE_APPLICATION = 9;
+    public static final int ARTIFACT_TYPE_ELCONTEXTLISTENER = 10;
+    public static final int ARTIFACT_TYPE_ACTIONLISTENER = 11;
+    public static final int ARTIFACT_TYPE_VALUECHANGELISTENER = 12;
+    public static final int ARTIFACT_TYPE_CONVERTER = 13;
+    public static final int ARTIFACT_TYPE_LIFECYCLE = 14;
+    public static final int ARTIFACT_TYPE_PHASELISTENER = 15;
+    public static final int ARTIFACT_TYPE_FACESCONTEXT = 16;
+    public static final int ARTIFACT_TYPE_NAVIGATIONHANDLER = 17;
+    public static final int ARTIFACT_TYPE_RESPONSEWRITER = 18;
+    public static final int ARTIFACT_TYPE_RESPONSESTREAM = 19;
+    public static final int ARTIFACT_TYPE_RESOURCEHANDLER = 19;
+    public static final int ARTIFACT_TYPE_CLIENTBEHAVIORRENDERER = 20;
+    public static final int ARTIFACT_TYPE_SYSTEMEVENTLISTENER = 21;
+
+    //faclets artifacts
+    public static final int ARTIFACT_TYPE_TAG_HANDLER = 22;
+    public static final int ARTIFACT_TYPE_COMPONENT_HANDLER = 23;
+    public static final int ARTIFACT_TYPE_VALIDATOR_HANDLER = 24;
+    public static final int ARTIFACT_TYPE_CONVERTER_HANDLER = 25;
+    public static final int ARTIFACT_TYPE_BEHAVIOR_HANDLER = 26;
+
+    public static final String CTX_ATTR_REQUEST_CNT = "RequestCnt";
+    public static final String CTX_ATTR_CONFIGURATION = "ExtScriptingConfig";
+    public static final String CTX_ATTR_STARTUP = "ExtScriptingStartup";
+    public static final String CTX_ATTR_SCRIPTING_WEAVER = "ScriptingWeaver";
+    public static final String CTX_ATTR_REFRESH_CONTEXT = "RefreshContext";
+    public static final String CTX_ATTR_EXTENSION_EVENT_SYSTEM = "ExtEventSystem";
+
+    public static final String FILE_EXTENSION_GROOVY = ".groovy";
+    public static final String GROOVY_FILE_ENDING = ".groovy";
+    public static final String JAVA_FILE_ENDING = ".java";
+    public static final String SCALA_FILE_ENDING = ".scala";
+    public static final String JSR199_COMPILER = "org.apache.myfaces.extensions.scripting.loaders.java.jsr199.JSR199Compiler";
+    public static final String JAVA5_COMPILER = "org.apache.myfaces.extensions.scripting.loaders.java.compiler.JavacCompiler";
+    public static final String SCOPE_SESSION = "session";
+    public static final String SCOPE_APPLICATION = "application";
+    public static final String SCOPE_REQUEST = "request";
+    public static final String GROOVY_SOURCE_ROOT = "/WEB-INF/groovy/";
+    public static final String SCALA_SOURCE_ROOT = "/WEB-INF/scala/";
+
+    public static final String JAVA_SOURCE_ROOT = "/WEB-INF/java/";
+    public static final String ERR_SERVLET_FILTER = "[EXT-SCRIPTING] The servlet filter has not been set, please check your web.xml for following entries:" +
+            "\n    <filter>\n" +
+            "        <filter-name>scriptingFilter</filter-name>\n" +
+            "        <filter-class>org.apache.myfaces.extensions.scripting.servlet.ScriptingServletFilter</filter-class>\n" +
+            "    </filter>\n" +
+            "    <filter-mapping>\n" +
+            "        <filter-name>scriptingFilter</filter-name>\n" +
+            "        <url-pattern>/*</url-pattern>\n" +
+            "        <dispatcher>REQUEST</dispatcher>\n" +
+            "        <dispatcher>FORWARD</dispatcher>\n" +
+            "        <dispatcher>INCLUDE</dispatcher>\n" +
+            "        <dispatcher>ERROR</dispatcher>\n" +
+            "    </filter-mapping>";
+    static final String EXT_VAL_REQ_KEY = "org.apache.myfaces.extension.scripting.clearExtvalCache_Done";
+    public static final String JAVAX_FACES = "javax.faces";
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java
new file mode 100644
index 0000000..82facc4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java
@@ -0,0 +1,695 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api;
+
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEventListener;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.events.BeginCompiling;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.events.EndCompiling;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import org.apache.myfaces.extensions.scripting.core.engine.FactoryEngines;
+import org.apache.myfaces.extensions.scripting.core.engine.ThrowAwayClassloader;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ClassScanner;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+import org.apache.myfaces.extensions.scripting.core.monitor.WatchedResource;
+import org.apache.myfaces.extensions.scripting.core.reloading.GlobalReloadingStrategy;
+import org.apache.myfaces.extensions.scripting.core.reloading.MethodLevelReloadingHandler;
+import org.apache.myfaces.extensions.scripting.jsf.adapters.MyFacesSPI;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Central weaving context
+ */
+
+public class WeavingContext
+{
+    static final Logger log = Logger.getLogger(WeavingContext.class.getName());
+
+    /**
+     * lock var which can be used for recompilation
+     */
+    public AtomicBoolean recompileLock = new AtomicBoolean(false);
+    /**
+     * configuration which stores all external configuration entries
+     */
+    protected Configuration configuration = new Configuration();
+
+    //ClassDependencies _dependencyMap = new ClassDependencies();
+    /**
+     * Service provider for the implementation under which this extension
+     * runs
+     */
+    ImplementationService _implementation = null;
+    /**
+     * the collection of reloading strategies depending on their artifact type
+     */
+    GlobalReloadingStrategy _reloadingStrategy = new GlobalReloadingStrategy();
+    /**
+     * the annotation scanning reference
+     */
+    ClassScanner _annotationScanner = null;
+
+    /**
+     * true only if the startup has performed without errors
+     */
+    boolean _scriptingEnabled = true;
+
+    /**
+     * holder for various operations within our lifecycle
+     */
+    ConcurrentHashMap<String, Long> lifecycleRegistry = new ConcurrentHashMap<String, Long>();
+
+    WeakHashMap<WeavingEventListener, String> _listeners = new WeakHashMap<WeavingEventListener, String>();
+    
+    /**
+     * This is a log which keeps track of the taints
+     * over time, we need that mostly for bean refreshes
+     * in multiuser surroundings, because only tainted beans need
+     * to be refreshed.
+     * Now if a user misses multiple updates he has to get a full
+     * set of changed classes to be able to drop all personal scoped beans tainted
+     * since the he refreshed last! Hence we have to move away from our
+     * two dimensional &lt;class, taint&gt; to a three dimensional &lt;class, taint, time&gt;
+     * view of things
+     */
+    private List<TaintingHistoryEntry> _taintLog = Collections.synchronizedList(new LinkedList<TaintingHistoryEntry>());
+
+    /**
+     * compilation results holder for the compiler listeners (components etc...)
+     */
+    private static final Map<Integer, CompilationResult> _compilationResults = new ConcurrentHashMap<Integer, CompilationResult>();
+
+    /**
+     * we keep a 10 minutes timeout period to keep the performance in place
+     */
+    private final long TAINT_HISTORY_TIMEOUT = 10 * 60 * 1000;
+
+    /**
+     * internal class used by our own history log
+     */
+    static class TaintingHistoryEntry
+    {
+        long _timestamp;
+        ClassResource _data;
+
+        public TaintingHistoryEntry(ClassResource data)
+        {
+            _data = data;
+            _timestamp = System.currentTimeMillis();
+        }
+
+        public long getTimestamp()
+        {
+            return _timestamp;
+        }
+
+        public ClassResource getData()
+        {
+            return _data;
+        }
+    }
+
+    
+    public void addListener(WeavingEventListener listener) {
+        if(!_listeners.containsKey(listener)) {
+            _listeners.put(listener,"");
+        }
+    }
+    
+    public void removeListener(WeavingEventListener listener) {
+        _listeners.remove(listener);
+    }
+    
+    public void sendWeavingEvent(WeavingEvent evt) {
+        for(WeavingEventListener listener: _listeners.keySet()) {
+            listener.onEvent(evt);
+        }
+    }
+    
+    public void initEngines() throws IOException
+    {
+        FactoryEngines.getInstance().init();
+        initScanner();
+    }
+
+    public void initScanner()
+    {
+        try
+        {
+            Class scanner = ClassUtils.getContextClassLoader().loadClass("org.apache.myfaces.extensions.scripting.jsf.annotation.GenericAnnotationScanner");
+            this._annotationScanner = (ClassScanner) ReflectUtil.instantiate(scanner);
+
+        }
+        catch (ClassNotFoundException e)
+        {
+            //we do nothing here
+            //generic annotation scanner can be missing in jsf 1.2 environments
+            //_logger.log(Level.FINER, "", e);
+        }
+    }
+
+    public Collection<ScriptingEngine> getEngines()
+    {
+        return FactoryEngines.getInstance().getEngines();
+    }
+
+    public ScriptingEngine getEngine(int engineType)
+    {
+        return FactoryEngines.getInstance().getEngine(engineType);
+    }
+
+    public ScriptingEngine getAssociatedEngine(Object artifact) {
+        for(ScriptingEngine engine : getEngines()) {
+            if(engine.isArtifactOfEngine(artifact)) return engine;
+        }
+        return null;
+    }
+    
+    
+    /**
+     * returns the mitable watche resource maps for the various engines
+     *
+     * @return
+     */
+    public Map<Integer, Map<String, ClassResource>> getWatchedResources()
+    {
+        Map<Integer, Map<String, ClassResource>> ret = new HashMap<Integer, Map<String, ClassResource>>();
+        for (ScriptingEngine engine : getEngines())
+        {
+            ret.put(engine.getEngineType(), engine.getWatchedResources());
+        }
+        return ret;
+    }
+
+    /**
+     * @return a map of all watched resources over all engines
+     */
+    public Map<String, ClassResource> getAllWatchedResources()
+    {
+        Map<String, ClassResource> ret = new HashMap<String, ClassResource>();
+        for (ScriptingEngine engine : getEngines())
+        {
+            Map<String, ClassResource> watchedResourceMap = engine.getWatchedResources();
+            for (Map.Entry<String, ClassResource> entry : watchedResourceMap.entrySet())
+            {
+                ret.put(entry.getKey(), entry.getValue());
+            }
+        }
+        return ret;
+    }
+
+    /**
+     * @param key the watched resource classname
+     * @return the watched resource from the given key or null
+     */
+    public ClassResource getWatchedResource(String key)
+    {
+        for (ScriptingEngine engine : getEngines())
+        {
+            if (!engine.getWatchedResources().containsKey(key)) continue;
+            return engine.getWatchedResources().get(key);
+        }
+        return null;
+    }
+
+    public Collection<ClassResource> getTaintedClasses(int scriptingEngine) {
+            Map<String, ClassResource> watchedResources = getEngine(scriptingEngine).getWatchedResources();
+            List<ClassResource> res = new LinkedList<ClassResource>();
+            for(Map.Entry<String, ClassResource> entry: watchedResources.entrySet()) {
+                if(entry.getValue().isTainted()) {
+                    res.add(entry.getValue());
+                }
+            }
+            return res;
+        }
+
+
+    public Collection<ClassResource> getTaintedClasses() {
+        Map<String, ClassResource> watchedResources = getAllWatchedResources();
+        List<ClassResource> res = new LinkedList<ClassResource>();
+        for(Map.Entry<String, ClassResource> entry: watchedResources.entrySet()) {
+            if(entry.getValue().isTainted()) {
+                res.add(entry.getValue());
+            }
+        }
+        return res;
+    }
+    
+    /**
+     * checks if a resource idenified by key is tainted
+     *
+     * @param key the identifier for the resource
+     * @return true in case of being tainted
+     */
+    public boolean isTainted(String key)
+    {
+        ClassResource res = getWatchedResource(key);
+        if (res == null) return false;
+        return res.isTainted();
+    }
+
+    public Set<String> loadPossibleDynamicClasses()
+    {
+        return getAllWatchedResources().keySet();
+    }
+
+    public Configuration getConfiguration()
+    {
+        return configuration;
+    }
+
+    public void setConfiguration(Configuration configuration)
+    {
+        this.configuration = configuration;
+    }
+
+    public boolean needsRecompile()
+    {
+        for (ScriptingEngine engine : getEngines())
+        {
+            //log.info("[EXT-SCRIPTING] scanning " + engine.getEngineType() + " files");
+            if (engine.needsRecompile()) return true;
+            //log.info("[EXT-SCRIPTING] scanning " + engine.getEngineType() + " files done");
+        }
+        return false;
+    }
+
+    public void fullScan()
+    {
+        for (ScriptingEngine engine : getEngines())
+        {
+            engine.scanForAddedDeleted();
+        }
+        //the scanner scans only the tainted classes
+        //hence this should work whatever happens
+
+    }
+
+    public void annotationScan()
+    {
+        if (_annotationScanner != null)
+            _annotationScanner.scanPaths();
+    }
+
+    public boolean compile()
+    {
+        boolean compile = false;
+        for (ScriptingEngine engine : getEngines())
+        {
+            if (!engine.needsRecompile()) continue;
+            sendWeavingEvent(new BeginCompiling());
+
+            compile = true;
+            log.info("[EXT-SCRIPTING] compiling " + engine.getEngineTypeAsStr() + " files");
+            CompilationResult result = engine.compile();
+            if(result != null) {
+                WeavingContext.getInstance().setCompilationResult(engine.getEngineType(), result);
+            }
+            sendWeavingEvent(new EndCompiling());
+            log.info("[EXT-SCRIPTING] compiling " + engine.getEngineTypeAsStr() + " files done");
+        }
+        return compile;
+    }
+
+    public void scanDependencies()
+    {
+        for (ScriptingEngine engine : getEngines())
+        {
+            if (engine.isTainted())
+            {
+                log.info("[EXT-SCRIPTING] scanning " + engine.getEngineTypeAsStr() + " dependencies");
+                engine.scanDependencies();
+                log.info("[EXT-SCRIPTING] scanning " + engine.getEngineTypeAsStr() + " dependencies end");
+            }
+        }
+    }
+
+    public void markTaintedDependends()
+    {
+        for (ScriptingEngine engine : getEngines())
+        {
+            engine.markTaintedDependencies();
+        }
+    }
+
+    public WatchedResource getResource(String className)
+    {
+        WatchedResource ret = null;
+        for (ScriptingEngine engine : getEngines())
+        {
+            ret = engine.getWatchedResources().get(className);
+            if (ret != null) return ret;
+        }
+        return ret;
+    }
+
+    public boolean isDynamic(Class clazz)
+    {
+        return (clazz.getClassLoader() instanceof ThrowAwayClassloader)/*<> || (clazz.getClassLoader() instanceof
+            ScannerClassloader))*/;
+    }
+
+    /**
+     * we create a proxy to an existing object
+     * which does reloading of the internal class
+     * on method level
+     * <p/>
+     * this works only on classes which implement contractual interfaces
+     * it cannot work on things like the navigation handler
+     * which rely on base classes
+     *
+     * @param o            the source object to be proxied
+     * @param theInterface the proxying interface
+     * @param artifactType the artifact type to be reloaded
+     * @return a proxied reloading object of type theInterface
+     */
+    public Object createMethodReloadingProxyFromObject(Object o, Class theInterface, int artifactType)
+    {
+        //if (!isScriptingEnabled()) {
+        //    return o;
+        //}
+        return Proxy.newProxyInstance(o.getClass().getClassLoader(),
+                new Class[]{theInterface},
+                new MethodLevelReloadingHandler(o, artifactType));
+    }
+
+    public Class forName(String name) {
+        return _implementation.forName(name);
+    }
+    
+    /**
+     * reload the class dynamically
+     */
+    public Class reload(Class clazz)
+    {
+        if (!isDynamic(clazz)) return clazz;
+        ClassResource resource = (ClassResource) getResource(clazz.getName());
+        if (resource == null) return clazz;
+        if (resource.isTainted() || resource.getAClass() == null)
+        {
+            clazz = _implementation.forName(clazz.getName());
+            //TODO not needed anymore, done by the forName now
+            resource.setAClass(clazz);
+        }
+        return clazz;
+    }
+
+    public Object reload(Object instance,  int strategyType)
+    {
+        int engineType = getAssociatedEngine(instance).getEngineType();
+
+        return _reloadingStrategy.reload(instance, engineType, strategyType);
+    }
+
+    /**
+     * we create a proxy to an existing object
+     * which does reloading of the internal class
+     * on newInstance level
+     *
+     * @param o            the original object
+     * @param theInterface the proxy interface
+     * @param artifactType the artifact type to be handled
+     * @return the proxy of the object if scripting is enabled, the original one otherwise
+     */
+    @SuppressWarnings("unused")
+    public static Object createConstructorReloadingProxyFromObject(Object o, Class theInterface, int artifactType)
+    {
+        //if (!isScriptingEnabled()) {
+        //    return o;
+        //}
+        return Proxy.newProxyInstance(o.getClass().getClassLoader(),
+                new Class[]{theInterface},
+                new MethodLevelReloadingHandler(o, artifactType));
+    }
+
+    /**
+     * un-mapping of a proxied object
+     *
+     * @param o the proxied object
+     * @return the un-proxied object
+     */
+    public static Object getDelegateFromProxy(Object o)
+    {
+        if (o == null)
+        {
+            return null;
+        }
+        if (o instanceof Decorated)
+            return ((Decorated) o).getDelegate();
+
+        if (!Proxy.isProxyClass(o.getClass())) return o;
+        InvocationHandler handler = Proxy.getInvocationHandler(o);
+        if (handler instanceof Decorated)
+        {
+            return ((Decorated) handler).getDelegate();
+        }
+        return o;
+    }
+
+    public void addDependency(int engineType, String fromClass, String toClass)
+    {
+        //TODO implement this tomorrow
+    }
+
+    public ImplementationService getImplementationSPI() {
+        return MyFacesSPI.getInstance();
+    }
+
+    //----------------------------------------------------------------------
+    //lifecycle related tasks
+    public boolean isPostInit()
+    {
+        return (lifecycleRegistry.get("LIFECYCLE_POST_INIT") != null);
+    }
+
+    public void markPostInit()
+    {
+        lifecycleRegistry.put("LIFECYCLE_POST_INIT", System.currentTimeMillis());
+    }
+
+    public void markLastTaint()
+    {
+        lifecycleRegistry.put("LIFECYCLE_LAST_TAINTED", System.currentTimeMillis());
+    }
+
+    /**
+     * @return the time value of the last taint happening
+     */
+    public long getLastTaint()
+    {
+        Long lastTainted = lifecycleRegistry.get("LIFECYCLE_LAST_TAINTED");
+        lastTainted = (lastTainted != null) ? lastTainted : -1L;
+        return lastTainted;
+    }
+
+    /**
+     * marks the last annotation scan
+     */
+    public void markLastAnnotationScan()
+    {
+        lifecycleRegistry.put("LIFECYCLE_LAST_ANN_SCAN", System.currentTimeMillis());
+    }
+
+    /**
+     * @return a the time value of the last annotation scan
+     */
+    public long getLastAnnotationScan()
+    {
+        Long lastTainted = lifecycleRegistry.get("LIFECYCLE_LAST_ANN_SCAN");
+        lastTainted = (lastTainted != null) ? lastTainted : -1L;
+        return lastTainted;
+    }
+
+    //------------------------------ tainting history entries -----------------------
+
+    /**
+     * adds a new entry into our taint log
+     * which allows us to access tainting data
+     * from a given point in time
+     *
+     * @param data the tainting data to be added
+     */
+    public void addTaintLogEntry(ClassResource data)
+    {
+        _taintLog.add(new TaintingHistoryEntry(data));
+    }
+
+    /**
+     * garbage collects our tainting data
+     * and removes all entries which are not
+     * present anymore due to timeout
+     * this gc code is called asynchronously
+     * from our tainting thread to keep the
+     * performance intact
+     */
+    public void gcTaintLog()
+    {
+        long timeoutTimestamp = System.currentTimeMillis() - TAINT_HISTORY_TIMEOUT;
+        Iterator<TaintingHistoryEntry> it = _taintLog.iterator();
+
+        while (it.hasNext())
+        {
+            TaintingHistoryEntry entry = it.next();
+            if (entry.getTimestamp() < timeoutTimestamp)
+            {
+                it.remove();
+            }
+        }
+    }
+
+    /**
+     * returns the last noOfEntries entries in the taint history
+     *
+     * @param noOfEntries the number of entries to be delivered
+     * @return a collection of the last &lt;noOfEntries&gt; entries
+     */
+    public Collection<ClassResource> getLastTainted(int noOfEntries)
+    {
+        Iterator<TaintingHistoryEntry> it = _taintLog.subList(Math.max(_taintLog.size() - noOfEntries, 0), _taintLog.size()).iterator();
+        List<ClassResource> retVal = new LinkedList<ClassResource>();
+        while (it.hasNext())
+        {
+            TaintingHistoryEntry entry = it.next();
+            retVal.add(entry.getData());
+        }
+        return retVal;
+    }
+
+    /**
+     * Returns a set of tainting data from a given point in time up until now
+     *
+     * @param timestamp the point in time from which the tainting data has to be derived from
+     * @return a set of entries which are a union of all points in time beginning from timestamp
+     */
+    public Collection<ClassResource> getTaintHistory(long timestamp)
+    {
+        List<ClassResource> retVal = new LinkedList<ClassResource>();
+        Iterator<TaintingHistoryEntry> it = _taintLog.iterator();
+
+        while (it.hasNext())
+        {
+            TaintingHistoryEntry entry = it.next();
+            if (entry.getTimestamp() >= timestamp)
+            {
+                retVal.add(entry.getData());
+            }
+        }
+        return retVal;
+    }
+
+    /**
+     * Returns a set of tainted classes from a given point in time up until now
+     *
+     * @param timestamp the point in time from which the tainting data has to be derived from
+     * @return a set of classnames which are a union of all points in time beginning from timestamp
+     */
+    public Set<String> getTaintHistoryClasses(long timestamp)
+    {
+        Set<String> retVal = new HashSet<String>();
+        Iterator<TaintingHistoryEntry> it = _taintLog.iterator();
+
+        while (it.hasNext())
+        {
+            TaintingHistoryEntry entry = it.next();
+            if (entry.getTimestamp() >= timestamp)
+            {
+                if (entry.getData() instanceof ClassResource)
+                {
+                    retVal.add(((ClassResource) entry.getData()).getAClass().getName());
+                } else
+                {
+                    retVal.add(entry.getData().getFile().getAbsolutePath());
+                }
+            }
+        }
+        return retVal;
+    }
+
+    //----------------------------------------------------------------------
+    /*public ClassDependencies getDependencyMap()
+    {
+        return _dependencyMap;
+    }
+
+    public void setDependencyMap(ClassDependencies dependencyMap)
+    {
+        _dependencyMap = dependencyMap;
+    } */
+
+    protected static WeavingContext _instance = new WeavingContext();
+
+    public static WeavingContext getInstance()
+    {
+        return _instance;
+    }
+
+    public ImplementationService getImplementation()
+    {
+        return _implementation;
+    }
+
+    public void setImplementation(ImplementationService implementation)
+    {
+        _implementation = implementation;
+    }
+
+    public boolean isScriptingEnabled()
+    {
+        return _scriptingEnabled;
+    }
+
+    public void setScriptingEnabled(boolean scriptingEnabled)
+    {
+        _scriptingEnabled = scriptingEnabled;
+    }
+
+    public CompilationResult getCompilationResult(Integer scriptingEngine)
+    {
+        return _compilationResults.get(scriptingEngine);
+    }
+
+    public void setCompilationResult(Integer scriptingEngine, CompilationResult result)
+    {
+        _compilationResults.put(scriptingEngine, result);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/WeavingEvent.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/WeavingEvent.java
new file mode 100644
index 0000000..ac3b13b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/WeavingEvent.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api.eventhandling;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface WeavingEvent
+{
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/WeavingEventListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/WeavingEventListener.java
new file mode 100644
index 0000000..cd03db7
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/WeavingEventListener.java
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+
+
+package org.apache.myfaces.extensions.scripting.core.api.eventhandling;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface WeavingEventListener
+{
+     public void onEvent(WeavingEvent evt);
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/BeginCompiling.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/BeginCompiling.java
new file mode 100644
index 0000000..220d16e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/BeginCompiling.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api.eventhandling.events;
+
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class BeginCompiling implements WeavingEvent
+{
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/BeginLifecycle.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/BeginLifecycle.java
new file mode 100644
index 0000000..d0ec618
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/BeginLifecycle.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api.eventhandling.events;
+
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class BeginLifecycle  implements WeavingEvent
+{
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/ClassReloadedEvent.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/ClassReloadedEvent.java
new file mode 100644
index 0000000..526b3f3
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/ClassReloadedEvent.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api.eventhandling.events;
+
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ClassReloadedEvent  implements WeavingEvent
+{
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/EndCompiling.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/EndCompiling.java
new file mode 100644
index 0000000..25fc1d9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/EndCompiling.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api.eventhandling.events;
+
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class EndCompiling  implements WeavingEvent
+{
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/EndLifecycle.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/EndLifecycle.java
new file mode 100644
index 0000000..8204103
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/EndLifecycle.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api.eventhandling.events;
+
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class EndLifecycle  implements WeavingEvent
+{
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/RefreshBeginEvent.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/RefreshBeginEvent.java
new file mode 100644
index 0000000..41d7ab9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/RefreshBeginEvent.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api.eventhandling.events;
+
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class RefreshBeginEvent implements WeavingEvent
+{
+    Object request;
+
+    public RefreshBeginEvent(Object request)
+    {
+        this.request = request;
+    }
+
+    public Object getRequest()
+    {
+        return request;
+    }
+
+    public void setRequest(Object request)
+    {
+        this.request = request;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/TaintedEvent.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/TaintedEvent.java
new file mode 100644
index 0000000..a7eb3e8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/eventhandling/events/TaintedEvent.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.api.eventhandling.events;
+
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * event which is fired if a class resource is tainted
+ */
+
+public class TaintedEvent  implements WeavingEvent
+{
+    ClassResource resource;
+
+    public TaintedEvent()
+    {
+    }
+
+    public TaintedEvent(ClassResource resource)
+    {
+        this.resource = resource;
+    }
+
+    public ClassResource getResource()
+    {
+        return resource;
+    }
+
+    public void setResource(ClassResource resource)
+    {
+        this.resource = resource;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Array.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Array.java
new file mode 100644
index 0000000..7ae1bf0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Array.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@SuppressWarnings("unused")
+public class Array extends Cast
+{
+    public Array(Class clazz, Object... value) {
+
+        super(java.lang.reflect.Array.newInstance(clazz, 0).getClass(), value);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Cast.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Cast.java
new file mode 100644
index 0000000..46dbd83
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Cast.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+/**
+ * Simple casting representation for introspection
+ * calls
+ */
+public class Cast {
+
+    Class clazz;
+    Object value;
+
+    public Cast(Class clazz, Object value) {
+        this.clazz = clazz;
+        this.value = value;
+    }
+
+    public Class getClazz() {
+        return clazz;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ClassLoaderUtils.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ClassLoaderUtils.java
new file mode 100644
index 0000000..ef23e99
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ClassLoaderUtils.java
@@ -0,0 +1,179 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * <p>Utility class for class loading purposes, e.g. to determine the classpath of a
+ * class loader hierarchy.</p>
+ */
+public class ClassLoaderUtils {
+
+
+    // ------------------------------------------ Public methods
+
+    /**
+     * CompilationResult
+     * <p>Returns the default class loader to use.</p>
+     *
+     * @return the default class loader to use
+     */
+    public static ClassLoader getDefaultClassLoader() {
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        if (classLoader != null) {
+            return classLoader;
+        } else {
+            return ClassLoaderUtils.class.getClassLoader();
+        }
+    }
+
+    /**
+     * <p>Determines whether the given class is loadable by the given class loader.</p>
+     *
+     * @param className   the class you want to check
+     * @param classLoader the class loader to use for that check
+     * @return <code>true</code>, if the given class is loadable by the given class loader
+     */
+    public static boolean isClassAvailable(String className, ClassLoader classLoader) {
+        try {
+            classLoader.loadClass(className);
+            return true;
+        }
+        catch (Throwable ex) {
+            return false;
+        }
+    }
+
+    /**
+     * <p>Resolves the classpath by walking up the hierachy of class loaders. Assuming
+     * that we're only dealing with URLClassLoaders it's possible to determine the
+     * classpath. This method, however, returns the classpath as a String, where each
+     * classpath entry is separated by a ';', i.e. it returns the classpath in a format
+     * that Java tools usually expect it to be.</p>
+     * <p/>
+     * it also adds the additional classpaths issued by our configuration to the list
+     *
+     * @param classLoader the class loader which you want to resolve the class path for
+     * @return the final classpath
+     */
+    public static String buildClasspath(ClassLoader classLoader) {
+        StringBuilder classpath = new StringBuilder();
+
+        URL[] urls = resolveClasspath(classLoader);
+        for (URL url : urls) {
+            try
+            {
+                classpath.append(URLDecoder.decode(url.getPath(), Charset.defaultCharset().toString()));
+                // Note that the classpath separator character is platform
+                // dependent. On Windows systems it's ";" whereas on other
+                // UNIX systems it's ":".
+                classpath.append(File.pathSeparatorChar);
+            }
+            catch (UnsupportedEncodingException e)
+            {
+                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+            }
+        }
+
+        String retVal = classpath.toString();
+        if (retVal.endsWith(File.pathSeparator)) {
+            retVal = retVal.substring(0, retVal.length() - 1);
+        }
+        return retVal;
+    }
+
+    /**
+     * <p>Resolves the classpath by walking up the hierarchy of class loaders. Assuming
+     * that we're only dealing with URLClassLoaders it's possible to determine the
+     * classpath.</p>
+     *
+     * @param parent the class loader which you want to resolve the class path for
+     * @return the final classpath
+     */
+    public static URL[] resolveClasspath(ClassLoader parent) {
+        List<URL> classpath = new ArrayList<URL>();
+
+        ClassLoader classLoader = parent;
+        // Walk up the hierachy of class loaders in order to determine the current classpath.
+        File target = WeavingContext.getInstance().getConfiguration().getCompileTarget();
+        if (target != null) {
+            addFile(classpath, target);
+        }
+
+        while (classLoader != null) {
+            if (classLoader instanceof URLClassLoader) {
+                URLClassLoader urlClassLoader = (URLClassLoader) classLoader;
+
+                URL[] urls = urlClassLoader.getURLs();
+                if (urls != null) {
+                    classpath.addAll(Arrays.asList(urls));
+                }
+            } /*else {
+                if (logger.isWarnEnabled()) {
+                    logger.warn("Resolving the classpath of the classloader '" + parent + "' - One of its parent class"
+                            + " loaders is no URLClassLoader '" + classLoader + "', which means it's possible that"
+                            + " some classpath entries aren't in the final outcome of this method call.");
+                }
+            } */
+
+            //we disable this warning entirely for now because our own url classloader
+            //can deal with this properly, due to extra startup context classpath determination
+
+            // Inspect the parent class loader next.
+            classLoader = classLoader.getParent();
+        }
+
+        List<String> additionalClassPaths = WeavingContext.getInstance().getConfiguration().getAdditionalClassPath();
+        if (!(additionalClassPaths == null || additionalClassPaths.isEmpty())) {
+            for (String additionalClassPath : additionalClassPaths) {
+                File additionalPath = new File(additionalClassPath);
+                addFile(classpath, additionalPath);
+            }
+        }
+
+        return classpath.toArray(new URL[classpath.size()]);
+    }
+
+    private static void addFile(List<URL> classpath, File additionalPath) {
+        if (additionalPath.exists()) {
+            try {
+                classpath.add(additionalPath.toURI().toURL());
+            } catch (MalformedURLException e) {
+                Logger log = Logger.getLogger(ClassLoaderUtils.class.getName());
+                log.log(Level.SEVERE, "Additionalclasspath wrong url", e);
+            }
+        }
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ClassUtils.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ClassUtils.java
new file mode 100644
index 0000000..7cc6c5a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ClassUtils.java
@@ -0,0 +1,119 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+//TODO this needs to be moved into the JSF 2.0 and 1.2 packages
+//reason due to the changes caused by the shade plugin it the ClassLoader
+//Extensions is in shared_impl in 1.2 and in shared in 2.x
+
+import java.io.File;
+
+/**
+ * A generic utils class dealing with different aspects
+ * (naming and reflection) of java classes
+ *
+ * @author werpu
+ *         <p/>
+ */
+public class ClassUtils
+{
+
+    public static Class forName(String name)
+    {
+        try
+        {
+            return Class.forName(name);
+        }
+        catch (ClassNotFoundException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public static boolean isPresent(String clazz)
+    {
+        try
+        {
+            getContextClassLoader().loadClass(clazz);
+        }
+        catch (ClassNotFoundException e)
+        {
+            return false;
+        }
+        return true;
+    }
+
+    public static File classNameToFile(String classPath, String className)
+    {
+        String classFileName = classNameToRelativeFileName(className);
+        return new File(classPath + File.separator + classFileName);
+    }
+
+    private static String classNameToRelativeFileName(String className)
+    {
+        String separator = FileUtils.getFileSeparatorForRegex();
+
+        return className.replaceAll("\\.", separator) + ".class";
+    }
+
+    public static String relativeFileToClassName(String relativeFileName)
+    {
+        String className = relativeFileName.replaceAll("\\\\", ".").replaceAll("\\/", ".");
+        className = className.substring(0, className.lastIndexOf("."));
+        if(className.startsWith(".")) {
+            className = className.substring(1);
+        }
+        return className;
+    }
+
+    public static void addClassLoadingExtension(Object extension, boolean top)
+    {
+        try
+        {
+            ReflectUtil.executeStaticMethod(forName("org.apache.myfaces.shared_impl.util.ClassUtils"),
+                    "addClassLoadingExtension");
+        }
+        catch (Exception e)
+        {
+            ReflectUtil.executeStaticMethod(forName("org.apache.myfaces.shared.util.ClassUtils"),
+                    "addClassLoadingExtension", extension, top);
+        }
+
+        //ClassUtils.addClassLoadingExtension(extension, top);
+    }
+
+    public static ClassLoader getContextClassLoader()
+    {
+        try
+        {
+            return (ClassLoader) ReflectUtil.executeStaticMethod(forName("org.apache.myfaces.shared_impl.util.ClassUtils"),
+                    "getContextClassLoader");
+        }
+        catch (Exception e)
+        {
+            return (ClassLoader) ReflectUtil.executeStaticMethod(forName("org.apache.myfaces.shared.util.ClassUtils"),
+                    "getContextClassLoader");
+        }
+
+        //return (ClassLoader) ReflectUtil.executeStaticMethod(forName("org.apache.myfaces.extensions.scripting.util" +
+        //        ".ClassUtils"),
+        //        "getContextClassLoader");
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/DirStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/DirStrategy.java
new file mode 100644
index 0000000..c3e734d
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/DirStrategy.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+import java.io.File;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class DirStrategy implements Strategy
+{
+    List<File> _foundFiles = new LinkedList<File>();
+
+    public void apply(Object element) {
+        File foundFile = (File) element;
+        if (foundFile.isDirectory()) {
+            _foundFiles.add(foundFile);
+        }
+    }
+
+    public List<File> getFoundFiles() {
+        return _foundFiles;
+    }
+
+    public void setFoundFiles(List<File> foundFiles) {
+        _foundFiles = foundFiles;
+    }
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/FileStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/FileStrategy.java
new file mode 100644
index 0000000..324463a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/FileStrategy.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+import java.io.File;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Java file strategy pattern to filter out all java files which are possible sources
+ *          so that we can recompile them
+ */
+
+public class FileStrategy implements Strategy
+{
+    Pattern _rePattern;
+
+    public FileStrategy(String pattern) {
+        pattern = pattern.trim().replaceAll("\\.", "\\\\.");
+        pattern = "." + pattern;
+
+        _rePattern = Pattern.compile(pattern);
+
+    }
+
+    public FileStrategy(Pattern pattern) {
+
+
+            _rePattern = pattern;
+
+        }
+
+
+    List<File> _foundFiles = new LinkedList<File>();
+
+    public void apply(Object element) {
+        File foundFile = (File) element;
+        String fileName = foundFile.getName().toLowerCase(Locale.getDefault());
+        Matcher matcher = _rePattern.matcher(fileName);
+
+        if (!matcher.matches()) return;
+        _foundFiles.add(foundFile);
+    }
+
+    public List<File> getFoundFiles() {
+        return _foundFiles;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/FileUtils.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/FileUtils.java
new file mode 100644
index 0000000..675f57a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/FileUtils.java
@@ -0,0 +1,206 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class FileUtils {
+    static double _tempMarker = Math.random();
+
+    /**
+     * Get the file separator for this platform.
+     *
+     * @return The file separator.
+     */
+    public static String getFileSeparator() {
+        return File.separator;
+    }
+
+    /**
+     * touch functionality to mark
+     * compiles and dependencies as changed
+     * to get a clean reloading state
+     * <p/>
+     * the touch is basically just the same as unix touch
+     *
+     * @param fileToTouch
+     */
+    public static void touch(File fileToTouch) {
+        //we change our lastMofied to the current system time
+        if (!fileToTouch.exists()) return;
+        fileToTouch.setLastModified(System.currentTimeMillis());
+    }
+
+    /**
+     * Get the file separator for this platform, properly escaped for usage in a regular expression.
+     * workaround for http://bugs.sun.com/view_bug.do?bug_id=4626653 another workaround would be
+     * to use the Matcher.quoteReplacement as of http://bugs.sun.com/view_bug.do?bug_id=5024613  instead
+     * of using String.replaceAll
+     *
+     * @return The file separator, escaped for in a regex.
+     */
+    public static String getFileSeparatorForRegex() {
+        String sep = getFileSeparator();
+
+        if ("\\".equals(sep)) {
+            sep = "\\\\";
+        }
+
+        return sep;
+    }
+
+    public static File getTempDir() {
+        File tempDir;
+
+        String baseTempPath = System.getProperty("java.io.tmpdir");
+        String tempDirName = "myfaces_compilation_" + _tempMarker;
+
+        tempDir = new File(baseTempPath + File.separator + tempDirName);
+        /*while (tempDir.exists()) {
+            tempDirName = "myfaces_compilation_" + System.currentTimeMillis() + Math.random();
+            tempDir = new File(baseTempPath + File.separator + tempDirName);
+        }
+
+        synchronized (FileUtils.class) {
+            if (tempDir.exists()) {
+                return tempDir;
+            }
+            if (tempDir.mkdirs()) {
+                tempDir.deleteOnExit();
+            }
+        } */
+        if(!tempDir.exists()) {
+            tempDir.mkdirs();
+        }
+        tempDir.deleteOnExit();
+        return tempDir;
+    }
+
+    /**
+     * we roll our own tree walker here
+     * to avoid a dependency into commons fileutils
+     * and to apply an easier pattern than
+     * commons fileutils uses
+     *
+     * @param rootDir  the root dir for our walking
+     * @param strategy the strategy to apply to for our walking
+     */
+    public static void listFiles(File rootDir, Strategy strategy) {
+        if (!rootDir.isDirectory()) {
+            strategy.apply(rootDir);
+            return;
+        }
+
+        File[] files = rootDir.listFiles();
+        for (File file : files) {
+            boolean isDirectory = file.isDirectory();
+            if (isDirectory && !file.getName().endsWith(".")) {
+                listFiles(file, strategy);
+                strategy.apply(file);
+            } else if (!isDirectory) {
+                strategy.apply(file);
+            }
+        }
+    }
+
+    /**
+     * <p>
+     * target path check to check if the targetPath is valid or can be created
+     * </p>
+     *
+     * @param path the path to be investigated
+     */
+    public static void assertPath(File path) {
+        // The destination directory must already exist as javac will not create the destination directory.
+        if (!path.exists()) {
+            if (!path.mkdirs()) {
+                throw new IllegalStateException("It wasn't possible to create the target " +
+                        "directory for the compiler ['" + path.getAbsolutePath() + "'].");
+            }
+
+            // If we've created the destination directory, we'll delete it as well once the application exits
+            path.deleteOnExit();
+        }
+    }
+
+    /**
+     * fetches recursively the files under the current root
+     *
+     * @param sourcePath the source path from which the walker should start from
+     * @param fileType   the pattern upon which the file has to be matched to aka *.java etc...
+     * @return a list of source files
+     */
+    public static List<File> fetchSourceFiles(File sourcePath, String fileType) {
+        FileStrategy strategy = new FileStrategy(fileType);
+        listFiles(sourcePath, strategy);
+
+        return strategy.getFoundFiles();
+    }
+
+
+    /**
+     * fetches the source files from a list of source paths
+     *
+     * @param sourcePaths the collection of paths to be searched for
+     * @param fileType    the filetype to be searched for
+     * @return a list of files found
+     */
+    public static List<File> fetchSourceFiles(Collection<String> sourcePaths, String fileType) {
+        FileStrategy strategy = new FileStrategy(fileType);
+
+        for (String sourcePath : sourcePaths) {
+            File fSourcePath = new File(sourcePath);
+            if (fSourcePath.exists()) {
+                listFiles(fSourcePath, strategy);
+            }
+        }
+
+        return strategy.getFoundFiles();
+    }
+
+    /**
+     * fetches the source paths from a given root directory in the format
+     * <path>/<appendix>;...
+     *
+     * @param sourcePath the sourcePath from which the directory traversal should happen from
+     * @param appendix   the appendix which has to be appended to every path found
+     * @return a string builder of the paths found
+     */
+    @SuppressWarnings("unused")
+    public static StringBuilder fetchSourcePaths(File sourcePath, String appendix) {
+        DirStrategy dirStrategy = new DirStrategy();
+        StringBuilder sourcesList = new StringBuilder(512);
+
+        listFiles(sourcePath, dirStrategy);
+        for (File foundDir : dirStrategy.getFoundFiles()) {
+            String dirName = foundDir.getAbsolutePath();
+            sourcesList.append(dirName);
+            sourcesList.append(File.separator);
+            sourcesList.append(appendix);
+        }
+        return sourcesList;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Null.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Null.java
new file mode 100644
index 0000000..888819a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Null.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+/**
+ * @Author Werner Punz
+ * Null representation for easier introspection calls
+ */
+public class Null extends Cast
+{
+
+    public Null(Class clazz) {
+        super(clazz, null);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ReflectUtil.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ReflectUtil.java
new file mode 100644
index 0000000..6a21517
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/ReflectUtil.java
@@ -0,0 +1,576 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ReflectUtil
+{
+
+    static final Logger _logger = Logger.getLogger(ReflectUtil.class.getName());
+
+    public static Object instantiate(String clazz, Object... varargs)
+    {
+        return instantiate(ClassUtils.forName(clazz), varargs);
+    }
+
+    /**
+     * A simplified instantiation over reflection
+     *
+     * @param clazz   the class to be instantiated
+     * @param varargs the instantiation parameters
+     * @return the instantiated object
+     */
+    public static Object instantiate(Class clazz, Object... varargs)
+    {
+        Class[] classes = new Class[varargs.length];
+        for (int cnt = 0; cnt < varargs.length; cnt++)
+        {
+
+            if (varargs[cnt] instanceof Cast)
+            {
+                classes[cnt] = ((Cast) varargs[cnt]).getClazz();
+                varargs[cnt] = ((Cast) varargs[cnt]).getValue();
+            } else
+            {
+                classes[cnt] = varargs[cnt].getClass();
+            }
+        }
+
+        try
+        {
+            Constructor constr = clazz.getConstructor(classes);
+            return constr.newInstance(varargs);
+        }
+        catch (NoSuchMethodException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (InvocationTargetException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (InstantiationException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }/*this is mostly just a helper to bypass a groovy bug in a more
+   * complex delegation environment. Groovy throws a classcast
+   * exception wrongly, delegating the instantiation code to java
+   * fixes that
+   * */
+
+    public static Object newObject(Class clazz) throws IllegalAccessException, InstantiationException
+    {
+        return clazz.newInstance();
+    }
+
+    /**
+     * Generic execute method which simplifies the reflection api
+     * down to a usable system
+     *
+     * @param obj        the target object the method has to be executed upon
+     * @param methodName the method name
+     * @param varargs    the arguments which have to be passed to the method
+     * @return the return value of the method
+     */
+    public static Object executeStaticMethod(Class obj, String methodName, Object... varargs)
+    {
+
+        Collection<Method> methods = getMethods(obj, methodName, varargs.length);
+
+        Object retVal = handleStaticMethod(obj, methodName, methods, varargs);
+        if (!methodNotFound(retVal))
+        {
+            return retVal;
+        }
+
+        methods = getAllMethods(obj, methodName, varargs.length);
+        retVal = handleStaticMethod(obj, methodName, methods, varargs);
+        if (!methodNotFound(retVal))
+        {
+            return retVal;
+        }
+
+        throw new RuntimeException("Static Method of :" + methodName + " from class " + obj.getClass().getName() + " not found");
+
+    }
+
+    public static void setField(Object obj, String fieldName, Object value, boolean protectedField)
+    {
+        try
+        {
+            Field f = null;
+            try
+            {
+                f = obj.getClass().getDeclaredField(fieldName);
+            }
+            catch (NoSuchFieldException e)
+            {
+                f = obj.getClass().getField(fieldName);
+            }
+
+            f.setAccessible(protectedField);
+            f.set(obj, value);
+
+        }
+        catch (NoSuchFieldException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public static Object getField(Object obj, String fieldName, boolean protectedField)
+    {
+        try
+        {
+            Field f = null;
+            try
+            {
+                f = obj.getClass().getDeclaredField(fieldName);
+            }
+            catch (NoSuchFieldException e)
+            {
+                f = obj.getClass().getField(fieldName);
+            }
+            f.setAccessible(protectedField);
+            return f.get(obj);
+        }
+        catch (NoSuchFieldException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public static Collection<Method> getAllMethods(Class clazz, String methodName, int varargLength)
+    {
+        ArrayList<Method> retVal = new ArrayList<Method>(30);
+        while (clazz != null)
+        {
+            for (Method m : clazz.getDeclaredMethods())
+            {
+                if (m.getParameterTypes().length == varargLength && m.getName().equals(methodName))
+                {
+                    retVal.add(m);
+                }
+            }
+            clazz = clazz.getSuperclass();
+        }
+
+        return retVal;
+    }
+
+    public static Collection<Method> getMethods(Class clazz, String methodName, int varargLength)
+    {
+        ArrayList<Method> retVal = new ArrayList<Method>(30);
+        for (Method m : clazz.getDeclaredMethods())
+        {
+            if (m.getParameterTypes().length == varargLength && m.getName().equals(methodName))
+            {
+                retVal.add(m);
+            }
+        }
+
+        return retVal;
+    }
+
+    /**
+     * Generic execute method which simplifies the reflection api
+     * down to a usable system
+     *
+     * @param obj        the target object the method has to be executed upon
+     * @param methodName the method name
+     * @param varargs    the arguments which have to be passed to the method
+     * @return the return value of the method
+     * @throws RuntimeException a generic runtime exception in case of a failure
+     *                          we use unmanaged exceptions here to get a behavior similar to scripting
+     *                          language execution where failures can happen but method executions
+     *                          should not enforce exception handling
+     */
+    public static Object executeMethod(Object obj, String methodName, Object... varargs)
+    {
+
+        Collection<Method> methods;
+        //if we have an invocationHandler here we
+        //can work over the generic invoke interface
+        //That way we can cover more dynamic stuff
+        //our reload invocation handler is treated differently here
+
+        if (obj instanceof InvocationHandler)
+        {
+            InvocationHandler objToInvoke = (InvocationHandler) obj;
+
+            Object realTarget = WeavingContext.getInstance().getDelegateFromProxy(objToInvoke);
+
+            //first we try only the public because they are the most likely ones
+            //to be accessed
+            methods = getMethods(realTarget.getClass(), methodName, varargs.length);
+            Object retVal = handleInvHandlerMethod(objToInvoke, methodName, methods, varargs);
+            if (!methodNotFound(retVal))
+            {
+                return retVal;
+            }
+            //if not we try all of them until we have a match
+            methods = getAllMethods(realTarget.getClass(), methodName, varargs.length);
+            retVal = handleInvHandlerMethod(objToInvoke, methodName, methods, varargs);
+            if (!(methodNotFound(retVal)))
+            {
+                return retVal;
+            }
+
+            throw new RuntimeException("Method of :" + methodName + " from class " + obj.getClass().getName() + " not found");
+        }
+
+        Class clazz = obj.getClass();
+
+        //first we try only the public because they are the most likely ones
+        //to be accessed
+        methods = getMethods(clazz, methodName, varargs.length);
+        Object retVal = handleObjMethod(obj, methodName, methods, varargs);
+        if (!methodNotFound(retVal))
+        {
+            return retVal;
+        }
+
+        //if not we try all of them until we have a match
+        methods = getAllMethods(clazz, methodName, varargs.length);
+        retVal = handleObjMethod(obj, methodName, methods, varargs);
+        if (!methodNotFound(retVal))
+        {
+            return retVal;
+        }
+
+        throw new RuntimeException("Method of :" + methodName + " from class " + obj.getClass().getName() + " not found");
+    }
+
+    /**
+     * special marker class which is a special return value indicating
+     * that not method has been found which can be executed
+     */
+    static class _MethodNotFound
+    {
+    }
+
+    /**
+     * check if the return value is a method not found return val which
+     * indicates we have to follow the next workflow step
+     *
+     * @param retVal the retVal which has to be investigated
+     * @return true if the retVal is instance of _MethodNotFound false otherwise
+     */
+    private static boolean methodNotFound(Object retVal)
+    {
+        return retVal instanceof _MethodNotFound;
+    }
+
+    /**
+     * executes a method in an invocation handler with a set of
+     * methods which are canidates for execution
+     *
+     * @param objToInvoke the invokee object
+     * @param methodName  the method name
+     * @param methods     the methods which are under investigation for invoking
+     * @param varargs     the list of varargs to be passed to the method
+     * @return the result of the invocation, or an object of type _MethodNotFound otherwise
+     */
+    static private Object handleInvHandlerMethod(InvocationHandler objToInvoke, String methodName, Collection<Method> methods, Object... varargs)
+    {
+        for (Method m : methods)
+        {
+            if (!m.getName().equals(methodName) || m.getParameterTypes().length != varargs.length)
+            {
+                continue;
+            }
+            try
+            {
+                return objToInvoke.invoke(objToInvoke, m, varargs);
+            }
+            catch (Throwable e)
+            {
+                handleException(e);
+            }
+        }
+        return new _MethodNotFound();
+    }
+
+    /**
+     * executes a method on an object
+     *
+     * @param objToInvoke the invokee object
+     * @param methodName  the method name
+     * @param methods     the methods which are under investigation for invoking
+     * @param varargs     the list of varargs to be passed to the method
+     * @return the result of the invocation, or an object of type _MethodNotFound otherwise
+     */
+    static private Object handleObjMethod(Object objToInvoke, String methodName, Collection<Method> methods, Object... varargs)
+    {
+        for (Method m : methods)
+        {
+            if (!m.getName().equals(methodName) || m.getParameterTypes().length != varargs.length)
+            {
+                continue;
+            }
+            try
+            {
+                return m.invoke(objToInvoke, varargs);
+            }
+            catch (Throwable e)
+            {
+                handleException(e);
+            }
+        }
+        return new _MethodNotFound();
+    }
+
+    /**
+     * executes a static method on a class
+     *
+     * @param objToInvoke the invokee object
+     * @param methodName  the method name
+     * @param methods     the methods which are under investigation for invoking
+     * @param varargs     the list of varargs to be passed to the method
+     * @return the result of the invocation, or an object of type _MethodNotFound otherwise
+     */
+    static private Object handleStaticMethod(Class objToInvoke, String methodName, Collection<Method> methods, Object... varargs)
+    {
+        for (Method m : methods)
+        {
+            if (!m.getName().equals(methodName) || m.getParameterTypes().length != varargs.length)
+            {
+                continue;
+            }
+            try
+            {
+                return m.invoke(objToInvoke, varargs);
+            }
+            catch (Throwable e)
+            {
+                handleException(e);
+            }
+        }
+        return new _MethodNotFound();
+    }
+
+    private static void handleException(Throwable e)
+    {
+        if (e instanceof IllegalAccessException)
+        {
+            if (_logger.isLoggable(Level.FINEST))
+            {
+                _logger.log(Level.FINEST, "", e);
+            }
+        } else if (e instanceof IllegalArgumentException)
+        {
+            if (_logger.isLoggable(Level.FINEST))
+            {
+                _logger.log(Level.FINEST, "", e);
+            }
+        } else
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * executes a function method on a target object
+     *
+     * @param obj        the target object
+     * @param methodName the method name
+     * @param varargs    a list of objects casts or nulls defining the parameter classes and its values
+     *                   if something occurs on introspection level an unmanaged exception is throw, just like
+     *                   it would happen in a scripting class
+     * @return the result object for the Method(method) call
+     * @throws RuntimeException an unmanaged runtime exception in case of an introspection error
+     */
+    public static Object fastExecuteMethod(Object obj, String methodName, Object... varargs)
+    {
+        Class[] classes = new Class[varargs.length];
+        for (int cnt = 0; cnt < varargs.length; cnt++)
+        {
+
+            if (varargs[cnt] instanceof Cast)
+            {
+                classes[cnt] = ((Cast) varargs[cnt]).getClazz();
+                varargs[cnt] = ((Cast) varargs[cnt]).getValue();
+            } else
+            {
+                classes[cnt] = varargs[cnt].getClass();
+            }
+        }
+
+        try
+        {
+            Method m = fastGetMethod(obj, methodName, classes);
+            return m.invoke(obj, varargs);
+        }
+        catch (NoSuchMethodException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (InvocationTargetException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    /**
+     * faster reflection call
+     * if we know the data types exactly we can
+     * trigger a direct call instead of walking through all methods
+     * note this method only allows to trigger against directly declared methods
+     * it ignores the inheritance hierarchy for faster access
+     *
+     * @param obj        the invokee object
+     * @param methodName the metod name
+     * @param classes    the parameter type classes
+     * @return the method if found
+     * @throws NoSuchMethodException in case it could not be found
+     */
+    public static Method fastGetMethod(Object obj, String methodName, Class[] classes) throws NoSuchMethodException
+    {
+        Method m;
+        try
+        {
+            m = obj.getClass().getDeclaredMethod(methodName, classes);
+        }
+        catch (NoSuchMethodException e)
+        {
+            m = obj.getClass().getMethod(methodName, classes);
+        }
+        return m;
+    }
+
+    /**
+     * executes a function method on a target object
+     *
+     * @param obj        the target object
+     * @param methodName the method name
+     * @param varargs    a list of objects casts or nulls defining the parameter classes and its values
+     *                   if something occurs on introspection level an unmanaged exception is throw, just like
+     *                   it would happen in a scripting class
+     * @return the result object for the Method(method) call
+     * @throws RuntimeException an unmanaged runtime exception in case of an introspection error
+     */
+    public static Object fastExecuteStaticMethod(Class obj, String methodName, Object... varargs)
+    {
+        Class[] classes = new Class[varargs.length];
+        for (int cnt = 0; cnt < varargs.length; cnt++)
+        {
+
+            if (varargs[cnt] instanceof Cast)
+            {
+                classes[cnt] = ((Cast) varargs[cnt]).getClazz();
+                varargs[cnt] = ((Cast) varargs[cnt]).getValue();
+            } else
+            {
+                classes[cnt] = varargs[cnt].getClass();
+            }
+        }
+
+        try
+        {
+            Method m = fastGetStaticMethod(obj, methodName, classes);
+            return m.invoke(obj, varargs);
+        }
+        catch (NoSuchMethodException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (InvocationTargetException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    public static Method fastGetStaticMethod(Class obj, String methodName, Class[] classes) throws NoSuchMethodException
+    {
+        Method m;
+        try
+        {
+            m = obj.getDeclaredMethod(methodName, classes);
+        }
+        catch (NoSuchMethodException e)
+        {
+            m = obj.getMethod(methodName, classes);
+        }
+        return m;
+    }
+
+    /**
+     * convenience method which makes the code a little bit more readable
+     * use it in conjunction with static imports
+     *
+     * @param clazz the cast target for the method call
+     * @param value the value object to be used as param
+     * @return a Cast object of the parameters
+     */
+    public static Cast cast(Class clazz, Object value)
+    {
+        return new Cast(clazz, value);
+    }
+
+    /**
+     * convenience method which makes the code a little bit more readable
+     * use it in conjunction with static imports
+     *
+     * @param clazz the cast target for the method call
+     * @return a null value Cast object of the parameters
+     */
+    public static Null nullCast(Class clazz)
+    {
+        return new Null(clazz);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Strategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Strategy.java
new file mode 100644
index 0000000..cff2760
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/Strategy.java
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+/**
+ * Applied strategy class for iteration walkers
+ * to make the handling of iterated objects
+ * more scripting language like (aka a pattern similar to closures)
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface Strategy {
+
+    public void apply(Object element);
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/StringUtils.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/StringUtils.java
new file mode 100644
index 0000000..bb7a0e0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/common/util/StringUtils.java
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.common.util;
+
+/**
+ * Replacement for commons lang
+ * because we want to get the dependency out
+ * after all we only used StringUtils
+ * 
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class StringUtils {
+    public static boolean isBlank(String in) {
+        return in == null || in.trim().equals("");
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseEngine.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseEngine.java
new file mode 100644
index 0000000..c887348
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseEngine.java
@@ -0,0 +1,257 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyRegistry;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core.ClassDependencies;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.registry.DependencyRegistryImpl;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public abstract class BaseEngine
+{
+    Set<String> _sourcePaths = Collections.synchronizedSet(new HashSet<String>());
+    Map<String, ClassResource> _watchedResources = new ConcurrentHashMap<String, ClassResource>();
+    //both belong together but the dependencyregistry is just
+    //a wrapper for the dep map with additional functionality
+    ClassDependencies _dependencyMap = new ClassDependencies();
+    DependencyRegistry _dependencyRegistry = new DependencyRegistryImpl(getEngineType(), _dependencyMap);
+
+    Logger log = Logger.getLogger(this.getClass().getName());
+
+
+    protected BaseEngine()
+    {
+
+    }
+
+    public Map<String, ClassResource> getWatchedResources()
+    {
+        return _watchedResources;
+    }
+
+    public Collection<String> getSourcePaths()
+    {
+        return _sourcePaths;
+    }
+
+    public abstract String getFileEnding();
+
+    public abstract int getEngineType();
+
+    /**
+     * @return a collection of possible dynamic classes
+     */
+    public Collection<String> getPossibleDynamicClasses()
+    {
+        return _watchedResources.keySet();
+    }
+
+    /**
+     * runs a full scan of files to get a list of files which need to be processed
+     * for the future
+     */
+    public void scanForAddedDeleted()
+    {
+        Set<String> processedClasses = new HashSet<String>();
+        processedClasses.addAll(_watchedResources.keySet());
+
+        for (String sourcePath : getSourcePaths())
+        {
+            Collection<File> sourceFiles = FileUtils.fetchSourceFiles(new File(sourcePath), "*." + getFileEnding());
+
+            for (File sourceFile : sourceFiles)
+            {
+                ClassResource classToProcess = new ClassResource();
+                classToProcess.setFile(sourceFile);
+
+
+                classToProcess.setScriptingEngine(getEngineType());
+                if (!_watchedResources.containsKey(classToProcess.getIdentifier()))
+                {
+                    _watchedResources.put(classToProcess.getIdentifier(), classToProcess);
+                } else
+                {
+                    processedClasses.remove(classToProcess.getIdentifier());
+
+                    classToProcess = _watchedResources.get(classToProcess.getIdentifier());
+                }
+                if (classToProcess.needsRecompile())
+                {
+                    //TODO add entry for logging component here
+                    log.info("[EXT-SCRIPTING] tainting " + classToProcess.getIdentifier());
+                    classToProcess.setTainted(true);
+                    classToProcess.setChangedForCompile(true);
+                }
+            }
+        }
+        for (String deleted : processedClasses)
+        {
+            _watchedResources.remove(deleted);
+        }
+
+    }
+
+    /**
+     * checks whether we have resources which are in need of a recompile
+     *
+     * @return
+     */
+    public boolean needsRecompile()
+    {
+        //TODO buffer this from scan
+        for (Map.Entry<String, ClassResource> resource : _watchedResources.entrySet())
+        {
+            if (resource.getValue().needsRecompile()) return true;
+        }
+        return false;
+    }
+
+    /**
+     * checks whether we have resources which are tainted
+     *
+     * @return
+     */
+    public boolean isTainted()
+    {
+        //TODO buffer this from scan
+        for (Map.Entry<String, ClassResource> resource : _watchedResources.entrySet())
+        {
+            if (resource.getValue().isTainted()) return true;
+        }
+        return false;
+    }
+
+    public DependencyRegistry getDependencyRegistry()
+    {
+        return _dependencyRegistry;
+    }
+
+    public void setDependencyRegistry(DependencyRegistry dependencyRegistry)
+    {
+        _dependencyRegistry = dependencyRegistry;
+    }
+
+    public ClassDependencies getDependencyMap()
+    {
+        return _dependencyMap;
+    }
+
+    public void setDependencyMap(ClassDependencies dependencyMap)
+    {
+        _dependencyMap = dependencyMap;
+    }
+
+    /**
+     * marks all the dependencies of the tainted objects
+     * also as tainted to allow proper refreshing.
+     */
+    public void markTaintedDependencies()
+    {
+        //basic tainted set by the full scall
+        Set<String> _processedClasses = new HashSet<String>();
+        for (Map.Entry<String, ClassResource> entry : _watchedResources.entrySet())
+        {
+            //TODO add entry for logging component here
+            ClassResource resource = entry.getValue();
+            if (!resource.isChangedForCompile()) continue;
+            resource.setChangedForCompile(false);
+            log.info("[EXT-SCRIPTING] tainting dependency " + resource.getIdentifier());
+            resource.setTainted(true);
+            //classname
+            String identifier = resource.getIdentifier();
+            if (_processedClasses.contains(identifier)) continue;
+            markDependencies(_processedClasses, identifier);
+
+        }
+
+    }
+
+    /*marks all backward dependencies of the existing class*/
+    private void markDependencies(Set<String> _processedClasses, String identifier)
+    {
+        Set<String> referringClasses = _dependencyMap.getReferringClasses(identifier);
+        if (referringClasses == null) return;
+        for (String referringClass : referringClasses)
+        {
+            if (_processedClasses.contains(referringClass)) continue;
+            ClassResource toTaint = _watchedResources.get(referringClass);
+            if (toTaint == null) continue;
+            //TODO add entry for logging component here
+            if (toTaint.isTainted())
+            {
+                log.info("[EXT-SCRIPTING] dependency already tainted:" + toTaint.getIdentifier());
+                _processedClasses.add(toTaint.getIdentifier());
+                continue;
+            }
+            toTaint.setTainted(true);
+            toTaint.setChangedForCompile(false);
+            log.info("[EXT-SCRIPTING] tainting dependency " + toTaint.getIdentifier());
+            _processedClasses.add(toTaint.getIdentifier());
+            markDependencies(_processedClasses, toTaint.getIdentifier());
+        }
+
+    }
+
+    protected void initPaths(ServletContext context, String initParam, String defaultValue)
+    {
+        String pathSeparatedList = context.getInitParameter(initParam);
+        pathSeparatedList = (pathSeparatedList != null) ? pathSeparatedList : defaultValue;
+        if (pathSeparatedList.equals(defaultValue))
+        {
+            URL resource = ClassUtils.getContextClassLoader().getResource("./");
+            try
+            {
+                pathSeparatedList = FilenameUtils.normalize(URLDecoder.decode(resource.getPath(),
+                        Charset.defaultCharset().toString())
+                        + "../.." + defaultValue);
+            }
+            catch (UnsupportedEncodingException e)
+            {
+                e.printStackTrace();
+            }
+        }
+        String[] paths = pathSeparatedList.split(",");
+        for (String path : paths)
+        {
+            getSourcePaths().add(path);
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseScanner.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseScanner.java
new file mode 100644
index 0000000..06a0fcf
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseScanner.java
@@ -0,0 +1,134 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.StandardDependencyScanner;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyScanner;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.filter.WhitelistFilter;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.registry.ExternalFilterDependencyRegistry;
+
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public abstract class BaseScanner
+{
+    List<String> _scanPaths = new LinkedList<String>();
+    DependencyScanner _depencyScanner = new StandardDependencyScanner();
+    Logger _log = Logger.getLogger(JavaDependencyScanner.class.getName());
+
+    public abstract int getEngineType();
+
+    public abstract String getFileEnding();
+
+    public synchronized void scanPaths()
+    {
+        //only one dependency check per refresh makes sense in our case
+        /* if (WeavingContext.getRefreshContext().isDependencyScanned(getEngineType())) {
+            return;
+        } else {
+            WeavingContext.getRefreshContext().setDependencyScanned(getEngineType(), true);
+        }*/
+        ScriptingEngine engine = WeavingContext.getInstance().getEngine(getEngineType());
+
+        if (_log.isLoggable(Level.INFO))
+        {
+            _log.info("[EXT-SCRITPING] starting class dependency scan");
+        }
+        long start = System.currentTimeMillis();
+        final Set<String> possibleDynamicClasses = new HashSet<String>(engine.getPossibleDynamicClasses());
+
+        final ClassLoader loader = getClassLoader();
+        for (String dynamicClass : possibleDynamicClasses)
+        {
+            runScan(possibleDynamicClasses, loader, dynamicClass);
+        }
+
+        long end = System.currentTimeMillis();
+        if (_log.isLoggable(Level.FINE))
+        {
+            _log.log(Level.FINE, "[EXT-SCRITPING] class dependency scan finished, duration: {0} ms", Long.toString(end - start));
+        }
+
+    }
+
+    public void scanClass(Class clazz)
+    {
+        //TODO do nothing here
+    }
+
+    private void runScan(final Set<String> possibleDynamicClasses, final ClassLoader loader, String dynamicClass)
+    {
+        //TODO implement the dep registry
+        ExternalFilterDependencyRegistry scanRegistry = (ExternalFilterDependencyRegistry) WeavingContext.getInstance()
+                .getEngine(getEngineType()).getDependencyRegistry();
+
+        scanRegistry.clearFilters();
+        //We have to dynamically readjust the filters
+        scanRegistry.addFilter(new WhitelistFilter(possibleDynamicClasses));
+        //here we have a clear boundary into the ASM part
+        _depencyScanner.fetchDependencies(loader, getEngineType(), dynamicClass,
+                WeavingContext.getInstance().getEngine(getEngineType()).getDependencyRegistry());
+    }
+
+    protected ClassLoader getClassLoader()
+    {
+        try
+        {
+            return AccessController.doPrivileged(new PrivilegedExceptionAction<ThrowAwayClassloader>()
+            {
+               /*<> public ScannerClassloader run()
+                {
+                    return new ScannerClassloader(Thread.currentThread().getContextClassLoader(), getEngineType(),
+                            getFileEnding(), WeavingContext.getInstance().getConfiguration().getCompileTarget());
+                }*/
+
+                 public ThrowAwayClassloader run()
+                {
+                    return new ThrowAwayClassloader(Thread.currentThread().getContextClassLoader(),false);
+                }
+
+            });
+        }
+        catch (PrivilegedActionException e)
+        {
+            _log.log(Level.SEVERE, "", e);
+        }
+        return null;
+    }
+
+    public void addScanPath(String scanPath)
+    {
+        _scanPaths.add(scanPath);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineGroovy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineGroovy.java
new file mode 100644
index 0000000..f64b3b2
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineGroovy.java
@@ -0,0 +1,117 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import groovy.lang.GroovyObject;
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.ReloadingStrategy;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
+import org.apache.myfaces.extensions.scripting.core.engine.compiler.GroovyCompiler;
+import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
+import org.apache.myfaces.extensions.scripting.groovyloader.core.GroovyPropertyMapper;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.util.Collection;
+import java.util.logging.Logger;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_GROOVY;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.GROOVY_SOURCE_ROOT;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_CUSTOM_GROOVY_LOADER_PATHS;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class EngineGroovy extends BaseEngine implements ScriptingEngine
+{
+    Logger log = Logger.getLogger(this.getClass().getName());
+
+    @Override
+    public void init(ServletContext context)
+    {
+        initPaths(context, INIT_PARAM_CUSTOM_GROOVY_LOADER_PATHS, GROOVY_SOURCE_ROOT);
+    }
+
+    @Override
+    public int getEngineType()
+    {
+        return ENGINE_TYPE_JSF_GROOVY;
+    }
+
+    public String getEngineTypeAsStr() {
+        return "Groovy";
+    }
+
+    @Override
+    public ReloadingStrategy getBasicReloadingStrategy()
+    {
+        return new SimpleReloadingStrategy();
+    }
+
+    @Override
+    public boolean isArtifactOfEngine(Object artifact)
+    {
+        return (artifact instanceof GroovyObject);
+    }
+
+    @Override
+    public void copyProperties(Object dest, Object src)
+    {
+        GroovyPropertyMapper.mapProperties(dest, src);
+    }
+
+    @Override
+    public String getFileEnding()
+    {
+        return "groovy";
+    }
+
+    @Override
+    //full compile
+    public CompilationResult compile()
+    {
+        WeavingContext context = WeavingContext.getInstance();
+        Configuration configuration = context.getConfiguration();
+        GroovyCompiler compiler = new GroovyCompiler();
+        File targetDir = configuration.getCompileTarget();
+        Collection<String> sourceDirs = configuration.getSourceDirs(ENGINE_TYPE_JSF_GROOVY);
+        CompilationResult res = null;
+        for (String sourceRoot : sourceDirs)
+        {
+            res = compiler.compile(new File(sourceRoot), targetDir, ClassUtils.getContextClassLoader());
+        }
+        return res;
+    }
+
+    public void scanDependencies()
+    {
+        log.info("[EXT-SCRIPTING] starting dependency scan");
+        GroovyDependencyScanner scanner = new GroovyDependencyScanner();
+        scanner.scanPaths();
+        log.info("[EXT-SCRIPTING] ending dependency scan");
+    }
+
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineJava.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineJava.java
new file mode 100644
index 0000000..3605dcd
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineJava.java
@@ -0,0 +1,139 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.commons.beanutils.BeanUtils;
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.ReloadingStrategy;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationMessage;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
+import org.apache.myfaces.extensions.scripting.core.engine.compiler.JSR199Compiler;
+import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_JAVA;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_CUSTOM_JAVA_LOADER_PATHS;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.JAVA_SOURCE_ROOT;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class EngineJava extends BaseEngine implements ScriptingEngine
+{
+
+    Logger log = Logger.getLogger(this.getClass().getName());
+
+    @Override
+    public void init(ServletContext context)
+    {
+        initPaths(context, INIT_PARAM_CUSTOM_JAVA_LOADER_PATHS, JAVA_SOURCE_ROOT);
+    }
+
+    /**
+     * full compile will be called cyclicly
+     * from the startup and daemon thread
+     */
+    public CompilationResult compile()
+    {
+        WeavingContext context = WeavingContext.getInstance();
+        Configuration configuration = context.getConfiguration();
+        JSR199Compiler compiler = new JSR199Compiler();
+        File targetDir = configuration.getCompileTarget();
+        Collection<String> sourceDirs = configuration.getSourceDirs(getEngineType());
+        CompilationResult res = null;
+        for (String sourceRoot : sourceDirs)
+        {
+            res =  compiler.compile(new File(sourceRoot), targetDir,
+                ClassUtils.getContextClassLoader());
+            if(res.hasErrors()) {
+               for(CompilationMessage msg :res.getErrors()) {
+                   log.severe(msg.getMessage());
+               }
+               // log.severe(res.getCompilerOutput());
+            }
+        }
+        return res;
+    }
+
+    public void scanDependencies()
+    {
+        log.info("[EXT-SCRIPTING] starting dependency scan "+getEngineTypeAsStr());
+        JavaDependencyScanner scanner = new JavaDependencyScanner();
+        scanner.scanPaths();
+        log.info("[EXT-SCRIPTING] ending dependency scan" + getEngineTypeAsStr());
+    }
+
+    //-------------------------------------------------------------------------------------
+
+    @Override
+    public int getEngineType()
+    {
+        return ENGINE_TYPE_JSF_JAVA;
+    }
+    
+    public String getEngineTypeAsStr() {
+        return "Java";
+    }
+
+    @Override
+    public ReloadingStrategy getBasicReloadingStrategy()
+    {
+        return new SimpleReloadingStrategy();
+    }
+
+    @Override
+    public boolean isArtifactOfEngine(Object artifact)
+    {
+        return true;
+    }
+
+    @Override
+    public void copyProperties(Object dest, Object src)
+    {
+
+        try {
+            BeanUtils.copyProperties(dest, src);
+        } catch (IllegalAccessException e) {
+            log.log(Level.FINEST, e.toString());
+            //this is wanted
+        } catch (InvocationTargetException e) {
+            log.log(Level.FINEST, e.toString());
+            //this is wanted
+        }
+    }
+
+    @Override
+    public String getFileEnding()
+    {
+        return "java";
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineScala.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineScala.java
new file mode 100644
index 0000000..5cfffd6
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineScala.java
@@ -0,0 +1,132 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.commons.beanutils.BeanUtils;
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.ReloadingStrategy;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
+import org.apache.myfaces.extensions.scripting.core.engine.compiler.ScalaCompiler;
+import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
+import scala.ScalaObject;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_SCALA;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_CUSTOM_SCALA_LOADER_PATHS;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.SCALA_SOURCE_ROOT;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class EngineScala extends BaseEngine implements ScriptingEngine
+{
+    Logger log = Logger.getLogger(this.getClass().getName());
+
+    @Override
+    public void init(ServletContext context)
+    {
+        initPaths(context, INIT_PARAM_CUSTOM_SCALA_LOADER_PATHS, SCALA_SOURCE_ROOT);
+    }
+
+    @Override
+    public int getEngineType()
+    {
+        return ENGINE_TYPE_JSF_SCALA;
+    }
+
+    public String getEngineTypeAsStr()
+    {
+        return "Scala";
+    }
+
+    @Override
+    public ReloadingStrategy getBasicReloadingStrategy()
+    {
+        return new SimpleReloadingStrategy();
+    }
+
+    @Override
+    public boolean isArtifactOfEngine(Object artifact)
+    {
+        return (artifact instanceof ScalaObject);
+    }
+
+    @Override
+    public void copyProperties(Object dest, Object src)
+    {
+        try
+        {
+            BeanUtils.copyProperties(dest, src);
+        }
+        catch (IllegalAccessException e)
+        {
+            log.log(Level.FINEST, e.toString());
+            //this is wanted
+        }
+        catch (InvocationTargetException e)
+        {
+            log.log(Level.FINEST, e.toString());
+            //this is wanted
+        }
+    }
+
+
+    @Override
+    public String getFileEnding()
+    {
+        return "scala";
+    }
+
+    @Override
+    //full compile
+    public CompilationResult compile()
+    {
+        WeavingContext context = WeavingContext.getInstance();
+        Configuration configuration = context.getConfiguration();
+        ScalaCompiler compiler = new ScalaCompiler();
+        File targetDir = configuration.getCompileTarget();
+        Collection<String> sourceDirs = configuration.getSourceDirs(ENGINE_TYPE_JSF_SCALA);
+        CompilationResult res = null;
+        for (String sourceRoot : sourceDirs)
+        {
+            res = compiler.compile(new File(sourceRoot), targetDir, ClassUtils.getContextClassLoader());
+        }
+        return res;
+    }
+
+    public void scanDependencies()
+    {
+        log.info("[EXT-SCRIPTING] starting dependency scan");
+        ScalaDependencyScanner scanner = new ScalaDependencyScanner();
+        scanner.scanPaths();
+        log.info("[EXT-SCRIPTING] ending dependency scan");
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/FactoryEngines.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/FactoryEngines.java
new file mode 100644
index 0000000..ee83650
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/FactoryEngines.java
@@ -0,0 +1,112 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          holds references to the scripting engines
+ *          initializes the engins dynamically
+ */
+public class FactoryEngines
+{
+    final Logger _log = Logger.getLogger(this.getClass().getName());
+    /*we have to keep the order of the engines for the class detection*/
+    Map<Integer, ScriptingEngine> _engines = new LinkedHashMap<Integer, ScriptingEngine>();
+
+    public void init() throws IOException
+    {
+        //loadEnginesDynamically();
+        ScriptingEngine javaEngine = new EngineJava();
+        ScriptingEngine groovyEngine = null;
+        ScriptingEngine scalaEngine = null;
+        try
+        {
+            ClassUtils.getContextClassLoader().loadClass("groovy.lang.GroovyObject");
+            groovyEngine = (ScriptingEngine) ReflectUtil.instantiate("org.apache.myfaces.extensions.scripting.core" +
+                    ".engine.EngineGroovy");
+        }
+        catch (Exception ex)
+        {
+        }
+        try
+        {
+            ClassUtils.getContextClassLoader().loadClass("scala.ScalaObject");
+            scalaEngine = (ScriptingEngine) ReflectUtil.instantiate("org.apache.myfaces.extensions.scripting.core" +
+                    ".engine.EngineScala");
+        }
+        catch (Exception ex)
+        {
+        }
+
+        if (_engines.isEmpty())
+        {
+            //We now add the keys as linked hashmap keys
+            //so that java always is last hence the class
+            //detection has to work from top to bottom
+            if (groovyEngine != null)
+                _engines.put(groovyEngine.getEngineType(), groovyEngine);
+            if (scalaEngine != null)
+                _engines.put(scalaEngine.getEngineType(), scalaEngine);
+
+            _engines.put(javaEngine.getEngineType(), javaEngine);
+        }
+    }
+
+
+
+    public Collection<ScriptingEngine> getEngines()
+    {
+        List<ScriptingEngine> engineList = new ArrayList<ScriptingEngine>();
+        for(Map.Entry<Integer, ScriptingEngine> entry: _engines.entrySet()) {
+           engineList.add(entry.getValue());
+        }
+
+        return engineList;
+    }
+
+    public ScriptingEngine getEngine(int engineType)
+    {
+        return _engines.get(engineType);
+    }
+
+    private static FactoryEngines _ourInstance = new FactoryEngines();
+
+    public static FactoryEngines getInstance()
+    {
+        return _ourInstance;
+    }
+
+    private FactoryEngines()
+    {
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/GroovyDependencyScanner.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/GroovyDependencyScanner.java
new file mode 100644
index 0000000..3a4a8fc
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/GroovyDependencyScanner.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ClassScanner;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class GroovyDependencyScanner extends BaseScanner implements ClassScanner
+{
+
+    public GroovyDependencyScanner() {
+    }
+
+    public int getEngineType() {
+        return ScriptingConst.ENGINE_TYPE_JSF_GROOVY;
+    }
+    public String getFileEnding() {
+        return ScriptingConst.FILE_EXTENSION_GROOVY;
+    }
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/JavaDependencyScanner.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/JavaDependencyScanner.java
new file mode 100644
index 0000000..274dc43
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/JavaDependencyScanner.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ClassScanner;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class JavaDependencyScanner extends BaseScanner implements ClassScanner
+{
+
+    public JavaDependencyScanner() {
+    }
+
+    public int getEngineType() {
+        return ScriptingConst.ENGINE_TYPE_JSF_JAVA;
+    }
+    public String getFileEnding() {
+        return ScriptingConst.JAVA_FILE_ENDING;
+    }
+
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/ScalaDependencyScanner.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/ScalaDependencyScanner.java
new file mode 100644
index 0000000..6f9fc6c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/ScalaDependencyScanner.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ClassScanner;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ScalaDependencyScanner extends BaseScanner implements ClassScanner
+{
+
+    public ScalaDependencyScanner() {
+    }
+
+    public int getEngineType() {
+        return ScriptingConst.ENGINE_TYPE_JSF_SCALA;
+    }
+    public String getFileEnding() {
+        return ScriptingConst.SCALA_FILE_ENDING;
+    }
+
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/ThrowAwayClassloader.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/ThrowAwayClassloader.java
new file mode 100644
index 0000000..63d68e5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/ThrowAwayClassloader.java
@@ -0,0 +1,166 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import static java.util.logging.Level.SEVERE;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ThrowAwayClassloader extends ClassLoader
+{
+
+    static final Logger _logger = Logger.getLogger(ThrowAwayClassloader.class.getName());
+    boolean _untaint = true;
+    public ThrowAwayClassloader(ClassLoader classLoader, boolean untaint)
+    {
+        super(classLoader);
+        _untaint = untaint;
+    }
+    
+    public ThrowAwayClassloader(ClassLoader classLoader)
+    {
+        super(classLoader);
+    }
+
+    public ThrowAwayClassloader()
+    {
+    }
+
+    @Override
+    protected Class<?> findClass(String s) throws ClassNotFoundException
+    {
+        return super.findClass(s);
+    }
+
+    @Override
+    protected synchronized Class<?> loadClass(String s, boolean b) throws ClassNotFoundException
+    {
+        return super.loadClass(s, b);
+    }
+
+    @Override
+    /**
+     * load called either if the class is not loaded at all
+     * or if the class has been recompiled (check upfront)
+     */
+    public Class<?> loadClass(String className) throws ClassNotFoundException
+    {
+        ClassResource res = (ClassResource) WeavingContext.getInstance().getResource(className);
+        if (res == null) return super.loadClass(className);
+        if (!res.isTainted() && res.getAClass() != null) return res.getAClass();
+        File target = resolveClassFile(className);
+        //a load must happen anyway because the target was recompiled
+        int fileLength;
+        byte[] fileContent;
+        FileInputStream iStream = null;
+        //we cannot load while a compile is in progress
+        //we have to wait until it is one
+        try
+        {
+            fileLength = (int) target.length();
+            fileContent = new byte[fileLength];
+            iStream = new FileInputStream(target);
+            int result = iStream.read(fileContent);
+            _logger.log(Level.FINER, "read {0} bytes", String.valueOf(result));
+        }
+        catch (FileNotFoundException e)
+        {
+            throw new ClassNotFoundException(e.toString());
+        }
+        catch (IOException e)
+        {
+            throw new ClassNotFoundException(e.toString());
+        }
+        finally
+        {
+            if (iStream != null)
+            {
+                try
+                {
+                    iStream.close();
+                }
+                catch (Exception e)
+                {
+                    Logger log = Logger.getLogger(this.getClass().getName());
+                    log.log(SEVERE, "", e);
+                }
+            }
+        }
+        //here we use trick17 we can store as many classes of the same name
+        //as long as we store with a new classloader every time it needs refresh
+        //we need to do it because the classloader can call itself recursively
+        //TODO we might run into issues here with inner classes
+        Class retVal;
+        if (res != null) {
+            retVal = (new ThrowAwayClassloader(getParent(),_untaint)).defineClass(className, fileContent, 0, fileLength);
+            if(_untaint) {
+                res.setAClass(retVal);
+                res.setTainted(false);
+            }
+        } else {
+            retVal = super.defineClass(className, fileContent, 0, fileLength);
+        }
+        return retVal;
+
+    }
+
+    @Override
+    public InputStream getResourceAsStream(String name)
+    {                   
+        File resource = new File(WeavingContext.getInstance().getConfiguration().getCompileTarget().getAbsolutePath()+File
+                .separator+name); //resolveClassFile(name);
+        if (resource.exists())
+        {
+            try
+            {
+                return new FileInputStream(resource);
+            }
+            catch (FileNotFoundException e)
+            {
+                return super.getResourceAsStream(name);
+            }
+        }
+        return super.getResourceAsStream(name);
+    }
+
+    private File resolveClassFile(String name)
+    {
+        return ClassUtils.classNameToFile(WeavingContext.getInstance().getConfiguration().getCompileTarget()
+                .getAbsolutePath
+                (), name);
+
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/ClassScanner.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/ClassScanner.java
new file mode 100644
index 0000000..0274fc4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/ClassScanner.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.api;
+
+/**
+ * Generic class scanner interface
+ * which is a helper to plug in external  scanners
+ * as adapters for the annotation and dependency handling
+ * we cannot deal with annotations directly in the core
+ * because we are bound by the jsf 1.2 lower threshold limit
+ * hence this indirection
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface ClassScanner {
+
+    public void scanPaths();
+    public void scanClass(Class clazz);
+
+    public void addScanPath(String scanPath);
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilationException.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilationException.java
new file mode 100644
index 0000000..57dac04
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilationException.java
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.api;
+
+/**
+ * <p>This exception will usually be thrown if an error occurred while compiling a
+ * set of source files. However, note that it doesn't mean that the source files
+ * themselves contained errors but rather that the system couldn't managed to
+ * find an appropriate compiler implementation, etc.</p>
+ * <p/>
+ * <p>In order to determine whether the compiler successfully compiled a certain
+ * source file you have to look for the compilation result instead.</p>
+ */
+public class CompilationException extends Exception {
+
+    // ------------------------------------------ Constructors
+
+    /**
+     * <p>Constructs a new compilation exception with the specified detail message.</p>
+     *
+     * @param message the detail message. The detail message is saved for
+     *                later retrieval by the {@link #getMessage()} method.
+     */
+    public CompilationException(String message) {
+        super(message);
+    }
+
+    /**
+     * <p>Constructs a compilation new exception with the specified detail message
+     * and cause.  <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.</p>
+     *
+     * @param message the detail message (which is saved for later retrieval
+     *                by the {@link #getMessage()} method).
+     * @param cause   the cause (which is saved for later retrieval by the
+     *                {@link #getCause()} method).  (A <tt>null</tt> value is
+     *                permitted, and indicates that the cause is nonexistent or
+     *                unknown.)
+     */
+    public CompilationException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * <p>Constructs a new compilation exception with the specified cause and
+     * a detail message of <tt>(cause==null ? null : cause.toString())</tt>
+     * (which typically contains the class and detail message of
+     * <tt>cause</tt>).</p>
+     *
+     * @param cause the cause (which is saved for later retrieval by the
+     *              {@link #getCause()} method).  (A <tt>null</tt> value is
+     *              permitted, and indicates that the cause is nonexistent or
+     *              unknown.)
+     */
+    public CompilationException(Throwable cause) {
+        super(cause);
+    }
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilationMessage.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilationMessage.java
new file mode 100644
index 0000000..e25deba
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilationMessage.java
@@ -0,0 +1,94 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.api;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+/**
+ * <p>Utility class that contains all the required information regarding
+ * a single compilation message.</p>
+ */
+public class CompilationMessage
+{
+
+    /**
+     * the line number of this compilation message
+     */
+    private long lineNumber;
+
+    /**
+     * the actual compilation message
+     */
+    private String message;
+
+    // -------------------------------------- Constructors
+
+    /**
+     * <p>Constructs a new compilation message using the line number
+     * and the actual compilation message as a string.</p>
+     *
+     * @param lineNumber the line number
+     * @param message    the actual compilation message
+     */
+    public CompilationMessage(long lineNumber, String message)
+    {
+        this.lineNumber = lineNumber;
+        this.message = message;
+    }
+
+    // -------------------------------------- Public methods
+
+    /**
+     * <p>The number of the relevant line where this warning or error
+     * has occured, or <code>-1</code> if it is not known.</p>
+     *
+     * @return the line number
+     */
+    public long getLineNumber()
+    {
+        return lineNumber;
+    }
+
+    /**
+     * <p>Returns the message itself as a string, i.e. the textual content
+     * of whatever the compiler complained about.</p>
+     *
+     * @return the message itself as a string
+     */
+    public String getMessage()
+    {
+        return message;
+    }
+
+    /**
+     * <p>Returns a string representation of this compilation message.</p>
+     *
+     * @return a string representation of this compilation message
+     */
+    @Override
+    public String toString()
+    {
+        return String.format(
+                "CompilationMessage[lineNumber='%s', message='%s']", lineNumber, message);
+    }
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilationResult.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilationResult.java
new file mode 100644
index 0000000..6d7c471
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilationResult.java
@@ -0,0 +1,137 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.api;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>Contains all information regarding the result of a particular compilation process.</p>
+ */
+public class CompilationResult {
+
+    /**
+     * The compiler output, i.e. simply everything that the compiler would usually
+     * print to the console, if you executed the same process on the command line
+     * instead.
+     */
+    private String _compilerOutput;
+
+    /**
+     * A list of error messages that the compiler has produced. Note that if there
+     * are no error messages, it's safe to assume that compilation succeeded.
+     */
+    private List<CompilationMessage> _errors;
+
+    /**
+     * A list of warnings that the compiler has produced.
+     */
+    private List<CompilationMessage> _warnings;
+
+    // ------------------------------------------ Constructors
+
+    /**
+     * <p>Constructs a new compilation result object using the compiler output. However,
+     * note that this constructor doesn't attempt to parse the compiler output to get the
+     * error messages and warnings. You'll have to register those messages yourself
+     * afterwards.</p>
+     *
+     * @param compilerOutput the compiler output, i.e. simply everything that the compiler would
+     *                       usually print to the console, if you executed the same process on
+     *                       the command line instead
+     */
+    public CompilationResult(String compilerOutput) {
+        this._compilerOutput = compilerOutput;
+
+        this._errors = new ArrayList<CompilationMessage>();
+        this._warnings = new ArrayList<CompilationMessage>();
+    }
+
+    // ------------------------------------------ Public methods
+
+    /**
+     * <p>Returns the compiler output, i.e. simply everything that the compiler would usually
+     * print to the console, if you executed the same process on the command line
+     * instead.</p>
+     *
+     * @return the compiler output
+     */
+    public String getCompilerOutput() {
+        return _compilerOutput;
+    }
+
+    /**
+     * <p>Determines whether any error messages have been registered, i.e. whether compilation
+     * was successful.</p>
+     *
+     * @return <code>true</code if no error messages have been registered, i.e. if compilation
+     *         was sucessful; <code>false</code> otherwise
+     */
+    public boolean hasErrors() {
+        return !_errors.isEmpty();
+    }
+
+    /**
+     * <p>Registers the given message as an error message.</p>
+     *
+     * @param message the error message you want to register
+     */
+    public void registerError(CompilationMessage message) {
+        if (message != null) {
+            _errors.add(message);
+        }
+    }
+
+    /**
+     * <p>Returns a list of error messages that the compiler has produced,
+     * i.e. the error messages that have been registered previously.</p>
+     *
+     * @return a list of error messages
+     */
+    public List<CompilationMessage> getErrors() {
+        return _errors;
+    }
+
+    /**
+     * <p>Registers the given message as a warning. You can register as many warnings as you want
+     * and it won't affect whether compilation was sucessful or not.</p>
+     *
+     * @param message the warning you want to register
+     */
+    public void registerWarning(CompilationMessage message) {
+        if (message != null) {
+            _warnings.add(message);
+        }
+    }
+
+    /**
+     * <p>Returns a list of warnings that the compiler has produced,
+     * i.e. the warnings that have been registered previously.</p>
+     *
+     * @return a list of warnings
+     */
+    public List<CompilationMessage> getWarnings() {
+        return _warnings;
+    }
+
+    // ------------------------------------------ Public static classes
+
+
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/Compiler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/Compiler.java
new file mode 100644
index 0000000..99857ef
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/Compiler.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.api;
+
+import java.io.File;
+
+/**
+ * <p>An abstract compiler interface that enables you to compile one particular file at a time.</p>
+ */
+public interface Compiler {
+
+
+
+    /**
+     * <p>Compiles the given file and creates an according class file in the given target path. Note that
+     * it is possible for the given class to reference any other classes as long as the dependent classes
+     * are available on the classpath. The given class loader determines the classes that are available
+     * on the classpath.</p>
+     *
+     * @param sourcePath  the path to the source directory
+     * @param targetPath  the path to the target directory
+     * @param classLoader the class loader for dependent classes
+     * @return the compilation result, i.e. the compiler output, a list of errors and a list of warnings
+     * @throws CompilationException
+     *          if a severe error occurred while trying to compile a file
+     */
+    public CompilationResult compile(File sourcePath, File targetPath, ClassLoader classLoader) throws CompilationException;
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java
new file mode 100644
index 0000000..ae940d0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.api;
+
+/**
+ * Various constants shared over the various compiler implementations
+ * JSR or non JSR!
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class CompilerConst {
+    public static final String STD_ERROR_HEAD = "Java Compiler, error on line: ";
+    public static final String STD_WARN_HEAD = "Java Compiler, warning on line: ";
+    public static final String STD_MANDATORY_WARN_HEAD = "Java Compiler, mandatory warning on line: ";
+    public static final String STD_OTHER_HEAD = "Java Compiler, other diagnostic on line: ";
+    public static final String STD_NOTE_HEAD = "Java Compiler, Info on line: ";
+    public static final String JC_CLASSPATH = "-cp";
+    public static final String JC_TARGET_PATH = "-d";
+    public static final String JC_SOURCEPATH = "-sourcepath";
+    public static final String JC_DEBUG = "-g";
+    public static final String JAVA_WILDCARD = "*.java ";
+    public static final String JC_VERBOSE = "-verbose";
+    @SuppressWarnings("unused")
+    public static final String JC_SOURCE = "-source";
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/ScriptingEngine.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/ScriptingEngine.java
new file mode 100644
index 0000000..f55d5fc
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/ScriptingEngine.java
@@ -0,0 +1,137 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.api;
+
+import org.apache.myfaces.extensions.scripting.core.api.ReloadingStrategy;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyRegistry;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core.ClassDependencies;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+
+import javax.servlet.ServletContext;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface ScriptingEngine
+{
+    public void init(ServletContext context);
+
+    public Collection<String> getPossibleDynamicClasses();
+    
+    public Collection<String> getSourcePaths();
+
+    public Map<String, ClassResource> getWatchedResources();
+
+    /**
+     * @return the identifier for the engine type
+     * each identifier must be unique to the system
+     */
+    public int getEngineType();
+
+    /**
+     * returns the file ending sufficient for this engine
+     * @return
+     */
+    public String getFileEnding();
+
+    /**
+     * runs a full scan of files to get a list of files which need to be processed
+     * for the future
+     */
+    public void scanForAddedDeleted();
+
+    /**
+     * runs the compile cycle for this engine
+     */
+    public CompilationResult compile();
+
+    /**
+     * checks if the current engine has tainted classes
+     * @return
+     */
+    public boolean isTainted();
+
+    /**
+     * checks if the current engine has a need for a recompile of certain classes
+     * @return
+     */
+    public boolean needsRecompile();
+
+    /**
+     * gets the dependency map hosted in this engine
+     *
+     * @return the dependency map
+     */
+    public ClassDependencies getDependencyMap();
+
+    /**
+     * fetches the dependency registry
+     *
+     * @return the dependency registry
+     */
+    public DependencyRegistry getDependencyRegistry();
+
+    /**
+     * Scan dependencies for this submodule
+     */
+    public void scanDependencies();
+
+    /**
+     * mark the classes which are dependend
+     * as tainted according to the dependency graph
+     * The function has to walk the graph recursively
+     * according to its state and mark all backward references
+     * as tainted.
+     */
+    public void markTaintedDependencies();
+
+    /**
+     *
+     * @return a string representation
+     * of the corresponding engine
+     */
+    public String getEngineTypeAsStr();
+
+    /**
+     * loads the basic strategy which hosts also the property copying algorithm
+     *
+     * @return the basic strategy
+     */
+    public ReloadingStrategy getBasicReloadingStrategy();
+
+    /**
+     * detects whether a given object is an artifact of a given object
+     * @return
+     */
+    public boolean isArtifactOfEngine(Object artifact);
+
+    /**
+     * engine related copy properties, which takes
+     * certain language constructs into consideration.
+     * Groovy for instance has extra props for meta classes
+     * which should not be copied.
+     *
+     * @param dest the destination
+     * @param src  the source
+     */
+    public void copyProperties(Object dest, Object src);
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/ContainerFileManager.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/ContainerFileManager.java
new file mode 100644
index 0000000..6369b97
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/ContainerFileManager.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassLoaderUtils;
+
+import javax.tools.FileObject;
+import javax.tools.ForwardingJavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * File manager, enforced by the Java Compiler API
+ * which handles the source files
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ContainerFileManager extends ForwardingJavaFileManager<StandardJavaFileManager> {
+
+    String _classPath = null;
+
+    public ContainerFileManager(StandardJavaFileManager standardJavaFileManager) {
+        super(standardJavaFileManager);
+    }
+
+    public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
+        return fileManager.getJavaFileObjects(files);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompiler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompiler.java
new file mode 100644
index 0000000..c972f83
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompiler.java
@@ -0,0 +1,161 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassLoaderUtils;
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationMessage;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+import org.codehaus.groovy.control.CompilationFailedException;
+import org.codehaus.groovy.control.CompilationUnit;
+import org.codehaus.groovy.control.CompilerConfiguration;
+import org.codehaus.groovy.control.ErrorCollector;
+import org.codehaus.groovy.control.messages.Message;
+import org.codehaus.groovy.control.messages.SimpleMessage;
+import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * <p>A compiler implementation that can be used to compile Groovy source files.</p>
+ */
+public class GroovyCompiler implements org.apache.myfaces.extensions.scripting.core.engine.api.Compiler
+{
+
+    /**
+     * The logger instance for this class.
+     */
+    private static final Logger _logger = Logger.getLogger(GroovyCompiler.class.getName());
+
+    CompilationResult result = null;
+    // ------------------------------------------ Compiler methods
+
+
+    public CompilationResult compile(File sourcePath, File targetPath, ClassLoader classLoader) {
+        WeavingContext context = WeavingContext.getInstance();
+        Configuration configuration = context.getConfiguration();
+        
+        
+        
+        List<File> sourceFiles = FileUtils.fetchSourceFiles(configuration.getWhitelistedSourceDirs(ScriptingConst
+                .ENGINE_TYPE_JSF_GROOVY), "*.groovy");
+
+        StringWriter compilerOutput = new StringWriter();
+
+        CompilationUnit compilationUnit = new CompilationUnit(
+                buildCompilerConfiguration(sourcePath, targetPath, classLoader));
+        compilationUnit.getConfiguration().setOutput(new PrintWriter(compilerOutput));
+
+        for (File sourceFile : sourceFiles) {
+            compilationUnit.addSource(sourceFile);
+        }
+
+        CompilationResult result;
+
+        try {
+            compilationUnit.compile();
+
+            result = new CompilationResult(compilerOutput.toString());
+            //context.setCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_GROOVY, result);
+            //this.result = result;
+        } catch (CompilationFailedException ex) {
+            // Register all collected error messages from the Groovy compiler
+            result = new CompilationResult(compilerOutput.toString());
+            ErrorCollector collector = compilationUnit.getErrorCollector();
+            for (int i = 0; i < collector.getErrorCount(); ++i) {
+                result.registerError(convertMessage(collector.getError(i)));
+            }
+        }
+
+        // Register all collected warnings from the Groovy compiler
+        ErrorCollector collector = compilationUnit.getErrorCollector();
+        for (int i = 0; i < collector.getWarningCount(); ++i) {
+            result.registerWarning(convertMessage(collector.getWarning(i)));
+        }
+
+
+        return result;
+    }
+
+
+
+    // ------------------------------------------ Utility methods
+
+    /**
+     * <p>Converts the given Groovy compiler message into a compilation message that
+     * our compilation API consists of.</p>
+     *
+     * @param message the Groovy compiler message you want to convert
+     * @return the final converted compilation message
+     */
+    protected CompilationMessage convertMessage(Message message) {
+        if (message instanceof SimpleMessage) {
+            SimpleMessage simpleMessage = (SimpleMessage) message;
+            return new CompilationMessage(-1, simpleMessage.getMessage());
+        } else if (message instanceof SyntaxErrorMessage) {
+            SyntaxErrorMessage syntaxErrorMessage = (SyntaxErrorMessage) message;
+            return new CompilationMessage(
+                    syntaxErrorMessage.getCause().getLine(), syntaxErrorMessage.getCause().getMessage());
+        } else {
+            if (_logger.isLoggable(Level.FINE)) {
+                _logger.log(Level.FINE,
+                        "This compiler came across an unknown message kind ['{0}']. It will be ignored.", message);
+            }
+
+            return null;
+        }
+    }
+
+    /**
+     * <p>Configures the compiler by building its configuration object.</p>
+     *
+     * @param sourcePath  the path to the source directory
+     * @param targetPath  the path to the target directory
+     * @param classLoader the class loader to use to determine the classpath
+     * @return the compiler configuration
+     */
+    protected CompilerConfiguration buildCompilerConfiguration(File sourcePath, File targetPath, ClassLoader classLoader) {
+        CompilerConfiguration configuration = new CompilerConfiguration();
+
+        // Set the destination / target directory for the compiled .class files.
+        configuration.setTargetDirectory(targetPath.getAbsoluteFile());
+
+        // Specify the classpath of the given class loader. This enables the user to write new Java
+        // "scripts" that depend on classes that have already been loaded previously. Otherwise he
+        // wouldn't be able to use for example classes that are available in a library.
+        configuration.setClasspath(ClassLoaderUtils.buildClasspath(classLoader));
+
+        // Enable verbose output.
+        configuration.setVerbose(true);
+
+        // Generate debugging information.
+        configuration.setDebug(true);
+
+        return configuration;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JSR199Compiler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JSR199Compiler.java
new file mode 100644
index 0000000..2ca5c1e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JSR199Compiler.java
@@ -0,0 +1,241 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassLoaderUtils;
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationMessage;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticCollector;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_JAVA;
+import static org.apache.myfaces.extensions.scripting.core.engine.api.CompilerConst.*;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          a JSR 199 based compiler which implements
+ *          our simplified compiler interface
+ */
+public class JSR199Compiler implements org.apache.myfaces.extensions.scripting.core.engine.api.Compiler
+{
+
+    javax.tools.JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
+    StandardJavaFileManager fileManager = null;
+
+
+    public JSR199Compiler()
+    {
+        super();
+    }
+
+    /**
+     * compile all files starting from a given root
+     * <p/>
+     * note, the java compiler interface does not allow per se
+     * wildcards due to its file object indirection
+     * we deal with that problem by determine all files manually and then
+     * push the list into the jsr compiler interface
+     *
+     *
+     * @param sourceRoot the root for all java sources to be compiled
+     * @param loader     the classpath holder for the compilation
+     * @return the collected compilation results as bundle
+     */
+    public CompilationResult compile(File sourceRoot, File destination, ClassLoader loader)   {
+            WeavingContext context = WeavingContext.getInstance();
+            Configuration configuration = context.getConfiguration();
+            destination.mkdirs();
+            fileManager =  javaCompiler.getStandardFileManager(new
+                            DiagnosticCollector<JavaFileObject>(), Locale.getDefault(), null);
+
+            DiagnosticCollector<JavaFileObject> diagnosticCollector = new DiagnosticCollector<JavaFileObject>();
+
+            getLog().info("[EXT-SCRIPTING] Doing a full recompile");
+            
+            List<File> sourceFiles = FileUtils.fetchSourceFiles(configuration.getWhitelistedSourceDirs
+                    (ENGINE_TYPE_JSF_JAVA), JAVA_WILDCARD);
+            
+            HashSet<String> alreadyProcessed = new HashSet<String>();
+            Iterator<File> sourceIt = sourceFiles.iterator();
+            while(sourceIt.hasNext()) {
+                File currentProcessed = sourceIt.next();
+                if(alreadyProcessed.contains(currentProcessed.getAbsolutePath())) {
+                    sourceIt.remove();
+                } else {
+                    alreadyProcessed.add(currentProcessed.getAbsolutePath());
+                }
+
+            }
+        
+        
+            for (File sourceFile : sourceFiles)
+            {
+                if (!sourceFile.exists())
+                {
+                    getLog().log(Level.WARNING, "[EXT-SCRIPTING] Source file with path {0} does not exist it might cause an error in the compilation process", sourceFile.getAbsolutePath());
+                }
+            }
+            Iterable<? extends JavaFileObject> fileObjects = fileManager.getJavaFileObjects(sourceFiles.toArray(new File[sourceFiles.size()]));
+            String[] options = new String[]{JC_CLASSPATH, /*fileManager.getClassPath()*/
+                                            ClassLoaderUtils.buildClasspath(ClassLoaderUtils.getDefaultClassLoader())
+                    , JC_TARGET_PATH,
+                                            destination.getAbsolutePath(), JC_SOURCEPATH,
+            sourceRoot.getAbsolutePath(), JC_DEBUG};
+
+            javaCompiler.getTask(null, fileManager, diagnosticCollector, Arrays.asList(options), null, fileObjects).call();
+
+
+            CompilationResult result =  handleDiagnostics(diagnosticCollector);
+
+
+            return result;
+
+    }
+
+    /**
+     * internal diagnostics handler
+     * which just logs the errors
+     *
+     * @param diagnosticCollector the compilation results, the jsr 199 uses a DiagnosticsCollector object
+     *                            to keep the errors and warnings of the compiler
+     * @throws ClassNotFoundException in case of an error (this is enforced by the compiler interface
+     *                                and probably will be overhauled in the long run)
+     */
+    private CompilationResult handleDiagnostics(DiagnosticCollector<JavaFileObject> diagnosticCollector)
+    {
+        if (diagnosticCollector.getDiagnostics().size() > 0)
+        {
+            Logger log = Logger.getLogger(this.getClass().getName());
+            StringBuilder errors = new StringBuilder();
+            CompilationResult result = new CompilationResult("");
+            boolean hasError = false;
+            for (Diagnostic diagnostic : diagnosticCollector.getDiagnostics())
+            {
+                String error = createErrorMessage(diagnostic);
+                log.log(Level.WARNING, "[EXT-SCRIPTING] Compiler: {0}", error);
+
+                if (diagnostic.getKind().equals(Diagnostic.Kind.ERROR))
+                {
+                    hasError = true;
+                    result.getErrors().add(new CompilationMessage(diagnostic.getLineNumber(), diagnostic.getMessage(Locale.getDefault())));
+                } else
+                {
+                    result.getWarnings().add(new CompilationMessage(diagnostic.getLineNumber(), diagnostic.getMessage(Locale.getDefault())));
+                }
+                errors.append(error);
+
+            }
+            return result;
+        } else
+        {
+            //WeavingContext.setCompilationResult(ENGINE_TYPE_JSF_JAVA, new CompilationResult(""));
+            return new CompilationResult("");
+        }
+    }
+
+    /**
+     * interruption of the compile flow should only
+     * happen if an error has occurred otherwise we will proceed
+     * as expected
+     *
+     * @param errors   the errors messages found
+     * @param hasError marker if an error was found or not
+     * @throws ClassNotFoundException in case of a compile error
+     */
+    private void assertErrorFound(StringBuilder errors, boolean hasError) throws ClassNotFoundException
+    {
+        if (hasError)
+        {
+            throw new ClassNotFoundException("Compile error of java file:" + errors.toString());
+        }
+    }
+
+    /**
+     * creates a standardized error message
+     *
+     * @param diagnostic the diagnostic of the compiler containing the error data
+     * @return a formatted string with the standardized error message which then later
+     *         can be processed by the user
+     */
+    private String createErrorMessage(Diagnostic diagnostic)
+    {
+        StringBuilder retVal = new StringBuilder(256);
+        if (diagnostic == null)
+        {
+            return retVal.toString();
+        }
+        if (diagnostic.getKind().equals(Diagnostic.Kind.ERROR))
+        {
+            retVal.append(STD_ERROR_HEAD);
+        } else if (diagnostic.getKind().equals(Diagnostic.Kind.NOTE))
+        {
+            retVal.append(STD_NOTE_HEAD);
+        } else if (diagnostic.getKind().equals(Diagnostic.Kind.WARNING))
+        {
+            retVal.append(STD_WARN_HEAD);
+        } else if (diagnostic.getKind().equals(Diagnostic.Kind.MANDATORY_WARNING))
+        {
+            retVal.append(STD_MANDATORY_WARN_HEAD);
+        } else if (diagnostic.getKind().equals(Diagnostic.Kind.OTHER))
+        {
+            retVal.append(STD_OTHER_HEAD);
+        }
+        String message = diagnostic.getMessage(Locale.getDefault());
+        message = (message == null) ? "" : message;
+        retVal.append(message);
+        retVal.append(diagnostic.getLineNumber());
+
+        retVal.append("\n\n");
+
+        String source = "No additional source info";
+
+        if (diagnostic.getSource() != null)
+        {
+            source = diagnostic.getSource().toString();
+        }
+        retVal.append(source);
+
+        return retVal.toString();
+    }
+
+    private Logger getLog()
+    {
+        return Logger.getLogger(this.getClass().getName());
+    }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/StandardDependencyScanner.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/StandardDependencyScanner.java
new file mode 100644
index 0000000..0e035e5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/StandardDependencyScanner.java
@@ -0,0 +1,146 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan;
+
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyRegistry;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyScanner;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core.ClassScanUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core.ClassScanVisitor;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core.ExtendedClassReader;
+import org.objectweb.asm.ClassReader;
+
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * A dependency scanner for
+ * our classes. This class is thread save on object level
+ * and can be used as a singleton
+ * <p/>
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class StandardDependencyScanner implements DependencyScanner
+{
+    final ClassScanVisitor _cp = new ClassScanVisitor();
+    Logger _logger = Logger.getLogger(this.getClass().getName());
+
+    public StandardDependencyScanner() {
+
+    }
+
+    public synchronized final void fetchDependencies(ClassLoader loader, Integer engineType, String className, DependencyRegistry registry) {
+        _cp.setEngineType(engineType);
+        _cp.setRootClass(className);
+        _cp.setDependencyRegistry(registry);
+        scanClass(loader, className);
+        registry.flush(engineType);
+    }
+
+    /**
+     * this investigates the classes inheritance hierarchy for
+     * more dependencies, for now annotations and interfaces
+     * are omitted since they are not vital to our jsf dependency checks
+     * (maybe in the long run we will add interfaces and annotations as well
+     * but for now we will leave them away for speed reasons)
+     *
+     * @param loader    the classLoader which should be used for the hierarchy scanning
+     * @param className the className which has to be investigated
+     */
+    private void scanClass(ClassLoader loader, String className) {
+        //we now have to fetch the parent hierarchy
+
+        try {
+            Class toCheck = loader.loadClass(className);
+            if (toCheck == null) {
+                return;
+            }
+            scanCurrentClass(loader, className);
+
+            //we scan the hierarchy because we might have compiled-uncompiled-compiled connections, the same goes for the interfaces
+            //the basic stuff can be covered by our class scanning but for more advanced usecase we have to walk the entire hierarchy per class!
+            scanHierarchy(loader, toCheck);
+            //our asm code normally covers this but since the scanner has to work outside of asm we do it twice, the same goes for the hierarchy
+            scanInterfaces(loader, toCheck);
+        } catch (ClassNotFoundException e) {
+            _logger.log(Level.SEVERE, "DefaultDependencyScanner.scanClass() ", e);
+        }
+    }
+
+    private void scanInterfaces(ClassLoader loader, Class toCheck) {
+        Class[] interfaces = toCheck.getInterfaces();
+        if (interfaces == null || interfaces.length == 0) {
+            return;
+        }
+
+        for (Class currentInterface : interfaces) {
+            if (ClassScanUtils.isStandardNamespace(currentInterface.getName())) {
+                continue;
+            }
+            scanCurrentClass(loader, currentInterface.getName());
+
+            //We scan also our parent interfaces to get a full coverage
+            //but since interfaces do not implement anything we can cover
+            //the parents
+            scanHierarchy(loader, currentInterface);
+        }
+    }
+
+    /**
+     * scans the parent child relationship hierarchy
+     * We have to go through the entire hierarchy except for standard
+     * namespaces due to the fact that we have to cover source <->binary<->source
+     * dependencies with binary being binary classes never to be refreshed
+     * <p/>
+     * Note we can optionally do some interface checks here
+     * for now annotations are only processed by the class scanner itself
+     * so we do not process any annotation inheritance on this level
+     * we will add the feature later
+     *
+     * @param loader         the infrastructural classloader
+     * @param toCheck        the class which needs to be checked
+     */
+    private void scanHierarchy(ClassLoader loader, Class toCheck) {
+        Class parent = toCheck.getSuperclass();
+
+        while (parent != null && !ClassScanUtils.isStandardNamespace(parent.getName())) {
+            scanCurrentClass(loader, parent.getName());
+            parent = parent.getSuperclass();
+        }
+    }
+
+    /**
+     * scans one level of the inheritance hierarchy
+     *
+     * @param loader           the classLoader which should be used for the hierarchy scanning
+     * @param currentClassName the className which has to be investigated
+     */
+    private void scanCurrentClass(ClassLoader loader, String currentClassName) {
+        ClassReader cr;
+        try {
+            cr = new ExtendedClassReader(loader, currentClassName);
+            cr.accept(_cp, 0);
+        } catch (IOException e) {
+            _logger.log(Level.SEVERE, "scanCurrentClass() ", e);
+        }
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/api/ClassFilter.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/api/ClassFilter.java
new file mode 100644
index 0000000..2bfdb7c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/api/ClassFilter.java
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api;
+
+/**
+ * Generic filter pattern interface
+ * used by our dependency registry to pre-filter the classes
+ */
+public interface ClassFilter {
+
+    /**
+     * checks whether the class is allowed to be processed by the filter or not
+     *
+     * @param engineType integer value of the engine type of the class
+     * @param clazz      the class itself to be processed by the filter
+     * @return true if it is allowed to be processed false otherwise
+     */
+    public boolean isAllowed(Integer engineType, String clazz);
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/api/DependencyRegistry.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/api/DependencyRegistry.java
new file mode 100644
index 0000000..ef858ad
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/api/DependencyRegistry.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api;
+
+/**
+ * General contractual interface for a dependency registry
+ * The dependency registry is a class which stores dependencies
+ * according to an internal whitelisting system.
+ * <p/>
+ * Only classes which pass the whitelisting check will be processed
+ */
+public interface DependencyRegistry {
+    /**
+     * adds a source dependency if it is able to pass the
+     * filters
+     * A dependency is only allowed to pass if it is able
+     * to pass the internal filter list
+     *
+     * @param engineType            the engine type for this dependency
+     * @param rootClass             the root class of this scan which all dependencies are referenced from
+     * @param currentlyVisitedClass the source which includes or casts the dependencies
+     * @param dependency            the dependency to be added
+     */
+    void addDependency(Integer engineType, String rootClass, String currentlyVisitedClass, String dependency);
+
+    /**
+     * Flush which is issued at the end of processing to flush
+     * any content which has not been yet processed into our content holding
+     * data structures
+     *
+     * @param engineType the engine type which has issued the flush operation
+     */
+    void flush(Integer engineType);
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/api/DependencyScanner.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/api/DependencyScanner.java
new file mode 100644
index 0000000..6d4c50e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/api/DependencyScanner.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api;
+
+/**
+ * Standard dependency scanner interface
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface DependencyScanner {
+    /**
+     * main method every dependency scanner has to implement
+     *
+     * @param loader     the classloader which is able to serve the requested class resources
+     * @param engineType integer value of the scanning triggering engine type
+     * @param className  of the class to be scanned
+     * @param registry   the registry which should receive the results of the scan
+     */
+    public void fetchDependencies(ClassLoader loader, Integer engineType, String className, DependencyRegistry registry);
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ClassDependencies.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ClassDependencies.java
new file mode 100644
index 0000000..bc101ed
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ClassDependencies.java
@@ -0,0 +1,108 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * class dependency maps
+ * note this class is thread save
+ */
+public class ClassDependencies {
+
+    /**
+     * reverse index which shows which
+     * a class name and which classes in the system depend on that
+     * classname
+     * <p/>
+     * <p/>
+     * the key is a dependency a class has the _value is a set of classes which depend on the current class
+     */
+    private Map<String, Set<String>> reverseIndex = new ConcurrentHashMap<String, Set<String>>();
+
+    public void addDependency(String referencingClass, String referencedClass) {
+        Set<String> reverseDependencies = getReverseDependencies(referencedClass);
+        reverseDependencies.add(referencingClass);
+    }
+
+    /**
+     * adds a set of dependencies to the
+     * reverse lookup index
+     *
+     * @param referencingClass  the referencing class of this dependency
+     * @param referencedClasses the referenced class of this dependency
+     */
+    public void addDependencies(String referencingClass, Collection<String> referencedClasses) {
+        for (String referencedClass : referencedClasses) {
+            addDependency(referencingClass, referencedClass);
+        }
+    }
+
+    /**
+     * removes a referenced class an all its referencing classes!
+     *
+     * @param clazz the referenced class to be deleted
+     */
+    public void removeReferenced(String clazz) {
+        reverseIndex.remove(clazz);
+    }
+
+    /**
+     * removes a referencing class
+     * and deletes the referenced
+     * entry if it is not referenced anymore
+     *
+     * @param clazz the referencing class to delete
+     */
+    @SuppressWarnings("unused")
+    public void removeReferrer(String clazz) {
+        List<String> emptyReferences = new ArrayList<String>(reverseIndex.size());
+        for (Map.Entry<String, Set<String>> entry : reverseIndex.entrySet()) {
+            Set<String> entrySet = entry.getValue();
+            entrySet.remove(clazz);
+            if (entrySet.isEmpty()) {
+                emptyReferences.add(entry.getKey());
+            }
+        }
+        for (String toDelete : emptyReferences) {
+            removeReferenced(toDelete);
+        }
+    }
+
+    public Set<String> getReferringClasses(String referencedClass) {
+        return reverseIndex.get(referencedClass);
+    }
+
+    private Set<String> getReverseDependencies(String dependency) {
+        Set<String> dependencies = reverseIndex.get(dependency);
+        if (dependencies == null) {
+            dependencies = Collections.synchronizedSet(new HashSet<String>());
+            reverseIndex.put(dependency, dependencies);
+        }
+        return dependencies;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ClassScanUtils.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ClassScanUtils.java
new file mode 100644
index 0000000..f9f43d7
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ClassScanUtils.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Utils which store the shared code
+ */
+public class ClassScanUtils {
+
+    private static final String DOMAIN_JAVA = "java.";
+    private static final String DOMAIN_JAVAX = "javax.";
+    private static final String DOMAIN_COM_SUN = "com.sun";
+    private static final String DOMAIN_APACHE = "org.apache.";
+    private static final String DOMAIN_MYFACES = "org.apache.myfaces";
+    private static final String DOMAIN_JBOSS = "org.jboss";
+    private static final String DOMAIN_SPRING = "org.springframework";
+    private static final String DOMAIN_JUNIT = "org.junit";
+    private static final String DOMAIN_ECLIPSE = "org.eclipse";
+    private static final String DOMAIN_NETBEANS = "org.netbeans";
+    private static final String DOMAIN_GROOVY = "groovy.";
+    private static final String DOMAIN_SCALA = "scala.";
+    private static final String DOMAIN_JYTHON = "jython.";
+    private static final String DOMAIN_JRUBY = "jruby.";
+
+    /**
+     * checks if a given package or class
+     * belongs to a standard namespaces which is
+     * untouchable by an implementer
+     *
+     * @param in the page or fully qualified classname
+     * @return true if it belongs to one of the standard namespaces, false if not
+     */
+    public static boolean isStandardNamespace(String in) {
+        //We don't use a regexp here, because an test has shown that direct startsWith is 5 times as fast as applying
+        //a precompiled regexp with match
+
+        //shortcuts for a faster killing of the add before going into the heavier
+        //whitelist check, this one kills off classes which belong to standard
+        //and semi standard namespaces before whitelisting the rest
+        return in.startsWith(DOMAIN_JAVA) ||
+                in.startsWith(DOMAIN_JAVAX) ||
+                in.startsWith(DOMAIN_COM_SUN) ||
+                in.startsWith(DOMAIN_GROOVY) ||
+                in.startsWith(DOMAIN_JYTHON) ||
+                in.startsWith(DOMAIN_JRUBY) ||
+                in.startsWith(DOMAIN_SCALA) ||
+                in.startsWith(DOMAIN_JBOSS) ||
+                in.startsWith(DOMAIN_SPRING) ||
+                in.startsWith(DOMAIN_JUNIT) ||
+                in.startsWith(DOMAIN_ECLIPSE) ||
+                in.startsWith(DOMAIN_NETBEANS) ||
+
+                //apache domain has to be treated specially myfaces can be referenced due to our tests and demos, otherwise this one
+                //is also treated as taboo zone
+                ((in.startsWith(DOMAIN_APACHE) &&
+                        !in.startsWith(DOMAIN_MYFACES)));
+    }
+   
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ClassScanVisitor.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ClassScanVisitor.java
new file mode 100644
index 0000000..188f1c5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ClassScanVisitor.java
@@ -0,0 +1,171 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core;
+
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyRegistry;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.registry.ExternalFilterDependencyRegistry;
+import org.objectweb.asm.AnnotationVisitor;
+import org.objectweb.asm.Attribute;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.FieldVisitor;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Type;
+import org.objectweb.asm.signature.SignatureReader;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * The central visitor for the class scanner. ASM uses a visitor interface for high performance
+ * to step through classes.
+ * <p/>
+ * We reuse this pattern to get the best performance possible in this critical part of the application
+ * which also is triggered by the startup process.
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class ClassScanVisitor implements ClassVisitor {
+
+    DependencyRegistry _dependencyRegistry;
+    String _currentlyVistedClass;
+    Integer _engineType;
+    String _rootClass;
+    static final Logger _log = Logger.getLogger(ClassScanVisitor.class.getName());
+
+    public ClassScanVisitor() {
+    }
+
+    public ClassScanVisitor(Integer engineType, String rootClass, ExternalFilterDependencyRegistry registry) {
+        _dependencyRegistry = registry;
+        _engineType = engineType;
+        _rootClass = rootClass;
+
+    }
+
+    public void visit(int version, int access, String name,
+                      String signature, String superName, String[] interfaces) {
+        _currentlyVistedClass = Type.getObjectType(name).getClassName();
+        if (superName != null)
+            registerDependency(Type.getObjectType(superName));
+
+        handleGenerics(signature, true);
+
+        if (interfaces != null && interfaces.length > 0) {
+            for (String currInterface : interfaces) {
+                if (currInterface != null)
+                    registerDependency(Type.getObjectType(currInterface));
+            }
+        }
+    }
+
+    public void visitSource(String source, String debug) {
+        _log.log(Level.FINEST, "visitSource: {0}", source);
+    }
+
+    public void visitOuterClass(String owner, String name, String description) {
+        //nothing has to be done here I guess because
+        //we only try to fetch the dependencies
+        _log.log(Level.FINEST, "visitOuterClass: {0} {1} {2}", new String[]{owner, name, description});
+
+    }
+
+    public AnnotationVisitor visitAnnotation(String description,
+                                             boolean visible) {
+        if (description != null)
+            registerDependency(Type.getType(description));
+
+        return null;
+    }
+
+    public void visitAttribute(Attribute attribute) {
+    }
+
+    public void visitInnerClass(String name, String outerName,
+                                String innerName, int access) {
+        //same as outer class
+        _log.log(Level.FINEST, "visitInnerClass: {0}  {1} {2} ", new String[]{name, outerName, innerName});
+    }
+
+    public FieldVisitor visitField(int access, String name, String description,
+                                   String signature, Object value) {
+        //_log._log(Level.INFO, "Field:{0} {1} ", new Object[]{description, name});
+        handleGenerics(signature, false);
+        if (description != null)
+            registerDependency(Type.getType(description));
+
+        return null;
+    }
+
+    private void registerDependency(Type dependency) {
+        String className = dependency.getClassName();
+        if (className.endsWith("[]")) {
+            className = className.substring(0, className.indexOf("["));
+        }
+
+        if (_dependencyRegistry != null) {
+            _dependencyRegistry.addDependency(_engineType, _rootClass, _currentlyVistedClass, className);
+        }
+
+    }
+
+    public MethodVisitor visitMethod(int access, String name,
+                                     String description, String signature, String[] exceptions) {
+
+        if (description != null)
+            registerDependency(Type.getReturnType(description));
+
+        handleGenerics(signature, true);
+
+        if (description != null) {
+            for (Type argumentType : Type.getArgumentTypes(description)) {
+                registerDependency(argumentType);
+            }
+        }
+        return new MethodScanVisitor(_engineType, _rootClass, _currentlyVistedClass, _dependencyRegistry);
+    }
+
+    private void handleGenerics(String signature, boolean accept) {
+        if (signature != null && signature.contains("<")) {
+            SignatureReader reader = new SignatureReader(signature);
+            if (accept)
+                reader.accept(new DependencySignatureVisitor(_dependencyRegistry, _engineType, _rootClass, _currentlyVistedClass));
+            else
+                reader.acceptType(new DependencySignatureVisitor(_dependencyRegistry, _engineType, _rootClass, _currentlyVistedClass));
+        }
+    }
+
+    public void visitEnd() {
+        //_log.info("}");
+    }
+
+    public void setDependencyRegistry(DependencyRegistry dependencyRegistry) {
+        _dependencyRegistry = dependencyRegistry;
+    }
+
+    public void setEngineType(Integer engineType) {
+        _engineType = engineType;
+    }
+
+    public void setRootClass(String rootClass) {
+        _rootClass = rootClass;
+    }
+}
+
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/DependencySignatureVisitor.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/DependencySignatureVisitor.java
new file mode 100644
index 0000000..d1873ce
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/DependencySignatureVisitor.java
@@ -0,0 +1,122 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core;
+
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyRegistry;
+import org.objectweb.asm.Type;
+import org.objectweb.asm.signature.SignatureVisitor;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * We need the signature visitor to get a grip on generics
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class DependencySignatureVisitor implements SignatureVisitor {
+
+    static final Logger _log = Logger.getLogger(DependencySignatureVisitor.class.getName());
+
+    String _rootClass;
+    String _currentClass;
+    DependencyRegistry _registry;
+    Integer _engineType;
+
+    public DependencySignatureVisitor(DependencyRegistry registry, Integer engineType, String currentClass, String rootClass) {
+        _registry = registry;
+        _currentClass = currentClass;
+        _rootClass = rootClass;
+        _engineType = engineType;
+    }
+
+    public void visitFormalTypeParameter(String className) {
+        if (_log.isLoggable(Level.FINEST))
+            _log.log(Level.FINEST, "visitFormalTypeParameter: {0}", className);
+       //the information is lacking the package information on this level no fully qualified name here 
+       // _registry.addDependency(_engineType, _rootClass, _currentClass, Type.getObjectType(className).getClassName());
+    }
+
+    public SignatureVisitor visitClassBound() {
+        return this;
+    }
+
+    public SignatureVisitor visitInterfaceBound() {
+        return this;
+    }
+
+    public SignatureVisitor visitSuperclass() {
+        return this;
+    }
+
+    public SignatureVisitor visitInterface() {
+        return this;
+    }
+
+    public SignatureVisitor visitParameterType() {
+        return this;
+    }
+
+    public SignatureVisitor visitReturnType() {
+        return this;
+    }
+
+    public SignatureVisitor visitExceptionType() {
+        return this;
+    }
+
+    public void visitBaseType(char c) {
+
+    }
+
+    public void visitTypeVariable(String className) {
+        if (_log.isLoggable(Level.FINEST))
+            _log.log(Level.FINEST, "visitTypeVariable: {0}", className);
+    }
+
+    public SignatureVisitor visitArrayType() {
+        return this;
+    }
+
+    public void visitClassType(String className) {
+        if (_log.isLoggable(Level.FINEST))
+            _log.log(Level.FINEST, "visitClassType: {0}", className);
+        _registry.addDependency(_engineType, _rootClass, _currentClass, Type.getObjectType(className).getClassName());
+    }
+
+    public void visitInnerClassType(String className) {
+        if (_log.isLoggable(Level.FINEST))
+            _log.log(Level.FINEST, "visitInnerClassType: {0}", className);
+    }
+
+    public void visitTypeArgument() {
+
+    }
+
+    public SignatureVisitor visitTypeArgument(char c) {
+        return this;
+    }
+
+    public void visitEnd() {
+
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ExtendedClassReader.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ExtendedClassReader.java
new file mode 100644
index 0000000..f8b9081
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/ExtendedClassReader.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core;
+
+import org.objectweb.asm.ClassReader;
+
+import java.io.IOException;
+
+/**
+ * Class reader for ASM which allows to plug our own loader instead
+ * of the default one
+ * <p/>
+ * (ASM makes too many assumptions regarding the loader)
+ */
+public class ExtendedClassReader extends ClassReader {
+    /**
+     * classloader pluggable classreader
+     *
+     * @param loader    the loader which has to be plugged into the system
+     * @param className the class name for the class which has to be investigated
+     * @throws java.io.IOException in case of a loading error (class cannot be loaded for whatever reason)
+     */
+    public ExtendedClassReader(ClassLoader loader, String className) throws IOException {
+        super(loader.getResourceAsStream(className.replace('.', '/')
+                + ".class"));
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/MethodScanVisitor.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/MethodScanVisitor.java
new file mode 100644
index 0000000..7de46fb
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/core/MethodScanVisitor.java
@@ -0,0 +1,239 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core;
+
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyRegistry;
+import org.objectweb.asm.AnnotationVisitor;
+import org.objectweb.asm.Attribute;
+import org.objectweb.asm.Label;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Type;
+import org.objectweb.asm.signature.SignatureReader;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * A scan visitor on method level
+ * to cope with method scoped dependencies like inlined
+ * fully qualified names, annotations, local variables
+ * etc...
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+class MethodScanVisitor implements MethodVisitor {
+
+    // static final Logger log = Logger.getLogger("ClassScanVisitor");
+
+    String _currentlyVisitedClass = null;
+    String _rootClass;
+    Integer _engineType = null;
+    DependencyRegistry _dependencyRegistry = null;
+
+    static Logger _log = Logger.getLogger(MethodScanVisitor.class.getName());
+
+    public MethodScanVisitor(Integer engineType, String rootClass, String currentlyVisitedClass, DependencyRegistry registry) {
+        _currentlyVisitedClass = currentlyVisitedClass;
+        _dependencyRegistry = registry;
+        _engineType = engineType;
+        _rootClass = rootClass;
+    }
+
+    public AnnotationVisitor visitAnnotationDefault() {
+        return null;
+    }
+
+    public AnnotationVisitor visitAnnotation(String description, boolean b) {
+        if(description != null) {
+            registerDependency(Type.getType(description));
+        }
+        return null;
+    }
+
+    public AnnotationVisitor visitParameterAnnotation(int opCode, String description, boolean b) {
+        if(description != null) {
+            registerDependency(Type.getType(description));
+        }
+        return null;
+    }
+
+    public void visitAttribute(Attribute attribute) {
+        if (_log.isLoggable(Level.FINEST))
+            _log.log(Level.FINEST, "visitAttribute {0}", attribute.type);
+    }
+
+    public void visitCode() {
+        //log.log(Level.INFO, "Method code");
+    }
+
+    public void visitFrame(int opCode1, int opCode2, Object[] objects, int opCode3, Object[] objects1) {
+        if (_log.isLoggable(Level.FINEST))
+            _log.log(Level.FINEST, "visitFrame {0}", "");
+
+    }
+
+    public void visitInsn(int opCode) {
+    }
+
+    public void visitIntInsn(int opCode1, int opCode2) {
+    }
+
+    public void visitVarInsn(int opCode1, int opCode2) {
+    }
+
+    public void visitTypeInsn(int opCode, String castType) {
+        //cast
+        // log.log(Level.INFO, "TypeInsn: {0} ", new String[]{castType});
+        if (castType != null) {
+            registerDependency(Type.getObjectType(castType));
+            if (_log.isLoggable(Level.FINEST))
+                _log.log(Level.FINEST, "visitTypeInsn {0}", castType);
+        }
+    }
+
+    private void registerDependency(Type dependency) {
+        
+        String className = dependency.getClassName();
+
+        
+        if (className.endsWith("[]")) {
+            className = className.substring(0, className.indexOf("["));
+        }
+
+        if (_dependencyRegistry != null) {
+            _dependencyRegistry.addDependency(_engineType, _rootClass, _currentlyVisitedClass, className);
+        }
+    }
+
+    /**
+     * @param opCode     the opCode of the insert statement
+     * @param owner      hosting classname of field (always the calling class afaik)
+     * @param name       internal descriptor
+     * @param descriptor field type
+     */
+    public void visitFieldInsn(int opCode, String owner, String name, String descriptor) {
+        //    log.log(Level.INFO, "visitFieldInsn {0} {1} {2}", new Object[]{owner, name, descriptor});
+        //we have to deal with static imports as special case of field insertions
+        if (name != null && name.length() > 6 && name.startsWith("class$")) {
+            //special fallback for groovy static imports which are added as fields
+            name = "L" + name.substring(6).replaceAll("\\$", ".") + ";";
+            registerDependency(Type.getType(name));
+        }
+        if (descriptor != null) {
+            registerDependency(Type.getType(descriptor));
+        }
+
+        if (_log.isLoggable(Level.FINEST))
+            _log.log(Level.FINEST, "visitFieldInsn {0}", descriptor);
+
+    }
+
+    /**
+     * Method call
+     *
+     * @param opc   internal opcode
+     * @param owner hosting classname of the method
+     * @param name  method name
+     * @param desc  descriptor string
+     */
+    public void visitMethodInsn(int opc, String owner, String name, String desc) {
+        //s2 arguments list
+        if (desc != null) {
+            registerDependency(Type.getReturnType(desc));
+            Type[] argumentTypes = Type.getArgumentTypes(desc);
+            if (argumentTypes != null) {
+                for (Type argumentType : argumentTypes) {
+                    registerDependency(argumentType);
+                }
+            }
+        }
+
+        if (owner != null)
+            registerDependency(Type.getObjectType(owner));
+
+    }
+
+    public void visitJumpInsn(int i, Label label) {
+
+    }
+
+    public void visitLabel(Label label) {
+
+    }
+
+    public void visitLdcInsn(Object o) {
+
+    }
+
+    public void visitIincInsn(int i, int i1) {
+
+    }
+
+    public void visitTableSwitchInsn(int i, int i1, Label label, Label[] labels) {
+
+    }
+
+    public void visitLookupSwitchInsn(Label label, int[] ints, Label[] labels) {
+
+    }
+
+    public void visitMultiANewArrayInsn(String s, int i) {
+        if (_log.isLoggable(Level.FINEST))
+            _log.log(Level.FINEST, "visitMultiANewArrayInsn {0}", s);
+    }
+
+    public void visitTryCatchBlock(Label label, Label label1, Label label2, String catchType) {
+        //try catch block type information in the last string
+        //log.log(Level.INFO, "visitTryCatchBlock: {0} {1} {2} {3}", new Object[]{label.toString(), label1.toString(), label2.toString(), catchType});
+        if (catchType != null) {
+            registerDependency(Type.getObjectType(catchType));
+        }
+    }
+
+    public void visitLocalVariable(String name, String description, String signature, Label label, Label label1, int i) {
+        //local variable on method level
+        if (description != null) {
+            registerDependency(Type.getType(description));
+        }
+        if (signature != null) {
+            handleGenerics(signature);
+        }
+    }
+
+    public void visitLineNumber(int i, Label label) {
+
+    }
+
+    public void visitMaxs(int i, int i1) {
+
+    }
+
+    public void visitEnd() {
+
+    }
+
+    private void handleGenerics(String signature) {
+        if (signature != null && signature.contains("<")) {
+            SignatureReader reader = new SignatureReader(signature);
+            reader.acceptType(new DependencySignatureVisitor(_dependencyRegistry, _engineType, _rootClass, _currentlyVisitedClass));
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/filter/ScanIdentifierFilter.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/filter/ScanIdentifierFilter.java
new file mode 100644
index 0000000..03be5b2
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/filter/ScanIdentifierFilter.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.filter;
+
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.ClassFilter;
+
+import java.util.Arrays;
+
+/**
+ * a filter which works on the scan identifiers
+ * only classes which trigger on the same identifier
+ * are allowed to be passed through
+ */
+public class ScanIdentifierFilter implements ClassFilter
+{
+
+    private final int [] _engineType;
+
+    public ScanIdentifierFilter(int ... engineType) {
+        _engineType = Arrays.copyOf(engineType, engineType.length);
+    }
+
+    public boolean isAllowed(Integer identifier, String clazz) {
+        int id = identifier;
+        for(int engineType: _engineType) {
+            boolean allowed = engineType == id;
+            if(allowed) return true;
+        }
+        return false;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/filter/StandardNamespaceFilter.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/filter/StandardNamespaceFilter.java
new file mode 100644
index 0000000..6fc6724
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/filter/StandardNamespaceFilter.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.filter;
+
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.ClassFilter;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core.ClassScanUtils;
+
+/**
+ * Filter facade for our standard namespace check
+ */
+public class StandardNamespaceFilter implements ClassFilter
+{
+
+    /**
+     * is allowed implementation for our standard namespace filter
+     *
+     * @param engineType integer value of the engine type of the class
+     * @param clazz      the class itself to be processed by the filter
+     * @return true if it is not in the standard namespaces false otherwise
+     */
+    public final boolean isAllowed(Integer engineType, String clazz) {
+        return !ClassScanUtils.isStandardNamespace(clazz);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/filter/WhitelistFilter.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/filter/WhitelistFilter.java
new file mode 100644
index 0000000..6087ad9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/filter/WhitelistFilter.java
@@ -0,0 +1,130 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.filter;
+
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.ClassFilter;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Filter class which depends upon a list of whitelisted packages
+ * wildcards in this filter are implicit which means
+ * <p/>
+ * org.apache.myfaces includes all files
+ * under org.apache.myfaces
+ */
+public class WhitelistFilter implements ClassFilter
+{
+
+    WhiteListNode _whiteList = new WhiteListNode();
+
+    /*we use a package tree here to make the whitelist check as performant as possible*/
+
+    class WhiteListNode {
+        Map<String, WhiteListNode> _value = new ConcurrentHashMap<String, WhiteListNode>();
+
+        public WhiteListNode addEntry(String key) {
+            if (_value.containsKey(key)) {
+                return _value.get(key);
+            }
+            WhiteListNode retVal = new WhiteListNode();
+            _value.put(key, retVal);
+            return retVal;
+        }
+
+        public boolean hasChildren() {
+            return !_value.isEmpty();
+        }
+
+        public Map<String, WhiteListNode> getValue() {
+            return _value;
+        }
+
+        public void setValue(Map<String, WhiteListNode> value) {
+            this._value = value;
+        }
+
+        public WhiteListNode get(String key) {
+            return _value.get(key);
+        }
+    }
+
+    public WhitelistFilter(String... whiteList) {
+        for (String singlePackage : whiteList) {
+            addEntry(singlePackage);
+        }
+    }
+
+    public WhitelistFilter(Collection<String> whiteList) {
+        for (String singlePackage : whiteList) {
+            addEntry(singlePackage);
+        }
+    }
+
+    /**
+     * whitespace is allowed implementation
+     *
+     * @param engineType integer value of the engine type of the class
+     * @param clazz      the class itself to be processed by the filter
+     * @return true if it is white-spaced, false otherwise
+     */
+    public final boolean isAllowed(Integer engineType, String clazz) {
+        String[] subParts = clazz.split("\\.");
+        WhiteListNode currPackage = _whiteList;
+        WhiteListNode parentPackage = null;
+        for (String subPart : subParts) {
+            currPackage = currPackage.get(subPart);
+            if (isRootPackageMismatch(currPackage, parentPackage)) {
+                return false;
+            } else if (isSubpackage(currPackage, parentPackage)) {
+                return true;
+            } else if (isMismatch(currPackage)) {
+                return false;
+            }
+
+            parentPackage = currPackage;
+        }
+        return true;
+    }
+
+    private void addEntry(String singlePackage) {
+        String[] subPackages = singlePackage.split("\\.");
+        WhiteListNode currPackage = _whiteList;
+        for (String subPackage : subPackages) {
+            currPackage = currPackage.addEntry(subPackage);
+        }
+    }
+
+    //special conditions extracted for readability reasons in the core
+    //algorithm
+
+    private boolean isMismatch(WhiteListNode currPackage) {
+        return currPackage == null;
+    }
+
+    private boolean isSubpackage(WhiteListNode currPackage, WhiteListNode parentPackage) {
+        return currPackage == null && parentPackage != null && !parentPackage.hasChildren();
+    }
+
+    private boolean isRootPackageMismatch(WhiteListNode currPackage, WhiteListNode parentPackage) {
+        return currPackage == null && parentPackage == null;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/loaders/ScannerClassloader.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/loaders/ScannerClassloader.java
new file mode 100644
index 0000000..cbf466c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/loaders/ScannerClassloader.java
@@ -0,0 +1,148 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.loaders;
+
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * TODO replace it with the ThrowAwayLoader
+ */
+@Deprecated
+public class ScannerClassloader extends ClassLoader
+{
+
+    File _tempDir = null;
+
+    Map<String, Class> _alreadyScanned = new HashMap<String, Class>();
+
+    final Logger _logger = Logger.getLogger(ScannerClassloader.class.getName());
+
+    public ScannerClassloader(ClassLoader classLoader, int scriptingEngine, String engineExtension, File tempDir)
+    {
+        super(classLoader);
+
+        this._tempDir = tempDir;
+    }
+
+    @Override
+    public InputStream getResourceAsStream(String name)
+    {
+        File resource = new File(_tempDir.getAbsolutePath() + File.separator + name);
+        if (resource.exists())
+        {
+            try
+            {
+                return new FileInputStream(resource);
+            }
+            catch (FileNotFoundException e)
+            {
+                return super.getResourceAsStream(name);
+            }
+        }
+        return super.getResourceAsStream(name);
+    }
+
+    public File getClassFile(String className)
+    {
+        return ClassUtils.classNameToFile(_tempDir.getAbsolutePath(), className);
+    }
+
+    @Override
+    public Class<?> loadClass(String className) throws ClassNotFoundException
+    {
+        //check if our class exists in the tempDir
+
+        if (_alreadyScanned.containsKey(className))
+        {
+            return _alreadyScanned.get(className);
+        }
+
+        File target = getClassFile(className);
+        if (!target.exists())
+        {
+            return super.loadClass(className);
+        }
+
+        //ClassResource data = WeavingContext.getFileChangedDaemon().getClassMap().get(className);
+        //if (data != null && !data.getRefreshAttribute().requiresRefresh()) {
+        //    return data.getAClass();
+        //}
+
+        FileInputStream iStream = null;
+
+        int fileLength;
+        byte[] fileContent;
+        try
+        {
+            fileLength = (int) target.length();
+            fileContent = new byte[fileLength];
+            iStream = new FileInputStream(target);
+            int len = iStream.read(fileContent);
+            if (_logger.isLoggable(Level.FINER))
+            {
+                _logger.log(Level.FINER, "class read {0} bytes read", String.valueOf(len));
+            }
+            //we have to do it here because just in case
+            //a dependent class is loaded as well we run into classcast exceptions
+            Class retVal = super.defineClass(className, fileContent, 0, fileLength);
+            _alreadyScanned.put(className, retVal);
+            return retVal;
+
+        }
+        catch (FileNotFoundException e)
+        {
+            throw new ClassNotFoundException(e.toString());
+        }
+        catch (IOException e)
+        {
+            throw new ClassNotFoundException(e.toString());
+        }
+        finally
+        {
+            if (iStream != null)
+            {
+                try
+                {
+                    iStream.close();
+                }
+                catch (Exception e)
+                {
+                    _logger.log(Level.SEVERE, "", e);
+                }
+            }
+        }
+
+    }
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/registry/DependencyRegistryImpl.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/registry/DependencyRegistryImpl.java
new file mode 100644
index 0000000..03e1ee8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/registry/DependencyRegistryImpl.java
@@ -0,0 +1,142 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.registry;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.common.util.StringUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.ClassFilter;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.core.ClassDependencies;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.filter.ScanIdentifierFilter;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.filter.StandardNamespaceFilter;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * registry facade which is used to track our dependencies
+ */
+public class DependencyRegistryImpl implements ExternalFilterDependencyRegistry
+{
+    List<ClassFilter> _filters = new LinkedList<ClassFilter>();
+
+    ClassDependencies _dependencMap;
+
+    //private volatile Strategy _registrationStrategy;
+    final Integer _engineType;
+
+    /**
+     * constructor for our facade
+     *
+     * @param engineType    the engine type this registry should support
+     * @param dependencyMap the dependency map which stores the dependencies
+     */
+    public DependencyRegistryImpl(Integer engineType, ClassDependencies dependencyMap) {
+        _dependencMap = dependencyMap;
+        _engineType = engineType;
+
+        _filters.add(new ScanIdentifierFilter(_engineType, ScriptingConst.ENGINE_TYPE_JSF_ALL, ScriptingConst.ENGINE_TYPE_JSF_NO_ENGINE));
+        _filters.add(new StandardNamespaceFilter());
+    }
+
+    /**
+     * Clears the entire filter map
+     */
+    public void clearFilters() {
+        _filters = new LinkedList<ClassFilter>();
+
+        _filters.add(new ScanIdentifierFilter(_engineType, ScriptingConst.ENGINE_TYPE_JSF_ALL,
+                ScriptingConst.ENGINE_TYPE_JSF_NO_ENGINE));
+        _filters.add(new StandardNamespaceFilter());
+    }
+
+    /**
+     * adds a new filter
+     *
+     * @param filter the filter to be added
+     */
+    public void addFilter(ClassFilter filter) {
+        _filters.add(filter);
+    }
+
+    /**
+     * checks if the className is allowed in the current filter chain
+     *
+     * @param engineType an identifier for the current scan type (jsf java scan for instance)
+     * @param className  the classname to be checked
+     * @return true if a filter triggers false if not
+     */
+    public boolean isAllowed(Integer engineType, String className) {
+        Iterator<ClassFilter> it = _filters.iterator();
+        while(it.hasNext()) {
+            ClassFilter filter = it.next();
+            if (!filter.isAllowed(_engineType, className)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * adds a dependency to our dependency map (usually rootclass -> dependency and currentClass -> dependency)
+     *
+     * @param engineType            the engine type for this dependency
+     * @param rootClass             the root class of this scan which all dependencies are referenced from
+     * @param currentlyVisitedClass the source which includes or casts the dependencies
+     * @param dependency            the dependency to be added
+     */
+    public void addDependency(Integer engineType, String rootClass, String currentlyVisitedClass, String dependency) {
+
+        if (StringUtils.isBlank(dependency)) {
+            return;
+        }
+
+        if (currentlyVisitedClass != null && currentlyVisitedClass.equals(dependency)) {
+            return;
+        }
+
+
+
+        if (!isAllowed(engineType, dependency)) {
+            return;
+        }
+
+        //not needed
+        //if(!StringUtils.isBlank(currentlyVisitedClass)) {
+        //    _dependencMap.addDependency(currentlyVisitedClass, dependency);
+        //}
+
+        //for now we code it into a list like we used to do before
+        //but in the long run we have to directly register
+        //to save one step
+        //getDependencySet(source).add(dependency);
+        if(!StringUtils.isBlank(rootClass)) {
+            _dependencMap.addDependency(rootClass, dependency);
+        }
+    }
+
+    /**
+     * flush to flush down our stored dependencies into our final map
+     */
+    public void flush(Integer engineType) {
+        //_registrationStrategy.apply(_dependencies);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/registry/ExternalFilterDependencyRegistry.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/registry/ExternalFilterDependencyRegistry.java
new file mode 100644
index 0000000..00d0e0b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/registry/ExternalFilterDependencyRegistry.java
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.registry;
+
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.ClassFilter;
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyRegistry;
+
+/**
+ * General contractual interface for a dependency registry with external filters
+ * being settable
+ * <p/>
+ * The dependency registry is a class which stores dependencies
+ * according to an internal whitelisting system.
+ * <p/>
+ * Only classes which pass the whitelisting check will be processed
+ */
+public interface ExternalFilterDependencyRegistry extends DependencyRegistry
+{
+
+    /**
+     * Clears the internal filters
+     * for the registry
+     */
+    void clearFilters();
+
+    /**
+     * adds another filter to the internal filter list
+     *
+     * @param filter the filter to be added
+     */
+    void addFilter(ClassFilter filter);
+
+    /**
+     * Allowance check for external shortcutting
+     * This check triggers into the internal filters
+     * to pre-check if a class is allowed to pass or not
+     *
+     * @param className      the classname to be checked
+     * @param engineType an identifier for the current scan type (jsf java scan for instance)
+     * @return true if it is false otherwise
+     */
+    public boolean isAllowed(Integer engineType, String className);
+
+    /**
+     * Flush operation to batch sync
+     * the current dependencies against a storage
+     * <p/>
+     * (will be removed later once we have all the code transitioned
+     * to the registry system)
+     */
+    void flush(Integer engineType);
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/registry/MasterDependencyRegistry.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/registry/MasterDependencyRegistry.java
new file mode 100644
index 0000000..6782669
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/registry/MasterDependencyRegistry.java
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.registry;
+
+import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyRegistry;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * A master dependency registry which keeps track of various
+ * sub-registries in our dependency scanning system
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class MasterDependencyRegistry implements DependencyRegistry
+{
+
+    /**
+     * We keep our central registry in a map
+     * with the engineType as key value to detect which
+     * registry needs to be triggered
+     */
+    private Map<Integer, DependencyRegistry> _subRegistries = new ConcurrentHashMap<Integer, DependencyRegistry>();
+
+    /**
+     * adds a new dependency to all registered registries
+     *
+     * @param engineType   the engine type which holds the registry
+     * @param rootClass    the root class of this scan which all dependencies are referenced from
+     * @param currentClass the current class scanned
+     * @param dependency   the dependency to be added relative to the current class
+     */
+    public void addDependency(Integer engineType, String rootClass, String currentClass, String dependency) {
+        for (Map.Entry<Integer, DependencyRegistry> entry : _subRegistries.entrySet()) {
+            entry.getValue().addDependency(engineType, rootClass, currentClass, dependency);
+        }
+    }
+
+    /**
+     * Flush which is issued at the end of processing to flush
+     * any content which has not been yet processed into our content holding
+     * data structures
+     *
+     * @param engineType the engine type which has issued the flush operation
+     */
+    public void flush(Integer engineType) {
+        for (Map.Entry<Integer, DependencyRegistry> entry : _subRegistries.entrySet()) {
+            entry.getValue().flush(engineType);
+        }
+    }
+
+    /**
+     * adds a subregistry to our current master registry
+     *
+     * @param engineType the engine type which is the key to our subregistry
+     * @param registry   the subregistry which has to be added
+     */
+    public void addSubregistry(Integer engineType, DependencyRegistry registry) {
+        _subRegistries.put(engineType, registry);
+    }
+
+    /**
+     * Getter for getting a subregistry from our given registry
+     *
+     * @param engineType the engine type to search for
+     * @return the subregistry according to the engine type, or null if none is found
+     */
+    public DependencyRegistry getSubregistry(Integer engineType) {
+        return _subRegistries.get(engineType);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java
new file mode 100644
index 0000000..1e3feac
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java
@@ -0,0 +1,198 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.monitor;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.events.TaintedEvent;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ClassResource extends WatchedResource
+{
+
+    Logger logger = Logger.getLogger(this.getClass().getName());
+
+    /*
+    * volatile due to the ram concurrency behavior
+    * of the instance vars jdk 5+
+    */
+
+    //TODO we probably can drop the file definitions
+    //the class has all meta data internally via findResource
+    //on its corresponding classloader
+    //caching the info however probably is faster
+    volatile Class _aClass = null;
+    volatile File _sourceFile;
+
+    volatile int _scriptingEngine = ScriptingConst.ENGINE_TYPE_JSF_NO_ENGINE;
+    /*non initial change for delta change investigation*/
+    volatile boolean changedForCompile = false;
+
+
+    public String getSourceFile()
+    {
+        String sourceDir = getSourceDir();
+        if(sourceDir == null) {
+            sourceDir = _sourceFile.getParent()+File.separator;
+        }
+        return _sourceFile.getAbsolutePath().substring(sourceDir.length());
+    }
+
+    public String getSourceDir()
+    {
+        Collection<String> sourceRoots = WeavingContext.getInstance().getConfiguration().getSourceDirs(_scriptingEngine);
+        String fileDir = _sourceFile.getAbsolutePath();
+        fileDir = fileDir.replaceAll("\\\\", "/");
+        for (String sourceRoot : sourceRoots)
+        {
+            sourceRoot = sourceRoot.replaceAll("\\\\", "/");
+            if (fileDir.startsWith(sourceRoot))
+            {
+                return sourceRoot;
+            }
+        }
+        return null;
+    }
+
+
+
+    /**
+     * identifier for this resource is the classname
+     *
+     * @return
+     */
+    public String getIdentifier()
+    {
+        String targetDir = WeavingContext.getInstance().getConfiguration().getCompileTarget().getAbsolutePath();
+        String className = ClassUtils.relativeFileToClassName(getSourceFile());
+
+        return className;
+    }
+
+    public void setTainted(boolean value)
+    {
+        //if (isTainted()) return;
+        if (value)
+        {
+            WeavingContext.getInstance().markLastTaint();
+            //TODO add logging event here
+            logger.info("[EXT-SCRIPTING] tainting " + getSourceFile());
+            WeavingContext.getInstance().addTaintLogEntry(this);
+            WeavingContext.getInstance().gcTaintLog();
+            WeavingContext.getInstance().sendWeavingEvent(new TaintedEvent(this));
+        }
+        tainted = value;
+    }
+
+    public void setTainted(boolean value, boolean noLog)
+    {
+        tainted = value;
+    }
+    /**
+     * @return true if the source file has been modified compared to its classfile
+     */
+    public boolean isTainted()
+    {
+        return tainted;
+    }
+
+    public boolean needsRecompile()
+    {
+        String targetDir = WeavingContext.getInstance().getConfiguration().getCompileTarget().getAbsolutePath();
+        String className = ClassUtils.relativeFileToClassName(getSourceFile());
+        className = targetDir + File.separator + className.replaceAll("\\.", FileUtils.getFileSeparatorForRegex()) + ".class";
+        File targetClass = new File(className);
+        return !targetClass.exists() || targetClass.lastModified() < _sourceFile.lastModified();
+    }
+
+    public boolean stillExists()
+    {
+        return _sourceFile.exists();
+    }
+
+    public boolean isChangedForCompile()
+    {
+        return changedForCompile;
+    }
+
+    public void setChangedForCompile(boolean changedForCompile)
+    {
+        this.changedForCompile = changedForCompile;
+    }
+
+
+    @Override
+    /**
+     * returns the source file in this case
+     */
+    public File getFile()
+    {
+        try
+        {
+            return _sourceFile;
+        }
+        catch (NullPointerException ex)
+        {
+            return null;
+        }
+    }
+
+    public void setFile(File sourceFile)
+    {
+        _sourceFile = sourceFile;
+    }
+
+    public Class getAClass()
+    {
+        return _aClass;
+    }
+
+    public void setAClass(Class aClass)
+    {
+        this._aClass = aClass;
+    }
+
+    public int getScriptingEngine()
+    {
+        return _scriptingEngine;
+    }
+
+    public void setScriptingEngine(int scriptingEngine)
+    {
+        this._scriptingEngine = scriptingEngine;
+    }
+
+    @Override
+    protected Object clone() throws CloneNotSupportedException
+    {
+        ClassResource retVal = (ClassResource) super.clone();
+        return retVal;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/ResourceMonitor.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/ResourceMonitor.java
new file mode 100644
index 0000000..f292d3f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/ResourceMonitor.java
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.monitor;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.events.BeginLifecycle;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.events.EndLifecycle;
+
+import javax.servlet.ServletContext;
+import java.lang.ref.WeakReference;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Central daemon thread which watches the resources
+ * for changes and marks them as changed.
+ * This watchdog daemon is the central core
+ * of the entire scripting engine it runs asynchronously
+ * to your program and keeps an eye on the resources
+ * and their dependencies, once a file has changed
+ * all the referring dependencies are also marked
+ * as being to reloaded.
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class ResourceMonitor extends Thread
+{
+
+    private static final String CONTEXT_KEY = "extscriptDaemon";
+
+    static ResourceMonitor _instance = null;
+
+
+    //Map<String, ClassResource> _classMap = new ConcurrentHashMap<String, ClassResource>(8, 0.75f, 1);
+    //ClassDependencies _dependencyMap = new ClassDependencies();
+
+    /**
+     * This map is a shortcut for the various scripting engines.
+     * It keeps track whether the engines source paths
+     * have dirty files or not and if true we enforce a recompile at the
+     * next refresh!
+     * <p/>
+     * We keep track on engine level to avoid to search the classMap for every refresh
+     * the classMap still is needed for various identification tasks which are reload
+     * related
+     */
+
+    boolean _running = false;
+    //    boolean _contextInitialized = false;
+    Logger _log = Logger.getLogger(ResourceMonitor.class.getName());
+    //    ScriptingWeaver _weavers = null;
+    static WeakReference<ServletContext> _externalContext;
+
+    public static synchronized void init(ServletContext externalContext)
+    {
+
+        if (_externalContext != null) return;
+        _externalContext = new WeakReference<ServletContext>(externalContext);
+        if (getInstance() != null) return;
+
+        //we currently keep it as singleton but in the long run we will move it into the context
+        //like everything else singleton-wise
+
+        _instance = new ResourceMonitor();
+
+        /**
+         * daemon thread to allow forced
+         * shutdowns for web context restarts
+         */
+        _instance.setDaemon(true);
+        _instance.setRunning(true);
+        //_instance.start();
+        _externalContext.get().setAttribute(CONTEXT_KEY, _instance);
+
+    }
+
+    public static synchronized ResourceMonitor getInstance()
+    {
+        //we do it in this complicated manner because of find bugs
+        //practically this cannot really happen except for shutdown were it is not important anymore
+        if(_externalContext == null) return null;
+        ServletContext context = _externalContext.get();
+        if (context != null)
+        {
+            return (ResourceMonitor) context.getAttribute(CONTEXT_KEY);
+        }
+        return null;
+    }
+
+    /**
+     * Central run method
+     * which performs the entire scanning process
+     */
+    public void run()
+    {
+        try {
+            //on Glassfish we have to defer the initial scan to avoid an NPE, for 
+            //reasons not debuggable, TODO check for a concurrency issue there
+            //which causes the npe
+            Thread.sleep(3000);
+        } catch (InterruptedException ex) {
+            Logger.getLogger(ResourceMonitor.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        
+        while (!Thread.currentThread().isInterrupted())
+        {
+            if (Thread.currentThread().isInterrupted()) break;
+            //we run the full scan on the classes to bring our data structures up to the task
+            performMonitoringTask();
+            sleep();
+        }
+
+        if (_log.isLoggable(Level.INFO))
+        {
+            _log.info("[EXT-SCRIPTING] Dynamic reloading watch daemon is shutting down");
+        }
+
+    }
+
+    public void stopIt()
+    {
+        super.interrupt();
+        _instance = null;
+        ServletContext context = _externalContext.get();
+        context.setAttribute(CONTEXT_KEY, null);
+        _externalContext = null;
+    }
+
+    public void performMonitoringTask()
+    {
+        synchronized(WeavingContext.getInstance().recompileLock) {
+            WeavingContext.getInstance().sendWeavingEvent(new BeginLifecycle());
+            WeavingContext context = WeavingContext.getInstance();
+            context.fullScan();
+
+            //we compile wherever needed, taints are now in place due to our scan already being performed
+            if (context.compile())
+            {
+                //we now have to perform a full dependency scan to bring our dependency map to the latest state
+                context.scanDependencies();
+                //we next retaint all classes according to our dependency graph
+                context.markTaintedDependends();
+            }
+            WeavingContext.getInstance().sendWeavingEvent(new EndLifecycle());
+        }
+        //context.annotationScan();
+
+    }
+
+
+
+    private void sleep()
+    {
+        try
+        {
+            Thread.sleep(ScriptingConst.TAINT_INTERVAL);
+        }
+        catch (InterruptedException e)
+        {
+            //if the server shuts down while we are in sleep we get an error
+            //which we better should swallow
+        }
+    }
+
+    public void setRunning(boolean running)
+    {
+        this._running = running;
+    }
+
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/WatchedResource.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/WatchedResource.java
new file mode 100644
index 0000000..b051936
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/WatchedResource.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.monitor;
+
+import java.io.File;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          An abstraction on our class watcher
+ *          we now deal with generic resources to simplify the access
+ */
+
+public abstract class WatchedResource implements Cloneable {
+
+    /**
+     * tainted override for dependend classes
+     */
+    volatile boolean tainted = false;
+
+    //volatile long  _lastLoaded = -1L;
+
+    /**
+     * Unique identifier on the resource
+     *
+     * @return
+     */
+    public abstract String getIdentifier();
+
+    /**
+     * @return a file handle on the current resource
+     */
+    public abstract File getFile();
+
+    public WatchedResource getClone()  {
+        try {
+            return (WatchedResource) super.clone();
+        } catch (CloneNotSupportedException e) {
+            return null;
+        }
+    }
+
+    public boolean isTainted()
+    {
+        return tainted;
+    }
+
+    public void setTainted(boolean tainted)
+    {
+        this.tainted = tainted;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/GlobalReloadingStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/GlobalReloadingStrategy.java
new file mode 100644
index 0000000..a284458
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/GlobalReloadingStrategy.java
@@ -0,0 +1,151 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.reloading;
+
+import org.apache.myfaces.extensions.scripting.core.api.ReloadingStrategy;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.*;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          A reloading strategy chain of responsibility which switches
+ *          depending on the artifact type to the correct
+ *          strategy
+ *          <p/>
+ *          TODO make the reloading strategy pluggable from outside (1.1)!
+ *          TODO groovy reloading strategy needs to be added at least the properties
+ *          mapping for a groovy class
+ */
+
+public class GlobalReloadingStrategy implements ReloadingStrategy
+{
+
+    private static final String STRATEGY_PKG = "org.apache.myfaces.extensions.scripting.jsf.facelet";
+    final Logger _logger = Logger.getLogger(GlobalReloadingStrategy.class.getName());
+
+    protected ReloadingStrategy _beanStrategy;
+    protected ReloadingStrategy _noMappingStrategy;
+    protected ReloadingStrategy _allOthers;
+
+    /*loaded dynamically for myfaces 2+*/
+    protected ReloadingStrategy _componentHandlerStrategy;
+    protected ReloadingStrategy _validatorHandlerStrategy;
+    protected ReloadingStrategy _converterHandlerStrategy;
+    protected ReloadingStrategy _behaviorHandlerStrategy;
+
+    public GlobalReloadingStrategy()
+    {
+        _beanStrategy = new ManagedBeanReloadingStrategy();
+        _noMappingStrategy = new NoMappingReloadingStrategy();
+        _allOthers = new SimpleReloadingStrategy();
+
+        /*
+         * external handlers coming from various submodules
+         */
+        _componentHandlerStrategy = dynaload(STRATEGY_PKG +".ComponentHandlerReloadingStrategy");
+        _validatorHandlerStrategy = dynaload(STRATEGY_PKG +".ValidatorHandlerReloadingStrategy");
+        _converterHandlerStrategy = dynaload(STRATEGY_PKG +".ConverterHandlerReloadingStrategy");
+        _behaviorHandlerStrategy = dynaload(STRATEGY_PKG +".BehaviorHandlerReloadingStrategy");
+    }
+
+    /**
+     * the strategy callback which switches between various strategies
+     * we have in our system
+     *
+     * @param toReload     the object which has to be reloaded
+     * @param artifactType the artifact type for which the reloading strategy has to be applied to
+     * @return either the same or a reloading object depending on the current state of the object
+     */
+    public Object reload(Object toReload, int engineType, int artifactType)
+    {
+
+        switch (artifactType)
+        {
+            case ARTIFACT_TYPE_MANAGEDBEAN:
+                return _beanStrategy.reload(toReload, engineType, artifactType);
+
+            case ARTIFACT_TYPE_RENDERER:
+                return _noMappingStrategy.reload(toReload, engineType, artifactType);
+            case ARTIFACT_TYPE_BEHAVIOR:
+                return _noMappingStrategy.reload(toReload, engineType, artifactType);
+            case ARTIFACT_TYPE_CLIENTBEHAVIORRENDERER:
+                return _noMappingStrategy.reload(toReload, engineType, artifactType);
+            case ARTIFACT_TYPE_COMPONENT:
+                return _noMappingStrategy.reload(toReload, engineType, artifactType);
+            case ARTIFACT_TYPE_VALIDATOR:
+                return _noMappingStrategy.reload(toReload, engineType, artifactType);
+
+            case ARTIFACT_TYPE_COMPONENT_HANDLER:
+                return dynaReload(toReload, _componentHandlerStrategy, engineType, artifactType);
+            case ARTIFACT_TYPE_CONVERTER_HANDLER:
+                return dynaReload(toReload, _converterHandlerStrategy, engineType, artifactType);
+            case ARTIFACT_TYPE_VALIDATOR_HANDLER:
+                return dynaReload(toReload, _validatorHandlerStrategy, engineType, artifactType);
+            case ARTIFACT_TYPE_BEHAVIOR_HANDLER:
+                return dynaReload(toReload, _behaviorHandlerStrategy, engineType, artifactType);
+
+            default:
+                return _allOthers.reload(toReload, engineType, artifactType);
+        }
+    }
+
+    public Object dynaReload(Object toReload, ReloadingStrategy strategy, int engineType, int artifactType)
+    {
+        if (strategy == null)
+        {
+            //no strategy no reload
+            return toReload;
+        } else
+        {
+            return strategy.reload(toReload, engineType, artifactType);
+        }
+    }
+
+    /**
+     * load dynamically the given strategy class
+     *
+     * @param strategyClass the strategy class which has to be loaded and instantiated
+     * @return an instance of the strategy class if found otherwise null
+     */
+    private ReloadingStrategy dynaload(String strategyClass)
+    {
+        try
+        {
+            Class theClass = ClassUtils.forName(strategyClass);
+            return (ReloadingStrategy) ReflectUtil.instantiate(theClass);
+        }
+        catch (RuntimeException ex)
+        {
+            //in this case swallowing the exception is expected
+            if (_logger.isLoggable(Level.FINEST))
+            {
+                _logger.log(Level.FINEST, "Expected Exception: ", ex);
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/ManagedBeanReloadingStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/ManagedBeanReloadingStrategy.java
new file mode 100644
index 0000000..69e9811
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/ManagedBeanReloadingStrategy.java
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.reloading;
+
+import org.apache.myfaces.extensions.scripting.core.api.ReloadingStrategy;
+
+/**
+ * The managed beans have a different reloading
+ * strategy. The dependencies of a managed bean
+ * are managed by the IOC container and
+ * not transferred over the reloading strategy
+ * like for all other artifacts.
+ * Hence the bean handler removes the bean and its
+ * referring backward dependencies, and the runtime system
+ * rebuilds the tree anew.
+ *
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ManagedBeanReloadingStrategy implements ReloadingStrategy
+{
+
+
+
+    public ManagedBeanReloadingStrategy() {
+    }
+
+    /**
+     * In our case the dropping already has happened at request time
+     * no need for another reloading here
+     *
+     * @param scriptingInstance the instance which has to be reloaded
+     * @param artifactType      the type of artifact
+     * @return does nothing in this case and returns only the original instance, the reloading is handled
+     *         for managed beans on another level
+     */
+    public Object reload(Object scriptingInstance, int engineType, int artifactType) {
+        return scriptingInstance;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/MethodLevelReloadingHandler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/MethodLevelReloadingHandler.java
new file mode 100644
index 0000000..247405f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/MethodLevelReloadingHandler.java
@@ -0,0 +1,131 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.reloading;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * Generic artifact invocation handler
+ * which should be able to cover
+ * all interfaceable artifacts which
+ * only have reloading logic
+ * and can cope with reloading on method level
+ * <p/>
+ * Note this works only for a minority of the artifacts
+ * the reason, most artifacts do not rely on interfaces but
+ * on base classes
+ *
+ * @author Werner Punz
+ */
+@SuppressWarnings("unused")
+public class MethodLevelReloadingHandler extends ReloadingInvocationHandler implements Serializable {
+
+    private static final long serialVersionUID = -3034995032644947216L;
+
+    int _artifactType;
+
+    public MethodLevelReloadingHandler(Object rootObject, int artifactType) {
+        _loadedClass = rootObject.getClass();
+        _delegate = rootObject;
+        _artifactType = artifactType;
+    }
+
+    /**
+     * outside interface to the invoke method
+     * which gets called every time a method
+     * is called
+     *
+     * @param object       the object holding the method
+     * @param method       the method
+     * @param paramHolders the param holders
+     * @return the return value of the operation
+     * @throws Throwable in case of an error
+     */
+    public Object invoke(Object object, Method method, Object[] paramHolders) throws Throwable {
+        return reloadInvoke(method, paramHolders);
+    }
+
+    /**
+     * invoke handler which is triggered
+     * by every method call which takes care of the reload
+     *
+     * @param method       the method to call
+     * @param paramHolders the params
+     * @return the return value of the operation
+     * @throws InstantiationException    standard throw caused by reflection
+     * @throws IllegalAccessException    standard throw caused by reflection
+     * @throws java.lang.reflect.InvocationTargetException standard throw caused by reflection
+     */
+
+    protected Object reloadInvoke(Method method, Object[] paramHolders) throws InstantiationException, IllegalAccessException, InvocationTargetException {
+
+
+        if (_delegate == null) {
+            //stateless or lost state due to a lifecycle iteration we trigger anew
+            _delegate = (WeavingContext.getInstance().reload(_loadedClass)).newInstance();
+        } else {
+            //if we are stateful only a tainted artifact is reloaded
+            _delegate = WeavingContext.getInstance().reload(_delegate, _artifactType);
+
+            //we work our way through all proxies and fetch the class for further reference
+            Object delegate = WeavingContext.getDelegateFromProxy(_delegate);
+            _loadedClass = delegate.getClass();
+        }
+        //check for proxies and unproxy them before calling the methods
+        //to avoid unnecessary cast problems
+        //this is slow on long param lists but it is better
+        //to be slow than to have casts an calls in the code
+        //for production we can compile the classes anyway and avoid
+        //this
+        unmapProxies(paramHolders);
+        return method.invoke(_delegate, paramHolders);
+    }
+
+    /**
+     * unmap proxied objects
+     *
+     * @param objects the objects to be unmapped
+     */
+    private void unmapProxies(Object[] objects) {
+        if (objects == null) return;
+        for (int cnt = 0; cnt < objects.length; cnt++) {
+            objects[cnt] = WeavingContext.getDelegateFromProxy(objects[cnt]);
+        }
+    }
+
+    public int getArtifactType() {
+        return _artifactType;
+    }
+
+    public void setArtifactType(int artifactType) {
+        _artifactType = artifactType;
+    }
+
+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/NoMappingReloadingStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/NoMappingReloadingStrategy.java
new file mode 100644
index 0000000..3150ba1
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/NoMappingReloadingStrategy.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.reloading;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          <p/>
+ *          The renderer is a stateless flyweight pattern the reloading strategy is
+ *          to do nothing, this should give optimal results
+ *          <p/>
+ *          <p/>
+ *          The components are a similar case they are not flyweight
+ *          but the properties usually are preserved by the lifecycle if possible
+ *          or assigned by the tag handlers
+ *          <p/>
+ *          <p/>
+ *          The same also applies to other flyweight patterned classes
+ *          like converters or validators
+ *          <p/>
+ *          <p/>
+ *          The only ones which need to keep some state are the ones
+ *          which keep delegates, like the NavHandler
+ */
+public class NoMappingReloadingStrategy extends SimpleReloadingStrategy
+{
+
+    public NoMappingReloadingStrategy()
+    {
+        super();
+    }
+
+    @Override
+    protected void mapProperties(Object target, int engineType, Object src)
+    {
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/ReloadingInvocationHandler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/ReloadingInvocationHandler.java
new file mode 100644
index 0000000..80ffbcc
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/ReloadingInvocationHandler.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.reloading;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+
+import java.lang.reflect.InvocationHandler;
+
+/**
+ * <p/>
+ * We set our own invocation handler
+ * here to allow reflection utils directly targeting our
+ * _delegate.
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@SuppressWarnings("unused")
+public abstract class ReloadingInvocationHandler implements InvocationHandler, Decorated
+{
+    Class _loadedClass = null;
+    Object _delegate = null;
+
+    /**
+     * simplified invoke for more dynamic upon invocation
+     * on our reloading objects
+     *
+     * @param object    the object to be invoked on
+     * @param method    the method to be invoked
+     * @param arguments the arguments passed down
+     * @return the return value of the operation
+     */
+    public Object invoke(Object object, String method, Object... arguments) {
+        return ReflectUtil.executeMethod(object, method, arguments);
+    }
+
+    public Class getLoadedClass() {
+        return _loadedClass;
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+
+    public void setDelegate(Object delegate) {
+        _delegate = delegate;
+    }
+
+    public void setLoadedClassName(Class loadedClass) {
+        this._loadedClass = loadedClass;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/SimpleReloadingStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/SimpleReloadingStrategy.java
new file mode 100644
index 0000000..32fa5cc
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/reloading/SimpleReloadingStrategy.java
@@ -0,0 +1,105 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.reloading;
+
+import org.apache.myfaces.extensions.scripting.core.api.ReloadingStrategy;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * A simple implementation of our reloading strategy
+ * pattern this is the most basic implementation
+ * covering our reloading.
+ * <p/>
+ * Applicable for most artifacts except for now managed beans
+ * <p/> *
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class SimpleReloadingStrategy implements ReloadingStrategy
+{
+
+
+
+    public SimpleReloadingStrategy() {
+
+    }
+
+    /**
+     * <p>
+     * the central callback for our strategy here
+     * it has to handle the reload of the scriptingInstance
+     * if possible, otherwise it has to return the
+     * original object if no reload was necessary or possible
+     * </p>
+     *
+     * @param scriptingInstance the instance to be reloaded by the system
+     * @return either the same object or a new instance utilizing the changed code
+     */
+    public Object reload(Object scriptingInstance, int engineType, int artifactType) {
+       //reload the class to get new static content if needed
+        Class aclass = WeavingContext.getInstance().reload(scriptingInstance.getClass());
+
+        if (aclass == null || aclass.hashCode() == scriptingInstance.getClass().hashCode()) {
+            //class of this object has not changed although
+            // reload is enabled we can skip the rest now
+            return scriptingInstance;
+        }
+        getLog().info("[EXT-SCRIPTING] possible reload for " + scriptingInstance.getClass().getName());
+        /*only recreation of empty constructor classes is possible*/
+        try {
+            //reload the object by instantiating a new class and
+            // assigning the attributes properly
+            Object newObject = aclass.newInstance();
+
+            /*now we shuffle the properties between the objects*/
+            mapProperties(newObject, engineType, scriptingInstance);
+
+            return newObject;
+        } catch (Exception e) {
+            getLog().log(Level.SEVERE, "reload ", e);
+        }
+        return null;
+
+    }
+
+    /**
+     * helper to map the properties wherever possible
+     * <p/>
+     * This is the simplest solution for now,
+     * we apply only a copy properties here, which should be enough
+     * for all artifacts except the managed beans and the ones
+     * which have to preserve some kind of delegate before instantiation.
+     *
+     * @param target the target which has to receive the properties
+     * @param src    the source which has the original properties
+     */
+    protected void mapProperties(Object target, int engineType, Object src) {
+       WeavingContext.getInstance().getEngine(engineType).copyProperties(target, src);
+    }
+
+    protected Logger getLog() {
+        return Logger.getLogger(this.getClass().getName());
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/servlet/ScriptingServletFilter.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/servlet/ScriptingServletFilter.java
new file mode 100644
index 0000000..924960e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/servlet/ScriptingServletFilter.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.servlet;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.servlet.DispatcherType;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.annotation.WebFilter;
+import java.io.IOException;
+import java.util.logging.Logger;
+
+/**
+ * This filter is just a blocking filter
+ * refreshes are not allowed while the system
+ * recompiles, incoming requests are put on hold
+ *
+ * @author Werner Punz
+ */
+@WebFilter(urlPatterns = {"/*"},
+        dispatcherTypes = {DispatcherType.REQUEST,
+                           DispatcherType.FORWARD,
+                           DispatcherType.INCLUDE,
+                           DispatcherType.ERROR})
+public class ScriptingServletFilter implements Filter
+{
+
+    ServletContext _context;
+    Logger logger = Logger.getLogger(this.getClass().getName());
+
+    public void init(FilterConfig filterConfig) throws ServletException
+    {
+        _context = filterConfig.getServletContext();
+    }
+
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException
+    {
+        synchronized (WeavingContext.getInstance().recompileLock)
+        {
+            logger.fine("request");
+        }
+        filterChain.doFilter(servletRequest, servletResponse);
+    }
+
+    @Override
+    public void destroy()
+    {
+    }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/CustomChainLoader.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/CustomChainLoader.java
new file mode 100644
index 0000000..9e3cb82
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/CustomChainLoader.java
@@ -0,0 +1,140 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.adapters;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.ThrowAwayClassloader;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+import org.apache.myfaces.shared.util.ClassLoaderExtension;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          The chainloader docks onto the forName handler
+ *          in the myfaces classutils which load the
+ *          artifacting classes, we dock onto this extension point
+ *          neutrally by indirection over the MyFacesSPI
+ */
+
+public class CustomChainLoader extends ClassLoaderExtension
+{
+
+    ThrowAwayClassloader _loader = null;
+
+    static class _Action implements PrivilegedExceptionAction<ThrowAwayClassloader>
+    {
+        ClassLoader _parent;
+
+        _Action(ClassLoader parent)
+        {
+            this._parent = parent;
+        }
+
+        public ThrowAwayClassloader run()
+        {
+            return new ThrowAwayClassloader(_parent);
+        }
+    }
+
+    public CustomChainLoader(ServletContext context)
+    {
+        try
+        {
+            _loader = AccessController.doPrivileged(
+                    new _Action(ClassUtils.getContextClassLoader())
+            );
+        }
+        catch (PrivilegedActionException e)
+        {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+    }
+
+    public Class forName(String name)
+    {
+        if (name.endsWith(";"))
+        {
+            name = name.substring(1, name.length() - 1);
+        }
+
+        if (name.startsWith("java.")) /*the entire java namespace is reserved so no use to do a specific classloading check here*/
+            return null;
+        if (name.startsWith("javax.")) /*the entire java namespace is reserved so no use to do a specific classloading check here*/
+            return null;
+        else if (name.startsWith("com.sun")) /*internal java specific namespace*/
+            return null;
+        else if (name.startsWith("sun.")) /*internal java specific namespace*/
+            return null;
+        else if (name.startsWith("org.apache") && !name.startsWith("org.apache.myfaces"))
+        {
+            return null;
+        } else if (name.startsWith("org.apache") && name.startsWith("org.apache.myfaces.config"))
+        {
+            return null;
+        } else if (name.startsWith("org.apache") && name.startsWith("org.apache.myfaces.spi"))
+        {
+            return null;
+        } else if (name.startsWith("org.apache") && name.startsWith("org.apache.myfaces.application"))
+        {
+            return null;
+        }
+        //
+        try
+        {
+            return loadClass(name);
+        }
+        catch (ClassNotFoundException e)
+        {
+            return null;
+        }
+    }
+
+    private Class loadClass(String name) throws ClassNotFoundException
+    {
+        File targetDirectory = WeavingContext.getInstance().getConfiguration().getCompileTarget();
+        File target = ClassUtils.classNameToFile(targetDirectory.getAbsolutePath(), name);
+        if (!target.exists()) return null;
+        //otherwise check if tainted and if not simply return the class stored
+
+        ClassResource resource = (ClassResource) WeavingContext.getInstance().getResource(name);
+        if (resource == null)
+        {
+            return null;
+        }
+        if (resource.isTainted() || resource.getAClass() == null)
+        {
+            //load the class via the throw away classloader
+            return _loader.loadClass(name);
+        } else
+        {
+            return resource.getAClass();
+        }
+
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/MyFacesSPI.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/MyFacesSPI.java
new file mode 100644
index 0000000..248957e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/MyFacesSPI.java
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.adapters;
+
+import org.apache.myfaces.extensions.scripting.core.api.ImplementationService;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.jsf.adapters.handlers.MyFacesBeanHandler;
+
+import javax.servlet.ServletContext;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * SPI for various myfaces related tasks
+ */
+public class MyFacesSPI implements ImplementationService
+{
+    CustomChainLoader _loader = null;
+    MyFacesBeanHandler beanHandler = new MyFacesBeanHandler();
+
+    public void registerClassloadingExtension(ServletContext context) {
+        CustomChainLoader loader = new CustomChainLoader(context); //ReflectUtil.instantiate("extras.org.apache.myfaces.extensions
+        // .scripting.servlet" +
+                //".CustomChainLoader",
+                //new Cast(ServletContext.class, context));
+        ClassUtils.addClassLoadingExtension(loader, true);
+        _loader = loader;
+    }
+
+    public void refreshManagedBeans() {
+        beanHandler.refreshAllManagedBeans();
+    }
+    
+    public Class forName(String clazz) {
+        return _loader.forName(clazz);
+    }
+    
+
+    private static MyFacesSPI ourInstance = new MyFacesSPI();
+
+    public static MyFacesSPI getInstance()
+    {
+        return ourInstance;
+    }
+
+    private MyFacesSPI()
+    {
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/handlers/MyFacesBeanHandler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/handlers/MyFacesBeanHandler.java
new file mode 100644
index 0000000..8311ae4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/handlers/MyFacesBeanHandler.java
@@ -0,0 +1,290 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.adapters.handlers;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ */
+
+import org.apache.myfaces.config.RuntimeConfig;
+import org.apache.myfaces.config.annotation.LifecycleProvider;
+import org.apache.myfaces.config.annotation.LifecycleProviderFactory;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+
+import javax.faces.context.FacesContext;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Bean handler implementation
+ * which encapsulates the myfaces specific parts
+ * of the bean processing
+ */
+public class MyFacesBeanHandler
+{
+
+    static final Logger _logger = Logger.getLogger(MyFacesBeanHandler.class.getName());
+
+    /**
+     * constructor
+     */
+    public MyFacesBeanHandler()
+    {
+
+    }
+
+    /**
+     * Refreshes all managed beans
+     * session, and personal scoped ones
+     * <p/>
+     * personal scoped beans are beans which
+     * have either
+     * <li> session scope </li>
+     * <li> page scope </li>
+     * <li> custom scope </li>
+     */
+    public void refreshAllManagedBeans()
+    {
+        if (FacesContext.getCurrentInstance() == null)
+        {
+            return;//no npe allowed
+        }
+
+        Collection<ClassResource> tainted = WeavingContext.getInstance().getTaintedClasses();
+        Set<String> taints = new HashSet<String>();
+        for (ClassResource taintedClass : tainted)
+        {
+            if(taintedClass.getAClass() != null) {
+                taints.add(taintedClass.getAClass().getName());
+            }
+        }
+
+        //scanElDependencies();
+
+        if (taints.size() > 0)
+        {
+            //We now have to check if the tainted classes belong to the managed beans
+            Set<String> managedBeanClasses = new HashSet<String>();
+
+            Map mbeans = RuntimeConfig.getCurrentInstance(FacesContext.getCurrentInstance().getExternalContext()).getManagedBeans();
+            Map mbeansSnapshotView;
+
+            //synchronized (RefreshContext.BEAN_SYNC_MONITOR) {
+            mbeansSnapshotView = makeSnapshot(mbeans);
+            //}
+
+            for (Object entry : mbeansSnapshotView.entrySet())
+            {
+                Object bean = (Object) ((Map.Entry) entry).getValue();
+
+                managedBeanClasses.add((String) ReflectUtil.executeMethod(bean, "getManagedBeanClassName"));//bean.getManagedBeanClassName());
+            }
+
+            boolean managedBeanTainted = isAnyManagedBeanTainted(taints, managedBeanClasses);
+            markPersonalScopeRefreshRecommended();
+            getLog().info("[EXT-SCRIPTING] Tainting all beans to avoid classcast exceptions");
+            if (managedBeanTainted)
+            {
+                globalManagedBeanRefresh(mbeansSnapshotView);
+                //personalScopeRefresh();
+            }
+        }
+    }
+
+
+    /**
+     * removes all bean references which have been tainted
+     * (note for now we remove all dynamic references until we
+     * get a more sophisticated handling of managed beans)
+     *
+     * @param workCopy the managed beam snapshot view
+     */
+    private void globalManagedBeanRefresh(Map workCopy)
+    {
+        Collection<ClassResource> tainted = WeavingContext.getInstance().getTaintedClasses();
+        Set<String> taints = new HashSet<String>();
+        for (ClassResource taintedClass : tainted)
+        {
+            if(taintedClass.getAClass() != null)
+                taints.add(taintedClass.getAClass().getName());
+        }
+
+        for (Object entry : workCopy.entrySet())
+        {
+            Object bean = ((Map.Entry) entry).getValue();
+            Class managedBeanClass = (Class) ReflectUtil.executeMethod(bean, "getManagedBeanClass");
+            if (hasToBeRefreshed(taints, managedBeanClass))
+            {
+                //managed bean class found we drop the class from our session
+                removeBeanReferences(bean);
+            }
+        }
+    }
+
+    /**
+     * determines whether any bean in our managed bean list
+     * is tainted or not
+     *
+     * @param tainted            a list of classes which are tainted in this iteration
+     * @param managedBeanClasses a ist of classes which are our managed beans
+     * @return true if one of the beans is tainted
+     */
+    private boolean isAnyManagedBeanTainted(Set<String> tainted, Set<String> managedBeanClasses)
+    {
+        boolean managedBeanTainted = false;
+        for (String taintedClass : tainted)
+        {
+            if (managedBeanClasses.contains(taintedClass))
+            {
+                managedBeanTainted = true;
+                break;
+            }
+        }
+        return managedBeanTainted;
+    }
+
+    /**
+     * removes the references from out static scope
+     * for jsf2 we probably have some kind of notification mechanism
+     * which notifies custom scopes
+     *
+     * @param bean the managed bean which all references have to be removed from
+     */
+
+    private void removeBeanReferences(Object bean)
+    {
+        String managedBeanName = (String) ReflectUtil.executeMethod(bean, "getManagedBeanName");
+
+        if (getLog().isLoggable(Level.FINE))
+        {
+            getLog().log(Level.FINE, "[EXT-SCRIPTING] JavaScriptingWeaver.removeBeanReferences({0})", managedBeanName);
+        }
+
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(managedBeanName);
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().remove(managedBeanName);
+        removeCustomScopedBean(bean);
+    }
+
+    /**
+     * @return the log for this class
+     */
+    protected Logger getLog()
+    {
+        return Logger.getLogger(this.getClass().getName());
+    }
+
+    /**
+     * jsf2 helper to remove custom scoped beans
+     *
+     * @param bean the managed bean which has to be removed from the custom scope from
+     */
+    private void removeCustomScopedBean(Object bean)
+    {
+        Object scopeImpl = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get(ReflectUtil.executeMethod(bean, "getManagedBeanScope"));
+        if (scopeImpl == null) return; //scope not implemented
+        //we now have to revert to introspection here because scopes are a pure jsf2 construct
+        //so we use a messaging pattern here to cope with it
+
+        Object beanInstance = ReflectUtil.executeMethod(scopeImpl, "get", ReflectUtil.executeMethod(bean, "getManagedBeanName"));
+        LifecycleProvider lifecycleProvider =
+                LifecycleProviderFactory.getLifecycleProviderFactory().getLifecycleProvider(FacesContext.getCurrentInstance().getExternalContext());
+        try
+        {
+            lifecycleProvider.destroyInstance(beanInstance);
+        }
+        catch (IllegalAccessException e)
+        {
+            _logger.log(Level.WARNING, "removeCustomScopedBean():", e);
+        }
+        catch (InvocationTargetException e)
+        {
+            _logger.log(Level.WARNING, "removeCustomScopedBean():", e);
+        }
+    }
+
+    /**
+     * MyFaces 2.0 keeps an immutable map over the session
+     * and request scoped beans
+     * if we alter that during our loop we get a concurrent modification exception
+     * taking a snapshot in time fixes that
+     *
+     * @param mbeans the internal managed bean map which has to be investigated
+     * @return a map with the class name as key and the managed bean info
+     *         as value of the current state of the internal runtime config bean map
+     */
+    private Map makeSnapshot(Map mbeans)
+    {
+        Map workCopy;
+
+        workCopy = new HashMap(mbeans.size());
+        for (Object elem : mbeans.entrySet())
+        {
+            Map.Entry entry = (Map.Entry) elem;
+            workCopy.put(entry.getKey(), entry.getValue());
+        }
+
+        return workCopy;
+    }
+
+    /**
+     * sets the internal timer for other processes
+     * to update their beans as well
+     */
+    private void markPersonalScopeRefreshRecommended()
+    {
+        long sessionRefreshTime = System.currentTimeMillis();
+        // WeavingContext.getRefreshContext().setPersonalScopedBeanRefresh(sessionRefreshTime);
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(ScriptingConst.SESS_BEAN_REFRESH_TIMER, sessionRefreshTime);
+    }
+
+    /**
+     * important, this method determines whether a managed bean class
+     * has to be refreshed or not
+     *
+     * @param tainted          set of tainted classes
+     * @param managedBeanClass the class to be checked for refresh criteria
+     * @return true if the current bean class fulfills our refresh criteria
+     */
+    protected boolean hasToBeRefreshed(Set<String> tainted, Class managedBeanClass)
+    {
+
+        return WeavingContext.getInstance().isDynamic(managedBeanClass) && tainted.contains(managedBeanClass.getName());
+    }
+
+    public  void registerManagedBean(Class clazz, String beanName) {
+        //TODO move this over from the beanimplementationListener
+    }
+    public  void removeManagedBean(String className) {
+        //TODO move this over from the beanimplementationlistener
+    }
+        
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/BaseAnnotationScanListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/BaseAnnotationScanListener.java
new file mode 100644
index 0000000..9981f62
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/BaseAnnotationScanListener.java
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+import org.apache.myfaces.config.RuntimeConfig;
+
+import javax.faces.application.Application;
+import javax.faces.context.FacesContext;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Logger;
+
+/**
+ * Base Class for the JSF2 annotation scanning
+ * (note we do not rely on the impl
+ * for annotation scanning because in the long
+ * run we want to support Mojarra)
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class BaseAnnotationScanListener {
+    Logger _log = Logger.getLogger(this.getClass().getName());
+    static Map<String, Object> _alreadyRegistered = new ConcurrentHashMap<String, Object>(8, 0.75f, 1);
+
+    protected RuntimeConfig getRuntimeConfig() {
+        final FacesContext facesContext = FacesContext.getCurrentInstance();
+        //runtime config not started
+        if (facesContext == null) {
+            return null;
+        }
+        return RuntimeConfig.getCurrentInstance(facesContext.getExternalContext());
+    }
+
+    protected Application getApplication() {
+        return FacesContext.getCurrentInstance().getApplication();
+    }
+
+    /**
+     * unregisters this class in the central registry
+     * is triggered if the class itself has been registered previously
+     *
+     * @param className
+     * @return
+     */
+    public void purge(String className) {
+
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/BehaviorImplementationListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/BehaviorImplementationListener.java
new file mode 100644
index 0000000..e482f64
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/BehaviorImplementationListener.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.AnnotationScanListener;
+import org.apache.myfaces.extensions.scripting.jsf.annotation.purged.PurgedBehavior;
+
+import javax.faces.component.behavior.FacesBehavior;
+import java.util.logging.Level;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class BehaviorImplementationListener extends SingleEntityAnnotationListener implements AnnotationScanListener
+{
+
+    public BehaviorImplementationListener() {
+        super();
+        _entityParamValue = "value";
+    }
+
+    public boolean supportsAnnotation(String annotation) {
+        return annotation.equals(FacesBehavior.class.getName());
+    }
+
+    public boolean supportsAnnotation(Class annotation) {
+        return annotation.equals(FacesBehavior.class);
+    }
+
+
+    protected void addEntity(Class clazz, String val) {
+        if (_log.isLoggable(Level.FINEST)) {
+            _log.log(Level.FINEST, "addBehavior(" + val + ","
+                    + clazz.getName() + ")");
+        }
+        getApplication().addBehavior(val, clazz.getName());
+    }
+
+    @Override
+    public void purge(String className) {
+        super.purge(className);
+        if (!_alreadyRegistered.containsKey(className)) {
+            return;
+        }
+
+        String val = (String) _alreadyRegistered.remove(className);
+        if (val != null) {
+            getApplication().addBehavior(val, PurgedBehavior.class.getName());
+        }
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/BehaviorRendererImplementationListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/BehaviorRendererImplementationListener.java
new file mode 100644
index 0000000..ae88ea1
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/BehaviorRendererImplementationListener.java
@@ -0,0 +1,175 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+
+import org.apache.myfaces.extensions.scripting.jsf.annotation.purged.PurgedClientBehaviorRenderer;
+
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContext;
+import javax.faces.render.FacesBehaviorRenderer;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Implementation listener for the FacesBehaviorRenderer annotation
+ */
+
+public class BehaviorRendererImplementationListener extends MapEntityAnnotationScanner {
+
+    private static final String PAR_RENDERERTYPE = "rendererType";
+    private static final String PAR_RENDERKITID = "renderKitId";
+
+    Map<AnnotationEntry, String> _inverseIndex = new HashMap<AnnotationEntry, String>();
+
+    class AnnotationEntry {
+        String rendererType;
+        String renderKitId;
+
+        AnnotationEntry(String rendererType, String renderKitId) {
+            this.rendererType = rendererType;
+            this.renderKitId = renderKitId;
+        }
+
+        public boolean equals(Object incoming) {
+            if (!(incoming instanceof AnnotationEntry)) {
+                return false;
+            }
+            AnnotationEntry toCompare = (AnnotationEntry) incoming;
+
+            if (incoming == null) {
+                return false;
+            }
+
+            boolean firstEquals = compareValuePair(rendererType, toCompare.getRendererType());
+            boolean secondEquals = compareValuePair(renderKitId, toCompare.getRenderKitId());
+
+            return firstEquals && secondEquals;
+        }
+
+        @Override
+        public int hashCode() {
+            return (checkForNull(rendererType) + "_" + checkForNull(renderKitId)).hashCode();    //To change body of overridden methods use File | Settings | File Templates.
+        }
+
+        private String checkForNull(String in) {
+            return (in == null) ? "" : in;
+        }
+
+        protected boolean compareValuePair(Object val1, Object val2) {
+            boolean retVal = false;
+            if (val1 == null) {
+                if (val2 != null) retVal = false;
+                if (val2 == null) {
+                    retVal = true;
+                }
+            } else {
+                retVal = val1.equals(val2);
+            }
+            return retVal;
+        }
+
+        public String getRendererType() {
+            return rendererType;
+        }
+
+        public String getRenderKitId() {
+            return renderKitId;
+        }
+    }
+
+    public BehaviorRendererImplementationListener() {
+        super();
+    }
+
+    @Override
+    protected void addEntity(Class clazz, Map<String, Object> params) {
+        String value = (String) params.get(PAR_RENDERERTYPE);
+        String renderKitId = (String) params.get(PAR_RENDERKITID);
+
+        AnnotationEntry entry = new AnnotationEntry(value, renderKitId);
+        _alreadyRegistered.put(clazz.getName(), entry);
+        _inverseIndex.put(entry, clazz.getName());
+
+        getApplication().addConverter(entry.getRendererType(), clazz.getName());
+    }
+
+    @Override
+    protected boolean hasToReregister(Map params, Class clazz) {
+        String value = (String) params.get(PAR_RENDERERTYPE);
+        String renderKitId = (String) params.get(PAR_RENDERKITID);
+
+        AnnotationEntry entry = new AnnotationEntry(value, renderKitId);
+
+        AnnotationEntry alreadyRegistered = (AnnotationEntry) _alreadyRegistered.get(clazz.getName());
+        if (alreadyRegistered == null) {
+            return true;
+        }
+
+        return alreadyRegistered.equals(entry);
+    }
+
+    public boolean supportsAnnotation(String annotation) {
+        return annotation.equals(FacesBehaviorRenderer.class.getName());
+    }
+
+    public boolean supportsAnnotation(Class annotation) {
+        return annotation.equals(FacesBehaviorRenderer.class);
+    }
+
+
+    private RenderKitFactory getRenderKitFactory() {
+        return (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+    }
+
+    private RenderKit getRenderkit(String renderKitId) {
+        RenderKitFactory factory = getRenderKitFactory();
+        RenderKit renderKit = factory.getRenderKit(FacesContext.getCurrentInstance(), renderKitId);
+        return renderKit;
+    }
+
+    @Override
+    public void purge(String className) {
+        super.purge(className);
+        AnnotationEntry entry = (AnnotationEntry) _alreadyRegistered.remove(className);
+        if (entry == null) {
+            return;
+        }
+
+        RenderKit renderKit = getRenderkit(entry.getRenderKitId());
+        try {
+            String rendererClass = _inverseIndex.get(entry);
+            if (rendererClass != null && rendererClass.equals(className)) {
+                _inverseIndex.put(entry, PurgedClientBehaviorRenderer.class.getName());
+                renderKit.addClientBehaviorRenderer(entry.getRendererType(), PurgedClientBehaviorRenderer.class.newInstance());
+            }
+        } catch (InstantiationException e) {
+            _log.log(Level.SEVERE, "", e);
+        } catch (IllegalAccessException e) {
+            _log.log(Level.SEVERE, "", e);
+        }
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ComponentImplementationListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ComponentImplementationListener.java
new file mode 100644
index 0000000..38593ae
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ComponentImplementationListener.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.AnnotationScanListener;
+import org.apache.myfaces.extensions.scripting.jsf.annotation.purged.PurgedComponent;
+
+import javax.faces.component.FacesComponent;
+import java.util.logging.Level;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ComponentImplementationListener extends SingleEntityAnnotationListener implements AnnotationScanListener
+{
+
+    public ComponentImplementationListener() {
+        super();
+        _entityParamValue = "value";
+    }
+
+    public boolean supportsAnnotation(String annotation) {
+        return annotation.equals(FacesComponent.class.getName());
+    }
+
+    public boolean supportsAnnotation(Class annotation) {
+        return annotation.equals(FacesComponent.class);
+    }
+
+
+    protected void addEntity(Class clazz, String val) {
+        if (_log.isLoggable(Level.FINEST)) {
+            _log.log(Level.FINEST, "addComponent(" + val + "," + clazz.getName() + ")");
+        }
+        getApplication().addComponent(val, clazz.getName());
+        //register the renderer if not registered
+
+        _alreadyRegistered.put(clazz.getName(), val);
+    }
+
+    @Override
+    public void purge(String className) {
+        super.purge(className);
+        //no purge needed we already have a different class
+        //registered
+        if (!_alreadyRegistered.containsKey(className)) {
+            return;
+        }
+        String val = (String) _alreadyRegistered.remove(className);
+        if (val != null) {
+            getApplication().addComponent(val, PurgedComponent.class.getName());
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ConverterImplementationListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ConverterImplementationListener.java
new file mode 100644
index 0000000..fe45e81
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ConverterImplementationListener.java
@@ -0,0 +1,154 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.AnnotationScanListener;
+import org.apache.myfaces.extensions.scripting.jsf.annotation.purged.PurgedConverter;
+
+import javax.faces.application.Application;
+import javax.faces.convert.FacesConverter;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ConverterImplementationListener extends MapEntityAnnotationScanner implements AnnotationScanListener
+{
+
+    private static final String PAR_VALUE = "value";
+    private static final String PAR_DEFAULT = "forClass";
+
+    Map<AnnotationEntry, String> _inverseIndex = new HashMap<AnnotationEntry, String>();
+
+    class AnnotationEntry {
+        String value;
+        Class forClass;
+
+        AnnotationEntry(String value, Class forClass) {
+
+            this.value = value;
+            this.forClass = forClass;
+        }
+
+        public boolean equals(Object incoming) {
+            if (incoming == null) {
+                return false;
+            }
+
+            if (!(incoming instanceof AnnotationEntry)) {
+                return false;
+            }
+            AnnotationEntry toCompare = (AnnotationEntry) incoming;
+
+            boolean firstEquals = compareValuePair(value, toCompare.getValue());
+            boolean secondEquals = compareValuePair(forClass, toCompare.getForClass());
+
+            return firstEquals && secondEquals;
+        }
+
+        @Override
+        public int hashCode() {
+            String retVal = checkForNull(value) + "_";
+            retVal += ((forClass != null) ? forClass.getName() : "");
+            return retVal.hashCode();
+        }
+
+        private String checkForNull(String in) {
+            return (in == null) ? "" : in;
+        }
+
+        protected boolean compareValuePair(Object val1, Object val2) {
+            boolean retVal = false;
+            if (val1 == null) {
+                if (val2 != null) retVal = false;
+                if (val2 == null) {
+                    retVal = true;
+                }
+            } else {
+                retVal = val1.equals(val2);
+            }
+            return retVal;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        public Class getForClass() {
+            return forClass;
+        }
+    }
+
+    public ConverterImplementationListener() {
+        super(PAR_VALUE, PAR_DEFAULT);
+    }
+
+    @Override
+    protected void addEntity(Class clazz, Map<String, Object> params) {
+        String value = (String) params.get(PAR_VALUE);
+        Class forClass = (Class) params.get(PAR_DEFAULT);
+
+        AnnotationEntry entry = new AnnotationEntry(value, forClass);
+        _alreadyRegistered.put(clazz.getName(), entry);
+        _inverseIndex.put(entry, clazz.getName());
+
+        getApplication().addConverter(entry.getValue(), clazz.getName());
+    }
+
+    @Override
+    protected boolean hasToReregister(Map params, Class clazz) {
+        String value = (String) params.get(PAR_VALUE);
+        Class forClass = (Class) params.get(PAR_DEFAULT);
+
+        AnnotationEntry entry = new AnnotationEntry(value, forClass);
+
+        AnnotationEntry alreadyRegistered = (AnnotationEntry) _alreadyRegistered.get(clazz.getName());
+
+        return (alreadyRegistered == null) || alreadyRegistered.equals(entry);
+    }
+
+    public boolean supportsAnnotation(String annotation) {
+        return annotation.equals(FacesConverter.class.getName());
+    }
+
+    public boolean supportsAnnotation(Class annotation) {
+        return annotation.equals(FacesConverter.class);
+    }
+
+
+    @Override
+    public void purge(String className) {
+        super.purge(className);
+        AnnotationEntry entry = (AnnotationEntry) _alreadyRegistered.remove(className);
+        if (entry == null) {
+            return;
+        }
+        String _oldConverterClass = _inverseIndex.get(entry);
+        if (_oldConverterClass.equals(className)) {
+            Application application = getApplication();
+            application.addConverter(entry.getValue(), PurgedConverter.class.getName());
+            _inverseIndex.put(entry, className);
+        }
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/GenericAnnotationScanner.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/GenericAnnotationScanner.java
new file mode 100644
index 0000000..74594b8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/GenericAnnotationScanner.java
@@ -0,0 +1,215 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+import org.apache.myfaces.extensions.scripting.core.api.AnnotationScanListener;
+import org.apache.myfaces.extensions.scripting.core.api.ClassScanListener;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.ThrowAwayClassloader;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ClassScanner;
+
+import javax.faces.context.FacesContext;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Source path annotation scanner for java it scans all sources in the specified source paths
+ *          recursively for additional information
+ *          and then adds the id/name -> class binding information to the correct factory locations,
+ *          wherever possible
+ */
+@SuppressWarnings("unused")
+public class GenericAnnotationScanner extends BaseAnnotationScanListener implements ClassScanner
+{
+    //eventing system not yet fully implemented
+    List<ClassScanListener> _listeners = new LinkedList<ClassScanListener>();
+
+    //this registry is needed to keep track of added and moved annotations
+    Map<String, String> _registeredAnnotations = new HashMap<String, String>();
+
+    LinkedList<String> _sourcePaths = new LinkedList<String>();
+
+    WeavingContext _weaver = null;
+
+    public GenericAnnotationScanner() {
+        _weaver = WeavingContext.getInstance();
+        initDefaultListeners();
+    }
+
+    public void addScanPath(String sourcePath) {
+        _sourcePaths.addFirst(sourcePath);
+    }
+
+    Collection<java.lang.annotation.Annotation> filterAnnotations(java.lang.annotation.Annotation[] annotations) {
+        List<java.lang.annotation.Annotation> retVal = new ArrayList<java.lang.annotation.Annotation>(annotations.length);
+        
+        for (java.lang.annotation.Annotation annotation : annotations) {
+            if (annotation.annotationType().getName().startsWith(ScriptingConst.JAVAX_FACES)) {
+                retVal.add(annotation);
+            }
+
+        }
+        return retVal;
+    }
+
+    public void scanClass(Class clazz) {
+        java.lang.annotation.Annotation[] annotations = clazz.getAnnotations();
+
+        Collection<java.lang.annotation.Annotation> annCol = filterAnnotations(annotations);
+        if (!annCol.isEmpty()) {
+            addOrMoveAnnotations(clazz);
+        } else {
+            removeAnnotations(clazz);
+        }
+    }
+
+    private void initDefaultListeners() {
+        _listeners.add(new MyFacesBeanImplementationListener());
+        _listeners.add(new BehaviorImplementationListener());
+        _listeners.add(new ComponentImplementationListener());
+        _listeners.add(new ConverterImplementationListener());
+        _listeners.add(new RendererImplementationListener());
+        _listeners.add(new ValidatorImplementationListener());
+    }
+
+    /**
+     * builds up the parsing chain and then notifies its observers
+     * on the found data
+     */
+    public void scanPaths() {
+        //https://issues.apache.org/jira/browse/EXTSCRIPT-33
+
+        //check if the faces config is already available otherwise we cannot scan yet
+        final FacesContext facesContext = FacesContext.getCurrentInstance();
+        //runtime config not started
+        //for now we only can reach the runtime config in the referenced BaseAnnotatonScanListener
+        //if we have a facesContext reachable.
+        if (facesContext == null) {
+            //TODO (1.1) decouple the scan in the BaseAnnotationScanListener from the facesConfig
+            //to get the runtime config
+            return;
+        }
+        if(!_weaver.isPostInit() || _weaver.getLastAnnotationScan() >= _weaver.getLastTaint()) return;
+        _weaver.markLastAnnotationScan();
+
+
+        for (String className : _weaver.loadPossibleDynamicClasses()) {
+            try {
+                if(!_weaver.isTainted(className)) continue;
+
+                //TODO replace this with a direct call to our weavingContext
+                //<>ScannerClassloader loader = new ScannerClassloader(Thread.currentThread().getContextClassLoader(),
+                //        -1, null, _weaver.getConfiguration().getCompileTarget());
+                ThrowAwayClassloader loader = new ThrowAwayClassloader(ClassUtils.getContextClassLoader(), false);
+
+
+
+                Class clazz;
+                //in case the class does not exist we have to load it from our weavingcontext
+                //otherwise we do just a scan on the class to avoid side behavior
+                //if (WeavingContext.getFileChangedDaemon().getClassMap().get(className) == null) {
+                //    clazz = _weaver.loadScriptingClassFromName(className);
+                //} else {
+                    clazz = loader.loadClass(className);
+                //}
+
+                if (clazz != null) {
+                    java.lang.annotation.Annotation[] anns = clazz.getAnnotations();
+                    if (anns != null && anns.length > 0) {
+                        addOrMoveAnnotations(clazz);
+                    } else {
+                        removeAnnotations(clazz);
+                    }
+                }
+            } catch (ClassNotFoundException e) {
+                Logger _logger = Logger.getLogger(this.getClass().getName());
+                _logger.log(Level.WARNING, "", e);
+            }
+        }
+
+    }
+
+    /**
+     * add or moves a class level annotation
+     * to a new place
+     *
+     * @param clazz the class to have the annotation moved or added
+     */
+    private void addOrMoveAnnotations(Class clazz) {
+        java.lang.annotation.Annotation[] anns = clazz.getAnnotations();
+        for (java.lang.annotation.Annotation ann : anns) {
+            for (ClassScanListener cListener : _listeners) {
+                AnnotationScanListener listener = (AnnotationScanListener) cListener;
+                if (listener.supportsAnnotation(ann.annotationType())) {
+                    listener.register(clazz, ann);
+
+                    _registeredAnnotations.put(clazz.getName(), ann.annotationType().getName());
+                    //TODO check if we still need this
+                    //ClassResource metaData = WeavingContext.getInstance().getWatchedResource(clazz.getName());
+                    
+                }
+            }
+        }
+    }
+
+    /**
+     * use case annotation removed
+     * we have to entirely remove the annotation
+     * from our internal registry and the myfaces registry
+     *
+     * @param clazz the class to have the annotation removed
+     */
+    private void removeAnnotations(Class clazz) {
+        String registeredAnnotation = _registeredAnnotations.get(clazz.getName());
+        if (registeredAnnotation != null) {
+            for (ClassScanListener cListener : _listeners) {
+                AnnotationScanListener listener = (AnnotationScanListener) cListener;
+                if (listener.supportsAnnotation(registeredAnnotation)) {
+                    listener.purge(clazz.getName());
+                    _registeredAnnotations.remove(clazz.getName());
+                    //WeavingContext.getFileChangedDaemon().getClassMap().remove(clazz.getName());
+                }
+            }
+        }
+    }
+
+    public void clearListeners() {
+        _listeners.clear();
+    }
+
+    public void addListener(ClassScanListener listener) {
+        _listeners.add(listener);
+    }
+
+
+    public void scanAndMarkChange() {
+        //do nothing here
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ListenerForAnnotationHandler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ListenerForAnnotationHandler.java
new file mode 100644
index 0000000..2b0c483
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ListenerForAnnotationHandler.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+/**
+ * A generic system event listener which makes the system event
+ * annotations dynamic
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ListenerForAnnotationHandler {
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/MapEntityAnnotationScanner.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/MapEntityAnnotationScanner.java
new file mode 100644
index 0000000..97ef8a7
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/MapEntityAnnotationScanner.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.AnnotationScanListener;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+
+import java.lang.annotation.Annotation;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Annotation scanner which scans generically
+ * an annotation with more than one entry values.
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public abstract class MapEntityAnnotationScanner extends BaseAnnotationScanListener implements AnnotationScanListener
+{
+
+    String[] _annotationParms = null;
+
+    public MapEntityAnnotationScanner(String... annotationParms) {
+        _annotationParms = annotationParms;
+    }
+
+    public void register(Class clazz, Annotation annotation) {
+
+        Map<String, Object> parms = new HashMap<String, Object>(_annotationParms.length);
+
+        for (String accessor : _annotationParms) {
+            parms.put(accessor, ReflectUtil.fastExecuteMethod(annotation, accessor, new Object[0]));
+        }
+
+        if (hasToReregister(parms, clazz)) {
+            addEntity(clazz, parms);
+        }
+    }
+
+    protected abstract void addEntity(Class clazz, Map<String, Object> params);
+
+    protected abstract boolean hasToReregister(Map params, Class clazz);
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/MyFacesBeanImplementationListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/MyFacesBeanImplementationListener.java
new file mode 100644
index 0000000..a7f259a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/MyFacesBeanImplementationListener.java
@@ -0,0 +1,240 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+import org.apache.myfaces.config.RuntimeConfig;
+import org.apache.myfaces.config.element.NavigationRule;
+import org.apache.myfaces.config.impl.digester.elements.ManagedBean;
+import org.apache.myfaces.extensions.scripting.core.api.AnnotationScanListener;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import org.apache.myfaces.extensions.scripting.core.common.util.StringUtils;
+
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.CustomScoped;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.NoneScoped;
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.SessionScoped;
+import javax.faces.bean.ViewScoped;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+
+/**
+ * bean implementation listener which registers new java sources
+ * into the runtime config, note this class is not thread safe
+ * it is only allowed to be called from a single thread
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class MyFacesBeanImplementationListener extends BaseAnnotationScanListener implements AnnotationScanListener
+{
+
+    public boolean supportsAnnotation(String annotation) {
+        return annotation.equals(javax.faces.bean.ManagedBean.class.getName());
+    }
+
+    public boolean supportsAnnotation(Class annotation) {
+        return annotation.equals(javax.faces.bean.ManagedBean.class);
+    }
+
+    public void register(Class clazz, java.lang.annotation.Annotation ann) {
+
+
+        javax.faces.bean.ManagedBean annCasted = (javax.faces.bean.ManagedBean) ann;
+
+        String beanName = annCasted.name();
+        if (StringUtils.isBlank(beanName)) {
+            beanName = normalizeName(clazz.getName());
+        }
+
+        beanName = beanName.replaceAll("\"", "");
+        //we need to reregister for every bean due to possible managed prop
+        //and scope changes
+        registerManagedBean(clazz, beanName);
+
+    }
+
+    /**
+     * registers a new managed bean into runtime config
+     * @param clazz
+     * @param beanName
+     */
+    protected void registerManagedBean(Class clazz, String beanName)
+    {
+        RuntimeConfig config = getRuntimeConfig();
+
+        ManagedBean mbean;
+        if (!hasToReregister(beanName, clazz)) {
+            mbean = (ManagedBean) _alreadyRegistered.get(beanName);
+            //return;
+        } else {
+            mbean = new ManagedBean();
+        }
+
+        mbean.setBeanClass(clazz.getName());
+
+        ReflectUtil.setField(mbean, "beanClass", null, true);
+        mbean.setName(beanName);
+        handleManagedpropertiesCompiled(mbean, fields(clazz));
+        resolveScope(clazz, mbean);
+
+        _alreadyRegistered.put(beanName, mbean);
+        config.addManagedBean(beanName, mbean);
+    }
+
+    private void resolveScope(Class clazz, ManagedBean mbean) {
+        //now lets resolve the scope
+        String scope = "none";
+        if (clazz.isAnnotationPresent(RequestScoped.class)) {
+            scope = "request";
+        } else if (clazz.isAnnotationPresent(SessionScoped.class)) {
+            scope = "session";
+        } else if (clazz.isAnnotationPresent(ApplicationScoped.class)) {
+            scope = "application";
+        } else if (clazz.isAnnotationPresent(ViewScoped.class)) {
+            scope = "view";    
+        } else if (clazz.isAnnotationPresent(NoneScoped.class)) {
+            scope = "none";
+        } else if (clazz.isAnnotationPresent(CustomScoped.class)) {
+            CustomScoped customScoped = (CustomScoped) clazz.getAnnotation(CustomScoped.class);
+            scope = (customScoped != null) ? customScoped.value() : "custom";
+        }
+        mbean.setScope(scope);
+    }
+
+    protected void handleManagedpropertiesCompiled(ManagedBean mbean, Field[] fields) {
+        /*since we reprocess the managed properties we can handle them here by clearing them first*/
+        mbean.getManagedProperties().clear();
+        for (Field field : fields) {
+            if (_log.isLoggable(Level.FINEST)) {
+                _log.log(Level.FINEST, "  Scanning field '" + field.getName() + "'");
+            }
+            ManagedProperty property = field
+                    .getAnnotation(ManagedProperty.class);
+            if (property != null) {
+                if (_log.isLoggable(Level.FINE)) {
+                    _log.log(Level.FINE, "  Field '" + field.getName()
+                            + "' has a @ManagedProperty annotation");
+                }
+
+                org.apache.myfaces.config.impl.digester.elements.ManagedProperty mpc =
+                        new org.apache.myfaces.config.impl.digester.elements.ManagedProperty();
+                String name = property.name();
+                if ((name == null) || "".equals(name)) {
+                    name = field.getName();
+                }
+                mpc.setPropertyName(name);
+                mpc.setPropertyClass(field.getType().getName()); // FIXME - primitives, arrays, etc.
+                mpc.setValue(property.value());
+
+                ReflectUtil.executeMethod(mbean, "addProperty", mpc);
+            }
+        }
+    }
+
+    /**
+     * <p>Return an array of all <code>Field</code>s reflecting declared
+     * fields in this class, or in any superclass other than
+     * <code>java.lang.Object</code>.</p>
+     *
+     * @param clazz Class to be analyzed
+     * @return the array of fields
+     */
+    private Field[] fields(Class clazz) {
+
+        Map<String, Field> fields = new HashMap<String, Field>();
+        do {
+            for (Field field : clazz.getDeclaredFields()) {
+                if (!fields.containsKey(field.getName())) {
+                    fields.put(field.getName(), field);
+                }
+            }
+        } while ((clazz = clazz.getSuperclass()) != Object.class);
+        return fields.values().toArray(new Field[fields.size()]);
+    }
+
+    protected boolean hasToReregister(String name, Class clazz) {
+        ManagedBean mbean = (ManagedBean) _alreadyRegistered.get(name);
+        return mbean == null || !mbean.getManagedBeanClassName().equals(clazz.getName());
+    }
+
+    /**
+     * name normalizer for automated name mapping
+     * (aka if no name attribute is given in the annotation)
+     *
+     * @param className the classname to be mapped (can be with package=
+     * @return the normalized jsf bean name
+     */
+    private String normalizeName(String className) {
+        String name = className.substring(className.lastIndexOf(".") + 1);
+
+        return name.substring(0, 1).toLowerCase() + name.substring(1);
+    }
+
+    @SuppressWarnings("unchecked")
+    public void purge(String className) {
+        RuntimeConfig config = getRuntimeConfig();
+        //We have to purge and readd our managed beans, unfortunatly the myfaces impl enforces
+        //us to do the same for the nav rules after purge
+        //we cannot purge the managed beans and nav rules separately
+        Collection<NavigationRule> navigationRules = new ArrayList<NavigationRule>();
+        Map managedBeans = new HashMap<String, org.apache.myfaces.config.element.ManagedBean>();
+
+        navigationRules.addAll(config.getNavigationRules());
+        managedBeans.putAll(config.getManagedBeans());
+
+        config.purge();
+
+        for (NavigationRule navRule : navigationRules) {
+            config.addNavigationRule(navRule);
+        }
+
+        //We refresh the managed beans, dead references still can cause
+        //runtime errors but in this case we cannot do anything
+        org.apache.myfaces.config.element.ManagedBean mbeanFound = null;
+        List<String> mbeanKey = new LinkedList<String>();
+
+        for (Object entry : managedBeans.entrySet()) {
+            Map.Entry mbean = (Map.Entry) entry;
+
+            Object bean =  mbean.getValue();
+
+
+            if (!((Class)ReflectUtil.executeMethod( bean, "getManagedBeanClass")).getName().equals(className)) {
+                config.addManagedBean((String) mbean.getKey(), (org.apache.myfaces.config.element.ManagedBean) mbean.getValue());
+            } else {
+                Object mbeanf = mbean.getValue();
+                mbeanKey.add((String)ReflectUtil.executeMethod(mbeanf, "getManagedBeanName"));
+            }
+        }
+        if (mbeanFound != null) {
+            for (String toRemove : mbeanKey) {
+                _alreadyRegistered.remove(toRemove);
+            }
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/RendererImplementationListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/RendererImplementationListener.java
new file mode 100644
index 0000000..1bebe29
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/RendererImplementationListener.java
@@ -0,0 +1,202 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.AnnotationScanListener;
+import org.apache.myfaces.extensions.scripting.jsf.annotation.purged.PurgedRenderer;
+
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContext;
+import javax.faces.render.FacesRenderer;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class RendererImplementationListener extends MapEntityAnnotationScanner implements AnnotationScanListener
+{
+    private static final String PAR_FAMILY = "componentFamily";
+    private static final String PAR_RENDERERTYPE = "rendererType";
+    private static final String PAR_RENDERKITID = "renderKitId";
+
+    Map<AnnotationEntry, String> _inverseIndex = new HashMap<AnnotationEntry, String>();
+
+    public RendererImplementationListener() {
+        super(PAR_FAMILY, PAR_RENDERERTYPE, PAR_RENDERKITID);
+    }
+
+    class AnnotationEntry {
+        String componentFamily;
+        String rendererType;
+        String renderKitId;
+
+        AnnotationEntry(String componentFamily, String rendererType, String renderKitId) {
+            this.componentFamily = componentFamily;
+            this.rendererType = rendererType;
+            this.renderKitId = renderKitId;
+        }
+
+        public boolean equals(Object incoming) {
+            if (!(incoming instanceof AnnotationEntry)) {
+                return false;
+            }
+            AnnotationEntry toCompare = (AnnotationEntry) incoming;
+            //handle null cases
+            if ((componentFamily == null && toCompare.getComponentFamily() != null) ||
+                    (componentFamily != null && toCompare.getComponentFamily() == null) ||
+                    (rendererType == null && toCompare.getRendererType() != null) ||
+                    (rendererType != null && toCompare.getRendererType() == null) ||
+                    (renderKitId == null && toCompare.getRenderKitId() != null) ||
+                    (renderKitId != null && toCompare.getRenderKitId() == null)) {
+
+                return false;
+            } else if (componentFamily == null && toCompare.getComponentFamily() == null &&
+                    rendererType == null && toCompare.getRendererType() == null &&
+                    renderKitId == null && toCompare.getRenderKitId() == null) {
+                return true;
+            }
+
+            return componentFamily.equals(toCompare.getComponentFamily()) &&
+                    rendererType.equals(toCompare.getRendererType()) &&
+                    renderKitId.equals(toCompare.getRenderKitId());
+        }
+
+        @Override
+        public int hashCode() {
+            /*we calculate the hashcoide to avoid double entries*/
+            return (((componentFamily != null) ? componentFamily : "")
+                    + "_" +
+                    ((rendererType != null) ? rendererType : "")
+                    + "_" +
+                    ((renderKitId != null) ? renderKitId : "")
+
+            ).hashCode();
+        }
+
+        public String getComponentFamily() {
+            return componentFamily;
+        }
+
+        public String getRendererType() {
+            return rendererType;
+        }
+
+        public String getRenderKitId() {
+            return renderKitId;
+        }
+    }
+
+    public boolean supportsAnnotation(String annotation) {
+        return annotation.equals(FacesRenderer.class.getName());
+    }
+
+    public boolean supportsAnnotation(Class annotation) {
+        return annotation.equals(FacesRenderer.class);
+    }
+
+    @Override
+    protected void addEntity(Class clazz, Map<String, Object> params) {
+        String value = (String) params.get(PAR_FAMILY);
+        String theDefault = (String) params.get(PAR_RENDERERTYPE);
+
+        String renderKitId = getRenderKitId(params);
+        RenderKit renderKit = getRenderkit(renderKitId);
+
+        AnnotationEntry entry = new AnnotationEntry(value, theDefault, renderKitId);
+        _inverseIndex.put(entry, clazz.getName());
+        _alreadyRegistered.put(clazz.getName(), entry);
+
+        if (_log.isLoggable(Level.FINEST)) {
+            _log.log(Level.FINEST, "addRenderer(" + renderKitId + ", "
+                    + entry.getComponentFamily() + ", " + entry.getRendererType()
+                    + ", " + clazz.getName() + ")");
+        }
+
+        try {
+            renderKit.addRenderer(entry.getComponentFamily(), entry.getRendererType(), (Renderer) clazz.newInstance());
+        } catch (InstantiationException e) {
+            _log.log(Level.SEVERE, "", e);
+        } catch (IllegalAccessException e) {
+            _log.log(Level.SEVERE, "", e);
+        }
+    }
+
+    private RenderKitFactory getRenderKitFactory() {
+        return (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+    }
+
+    @Override
+    protected boolean hasToReregister(Map params, Class clazz) {
+        String value = (String) params.get(PAR_FAMILY);
+        String theDefault = (String) params.get(PAR_RENDERERTYPE);
+        String renderKitId = (String) params.get(PAR_RENDERKITID);
+
+        AnnotationEntry entry = new AnnotationEntry(value, theDefault, renderKitId);
+
+        AnnotationEntry alreadyRegistered = (AnnotationEntry) _alreadyRegistered.get(clazz.getName());
+        if (alreadyRegistered == null) {
+            return true;
+        }
+        //here the check if the new class is the same as the old one
+        return alreadyRegistered.equals(entry);
+    }
+
+    private String getRenderKitId(Map<String, Object> params) {
+        String renderKitId = (String) params.get(PAR_RENDERKITID);
+        renderKitId = (renderKitId == null) ? getApplication().getDefaultRenderKitId() : renderKitId;
+        return renderKitId;
+    }
+
+    private RenderKit getRenderkit(String renderKitId) {
+        RenderKitFactory factory = getRenderKitFactory();
+        RenderKit renderKit = factory.getRenderKit(FacesContext.getCurrentInstance(), renderKitId);
+        return renderKit;
+    }
+
+    @Override
+    public void purge(String className) {
+        super.purge(className);
+        AnnotationEntry entry = (AnnotationEntry) _alreadyRegistered.remove(className);
+        if (entry == null) {
+            return;
+        }
+
+        RenderKit renderKit = getRenderkit(entry.getRenderKitId());
+        try {
+            //by fetching the changed renderer we save a full rescan
+            String rendererClass = _inverseIndex.get(entry);
+            if (rendererClass != null && rendererClass.equals(className)) {
+                _inverseIndex.put(entry, PurgedRenderer.class.getName());
+                renderKit.addRenderer(entry.getComponentFamily(), entry.getRendererType(), PurgedRenderer.class.newInstance());
+            }
+        } catch (InstantiationException e) {
+            _log.log(Level.SEVERE, "", e);
+        } catch (IllegalAccessException e) {
+            _log.log(Level.SEVERE, "", e);
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/SingleEntityAnnotationListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/SingleEntityAnnotationListener.java
new file mode 100644
index 0000000..614b9cf
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/SingleEntityAnnotationListener.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+import org.apache.myfaces.extensions.scripting.core.api.AnnotationScanListener;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * annotation scanner which generalized
+ * scans annotations with one value entry
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public abstract class SingleEntityAnnotationListener extends BaseAnnotationScanListener implements AnnotationScanListener
+{
+    String _entityParamValue = null;
+
+    public void register(Class clazz, Annotation annotation) {
+
+        String val = (String) ReflectUtil.executeMethod(annotation, _entityParamValue);
+        if (hasToReregister(val, clazz)) {
+            addEntity(clazz, val);
+        }
+    }
+
+    protected abstract void addEntity(Class clazz, String val);
+
+    protected boolean hasToReregister(String name, Class clazz) {
+        String componentClass = (String) _alreadyRegistered.get(name);
+        return componentClass == null || !componentClass.equals(clazz.getName());
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ValidatorImplementationListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ValidatorImplementationListener.java
new file mode 100644
index 0000000..80bc504
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/ValidatorImplementationListener.java
@@ -0,0 +1,158 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation;
+
+import org.apache.myfaces.extensions.scripting.core.api.AnnotationScanListener;
+import org.apache.myfaces.extensions.scripting.jsf.annotation.purged.PurgedValidator;
+
+import javax.faces.validator.FacesValidator;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ValidatorImplementationListener extends MapEntityAnnotationScanner implements AnnotationScanListener
+{
+
+    private static final String PAR_VALUE = "value";
+    private static final String PAR_DEFAULT = "isDefault";
+
+    Map<AnnotationEntry, String> _inverseIndex = new HashMap<AnnotationEntry, String>();
+
+    public ValidatorImplementationListener() {
+        /*supported annotation parameters rendererType and default*/
+        super(PAR_VALUE, PAR_DEFAULT);
+    }
+
+    class AnnotationEntry {
+        String value;
+        Boolean theDefault;
+
+        AnnotationEntry(String value, Boolean theDefault) {
+            this.value = value;
+            this.theDefault = theDefault;
+        }
+
+        public boolean equals(Object incoming) {
+            if (!(incoming instanceof AnnotationEntry)) {
+                return false;
+            }
+            AnnotationEntry toCompare = (AnnotationEntry) incoming;
+
+            if (incoming == null) {
+                return false;
+            }
+
+            boolean firstEquals = compareValuePair(value, toCompare.getValue());
+            boolean secondEquals = compareValuePair(theDefault, toCompare.getTheDefault());
+
+            return firstEquals && secondEquals;
+        }
+
+        @Override
+        public int hashCode() {
+            String retVal = checkForNull(value) + "_" + checkForNull(theDefault);
+            return retVal.hashCode();
+        }
+
+        private String checkForNull(String in) {
+            return (in == null) ? "" : in;
+        }
+
+        private String checkForNull(Boolean in) {
+            return (in == null) ? "" : String.valueOf(in.booleanValue());
+        }
+
+        protected boolean compareValuePair(Object val1, Object val2) {
+            boolean retVal = false;
+            if (val1 == null) {
+                if (val2 != null) retVal = false;
+                if (val2 == null) {
+                    retVal = true;
+                }
+            } else {
+                retVal = val1.equals(val2);
+            }
+            return retVal;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        public Boolean getTheDefault() {
+            return theDefault;
+        }
+    }
+
+    public boolean supportsAnnotation(String annotation) {
+        return annotation.equals(FacesValidator.class.getName());
+    }
+
+    public boolean supportsAnnotation(Class annotation) {
+        return annotation.equals(FacesValidator.class);
+    }
+
+
+    @Override
+    protected void addEntity(Class clazz, Map<String, Object> params) {
+        String value = (String) params.get(PAR_VALUE);
+        Boolean theDefault = (Boolean) params.get(PAR_DEFAULT);
+
+        AnnotationEntry entry = new AnnotationEntry(value, theDefault);
+        _alreadyRegistered.put(clazz.getName(), entry);
+        _inverseIndex.put(entry, clazz.getName());
+
+        getApplication().addValidator(entry.getValue(), clazz.getName());
+    }
+
+    @Override
+    protected boolean hasToReregister(Map params, Class clazz) {
+        String value = (String) params.get(PAR_VALUE);
+        Boolean theDefault = (Boolean) params.get(PAR_DEFAULT);
+
+        AnnotationEntry entry = new AnnotationEntry(value, theDefault);
+
+        AnnotationEntry alreadyRegistered = (AnnotationEntry) _alreadyRegistered.get(clazz.getName());
+        if (alreadyRegistered == null) {
+            return true;
+        }
+
+        return alreadyRegistered.equals(entry);
+    }
+
+    @Override
+    public void purge(String className) {
+        super.purge(className);
+        AnnotationEntry entry = (AnnotationEntry) _alreadyRegistered.get(className);
+        if (entry == null) {
+            return;
+        }
+
+        String oldValidator = _inverseIndex.get(entry);
+        if (oldValidator.equals(className)) {
+            _alreadyRegistered.remove(className);
+            getApplication().addValidator(entry.getValue(), PurgedValidator.class.getName());
+            _inverseIndex.put(entry, PurgedValidator.class.getName());
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedBehavior.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedBehavior.java
new file mode 100644
index 0000000..2bb37e4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedBehavior.java
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+import javax.faces.component.behavior.Behavior;
+import javax.faces.event.BehaviorEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedBehavior implements Behavior {
+    public void broadcast(BehaviorEvent event) {
+        throw new RuntimeException("Behavior does not exist");
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedClientBehaviorRenderer.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedClientBehaviorRenderer.java
new file mode 100644
index 0000000..8555381
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedClientBehaviorRenderer.java
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+import javax.faces.render.ClientBehaviorRenderer;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedClientBehaviorRenderer extends ClientBehaviorRenderer {
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedComponent.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedComponent.java
new file mode 100644
index 0000000..27ee379
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedComponent.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+import javax.faces.component.UIOutput;
+
+/**
+ * We override the component from a real family so that
+ * so that myfaces can handle it in a decent way
+ * directly from UIComponent it would fail
+ * unless we implement everything family etc... all by our own
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedComponent extends UIOutput {
+    public PurgedComponent() {
+        super();
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedConverter.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedConverter.java
new file mode 100644
index 0000000..643e2a7
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedConverter.java
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedConverter implements Converter {
+    private static final String DOES_NOT_EXIST = "Converter does not exist";
+
+    public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedELResolver.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedELResolver.java
new file mode 100644
index 0000000..2fda69a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedELResolver.java
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import java.util.Iterator;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedELResolver extends ELResolver implements Decorated
+{
+
+    private final String DOES_NOT_EXIST = "EL Resolver does not exist";
+
+    ELResolver _delegate;
+
+    public PurgedELResolver(ELResolver delegate) {
+        _delegate = delegate;
+    }
+
+    @Override
+    public Object getValue(ELContext elContext, Object o, Object o1) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public Class getType(ELContext elContext, Object o, Object o1) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public void setValue(ELContext elContext, Object o, Object o1, Object o2) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public boolean isReadOnly(ELContext elContext, Object o, Object o1) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public Iterator getFeatureDescriptors(ELContext elContext, Object o) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public Class getCommonPropertyType(ELContext elContext, Object o) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    public ELResolver getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedLifecycle.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedLifecycle.java
new file mode 100644
index 0000000..c0cbb2c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedLifecycle.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseListener;
+import javax.faces.lifecycle.Lifecycle;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedLifecycle extends Lifecycle implements Decorated
+{
+
+    private static final String DOES_NOT_EXIST = "Lifecycle does not exist";
+
+    Lifecycle _delegate;
+
+    public PurgedLifecycle(Lifecycle delegate) {
+        _delegate = delegate;
+    }
+
+    @Override
+    public void addPhaseListener(PhaseListener listener) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public void execute(FacesContext context) throws FacesException {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public PhaseListener[] getPhaseListeners() {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public void removePhaseListener(PhaseListener listener) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public void render(FacesContext context) throws FacesException {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedNavigationHandler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedNavigationHandler.java
new file mode 100644
index 0000000..f728e7a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedNavigationHandler.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+
+import javax.faces.application.NavigationHandler;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedNavigationHandler extends NavigationHandler implements Decorated
+{
+
+    NavigationHandler _delegate;
+
+    public PurgedNavigationHandler(NavigationHandler delegate) {
+        _delegate = delegate;
+    }
+
+    @Override
+    public void handleNavigation(FacesContext context, String fromAction, String outcome) {
+        throw new RuntimeException("Navigation handler does not exist");
+    }
+
+    public NavigationHandler getDelegate() {
+        return _delegate;
+    }
+
+    public void setDelegate(NavigationHandler delegate) {
+        _delegate = delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedRenderer.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedRenderer.java
new file mode 100644
index 0000000..e875dc8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedRenderer.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.ConverterException;
+import javax.faces.render.Renderer;
+import java.io.IOException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedRenderer extends Renderer {
+    private static final String DOES_NOT_EXIST = "Renderer does not exist";
+
+    public PurgedRenderer() {
+        super();
+    }
+
+    @Override
+    public void decode(FacesContext context, UIComponent component) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public void encodeChildren(FacesContext context, UIComponent component) throws IOException {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public String convertClientId(FacesContext context, String clientId) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public boolean getRendersChildren() {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public Object getConvertedValue(FacesContext context, UIComponent component, Object submittedValue) throws ConverterException {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedRenderkit.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedRenderkit.java
new file mode 100644
index 0000000..cb9de2a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedRenderkit.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.Renderer;
+import javax.faces.render.ResponseStateManager;
+import java.io.OutputStream;
+import java.io.Writer;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedRenderkit extends RenderKit implements Decorated
+{
+
+    private static final String DOES_NOT_EXIST = "Renderkit does not exist";
+
+    RenderKit _delegate;
+
+    public PurgedRenderkit(RenderKit delegate) {
+        _delegate = delegate;
+    }
+
+    @Override
+    public void addRenderer(String family, String rendererType, Renderer renderer) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public ResponseStream createResponseStream(OutputStream out) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public ResponseWriter createResponseWriter(Writer writer, String contentTypeList, String characterEncoding) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public Renderer getRenderer(String family, String rendererType) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public ResponseStateManager getResponseStateManager() {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    public RenderKit getDelegate() {
+        return _delegate;
+    }
+
+    public void setDelegate(RenderKit delegate) {
+        _delegate = delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedResourceHandler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedResourceHandler.java
new file mode 100644
index 0000000..791edcf
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedResourceHandler.java
@@ -0,0 +1,86 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PurgedResourceHandler extends ResourceHandler implements Decorated
+{
+
+    private static final String DOES_NOT_EXIST = "Resource Handler does not exist";
+
+    ResourceHandler _delegate;
+
+    public PurgedResourceHandler(ResourceHandler delegate) {
+        _delegate = delegate;
+    }
+
+    @Override
+    public Resource createResource(String resourceName) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public Resource createResource(String resourceName, String libraryName) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public Resource createResource(String resourceName, String libraryName, String contentType) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public String getRendererTypeForResourceName(String resourceName) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public void handleResourceRequest(FacesContext context) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public boolean isResourceRequest(FacesContext context) {
+        throw new RuntimeException(DOES_NOT_EXIST);
+    }
+
+    @Override
+    public boolean libraryExists(String libraryName) {
+        return false;
+    }
+
+    public ResourceHandler getDelegate() {
+        return _delegate;
+    }
+
+    public void setDelegate(ResourceHandler delegate) {
+        _delegate = delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedValidator.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedValidator.java
new file mode 100644
index 0000000..61fd531
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/purged/PurgedValidator.java
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.annotation.purged;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Purged validator class to enable validator
+ *          purging despite the fact
+ *          that the original code does not allow it
+ */
+
+public class PurgedValidator implements Validator {
+
+    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
+        throw new RuntimeException("Validator does not exist");
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponent.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponent.java
new file mode 100644
index 0000000..542f037
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponent.java
@@ -0,0 +1,129 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.components;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.common.util.StringUtils;
+
+import javax.el.ValueExpression;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import java.util.Locale;
+
+/**
+ * Compiler component which currently
+ * just shows the last compile output in the system
+ * <p/>
+ * Not to keep backwards compatibility to JSF 1.2
+ * we do not use the StateHelper but go the old route
+ * instead
+ */
+@SuppressWarnings("unused")
+public class CompilerComponent extends UIOutput {
+
+    String _scriptingLanguage = null;
+    String _errorsLabel = null;
+    String _warningsLabel = null;
+    private static final String RENDERER_TYPE = "org.apache.myfaces.extensions.scripting.components.CompilerComponentRenderer";
+    private static final String ERRORS_LABEL = "errorsLabel";
+    private static final String WARNINGS_LABEL = "warningsLabel";
+    private static final String SCRIPTING_LANGUAGE = "scriptingLanguage";
+
+    public CompilerComponent() {
+        super();
+        setRendererType(RENDERER_TYPE);
+    }
+
+    @Override
+    public boolean isTransient() {
+        return true;
+    }
+
+    @Override
+    public Object saveState(FacesContext facesContext) {
+        Object values[] = new Object[4];
+        values[0] = super.saveState(facesContext);    //To change body of overridden methods use File | Settings | File Templates.
+        values[1] = _scriptingLanguage;
+        values[2] = _errorsLabel;
+        values[3] = _warningsLabel;
+        return values;
+    }
+
+    @Override
+    public void restoreState(FacesContext facesContext, Object state) {
+        Object[] values = (Object[]) state;
+        super.restoreState(facesContext, values[0]);
+
+        _scriptingLanguage = (String) values[1];
+        _errorsLabel = (String) values[2];
+        _warningsLabel = (String) values[3];
+    }
+
+
+    public String getScriptingLanguage() {
+        if (_scriptingLanguage != null) {
+            return _scriptingLanguage;
+        }
+        ValueExpression vb = getValueExpression(SCRIPTING_LANGUAGE);
+        return vb != null ? ((String) vb.getValue(getFacesContext().getELContext())) : null;
+    }
+
+    public Integer getScriptingLanguageAsInt() {
+        if (StringUtils.isBlank(_scriptingLanguage)) {
+            return ScriptingConst.ENGINE_TYPE_JSF_ALL;
+        } else {
+            String scriptingLanguage = _scriptingLanguage.toLowerCase(Locale.getDefault()).trim();
+            if (scriptingLanguage.equals("java")) {
+                return ScriptingConst.ENGINE_TYPE_JSF_JAVA;
+            } else if (_scriptingLanguage.toLowerCase(Locale.getDefault()).trim().equals("groovy")) {
+                return ScriptingConst.ENGINE_TYPE_JSF_GROOVY;
+            }
+        }
+        return ScriptingConst.ENGINE_TYPE_JSF_NO_ENGINE;
+    }
+
+    public void setScriptingLanguage(String scriptingLanguage) {
+        _scriptingLanguage = scriptingLanguage;
+    }
+
+    public String getErrorsLabel() {
+        if (_errorsLabel != null) {
+            return _errorsLabel;
+        }
+        ValueExpression vb = getValueExpression(ERRORS_LABEL);
+        return vb != null ? ((String) vb.getValue(getFacesContext().getELContext())) : null;
+    }
+
+    public void setErrorsLabel(String _errorsLabel) {
+        this._errorsLabel = _errorsLabel;
+    }
+
+    public String getWarningsLabel() {
+        if (_warningsLabel != null) {
+            return _warningsLabel;
+        }
+        ValueExpression vb = getValueExpression(WARNINGS_LABEL);
+        return vb != null ? ((String) vb.getValue(getFacesContext().getELContext())) : null;
+    }
+
+    public void setWarningsLabel(String _warningsLabel) {
+        this._warningsLabel = _warningsLabel;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponentRenderer.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponentRenderer.java
new file mode 100644
index 0000000..9506f1c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponentRenderer.java
@@ -0,0 +1,151 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.components;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.StringUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationMessage;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+import java.io.IOException;
+import java.util.logging.Logger;
+
+/**
+ * Renderer for the compiler component
+ * <p/>
+ * This renderer is responsible for rendering the last compiler output
+ * hosted in our weavingContext
+ */
+@SuppressWarnings("unchecked")
+public class CompilerComponentRenderer extends Renderer {
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        super.encodeBegin(context, component);
+
+        ResponseWriter responseWriter = FacesContext.getCurrentInstance().getResponseWriter();
+        CompilerComponent compilerComp = (CompilerComponent) component;
+
+        Integer scriptingLanguage = compilerComp.getScriptingLanguageAsInt();
+        CompilationResult result = null;
+        switch (scriptingLanguage) {
+            case ScriptingConst.ENGINE_TYPE_JSF_JAVA:
+                result = WeavingContext.getInstance().getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+                break;
+            case ScriptingConst.ENGINE_TYPE_JSF_GROOVY:
+                result = WeavingContext.getInstance().getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_GROOVY);
+                break;
+            case ScriptingConst.ENGINE_TYPE_JSF_ALL:
+                result = new CompilationResult("");
+                CompilationResult tempResult = WeavingContext.getInstance().getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+                if (tempResult != null) {
+                    copyCompilationResult(result, tempResult);
+                }
+
+                tempResult = WeavingContext.getInstance().getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_GROOVY);
+                if (tempResult != null) {
+                    copyCompilationResult(result, tempResult);
+                }
+
+                break;
+            case ScriptingConst.ENGINE_TYPE_JSF_NO_ENGINE:
+                Logger log = Logger.getLogger(this.getClass().getName());
+                log.warning(RendererConst.WARNING_ENGINE_NOT_FOUND);
+                break;
+        }
+
+        startDiv(component, responseWriter, RendererConst.ERROR_BOX);
+        if (result == null || (!result.hasErrors() && result.getWarnings().isEmpty())) {
+            responseWriter.write(RendererConst.NO_COMPILE_ERRORS);
+        } else {
+            writeErrorsLabel(component, responseWriter, compilerComp);
+            writeErrors(component, responseWriter, result);
+            writeWarningsLabel(component, responseWriter, compilerComp);
+            writeWarnings(component, responseWriter, result);
+        }
+        endDiv(responseWriter);
+
+        responseWriter.flush();
+
+    }
+
+    private void writeWarnings(UIComponent component, ResponseWriter responseWriter, CompilationResult result) throws IOException {
+        startDiv(component, responseWriter, RendererConst.WARNINGS);
+        for (CompilationMessage msg : result.getWarnings()) {
+            startDiv(component, responseWriter, RendererConst.LINE);
+            writeDiv(component, responseWriter, RendererConst.LINE_NO, String.valueOf(msg.getLineNumber()));
+            writeDiv(component, responseWriter, RendererConst.MESSAGE, msg.getMessage());
+            endDiv(responseWriter);
+        }
+        endDiv(responseWriter);
+    }
+
+    private void writeWarningsLabel(UIComponent component, ResponseWriter responseWriter, CompilerComponent compilerComp) throws IOException {
+        if (!StringUtils.isBlank(compilerComp.getWarningsLabel())) {
+            startDiv(component, responseWriter, RendererConst.WARNINGS_LABEL);
+            responseWriter.write(compilerComp.getWarningsLabel());
+            endDiv(responseWriter);
+        }
+    }
+
+    private void writeErrors(UIComponent component, ResponseWriter responseWriter, CompilationResult result) throws IOException {
+        startDiv(component, responseWriter, RendererConst.ERRORS);
+        for (CompilationMessage msg : result.getErrors()) {
+            startDiv(component, responseWriter, RendererConst.LINE);
+            writeDiv(component, responseWriter, RendererConst.LINE_NO, String.valueOf(msg.getLineNumber()));
+            writeDiv(component, responseWriter, RendererConst.MESSAGE, msg.getMessage());
+            endDiv(responseWriter);
+        }
+        endDiv(responseWriter);
+    }
+
+    private String writeDiv(UIComponent component, ResponseWriter responseWriter, String styleClass, String value) throws IOException {
+        startDiv(component, responseWriter, styleClass);
+        responseWriter.write(value);
+        endDiv(responseWriter);
+        return "";
+    }
+
+    private void endDiv(ResponseWriter responseWriter) throws IOException {
+        responseWriter.endElement(RendererConst.HTML_DIV);
+    }
+
+    private void startDiv(UIComponent component, ResponseWriter responseWriter, String styleClass) throws IOException {
+        responseWriter.startElement(RendererConst.HTML_DIV, component);
+        responseWriter.writeAttribute(RendererConst.HTML_CLASS, styleClass, null);
+    }
+
+    private void writeErrorsLabel(UIComponent component, ResponseWriter responseWriter, CompilerComponent compilerComp) throws IOException {
+        if (!StringUtils.isBlank(compilerComp.getErrorsLabel())) {
+            startDiv(component, responseWriter, RendererConst.ERRORS_LABEL);
+            responseWriter.write(compilerComp.getErrorsLabel());
+            endDiv(responseWriter);
+        }
+    }
+
+    private void copyCompilationResult(CompilationResult result, CompilationResult tempResult) {
+        result.getErrors().addAll(tempResult.getErrors());
+        result.getWarnings().addAll(tempResult.getWarnings());
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/RendererConst.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/RendererConst.java
new file mode 100644
index 0000000..a25883b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/RendererConst.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.components;
+
+/**
+ * Renderer Constant shared by both renderers
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class RendererConst {
+    static final String ERROR_BOX = "errorBox";
+    static final String WARNING_ENGINE_NOT_FOUND = "Warning engine not found";
+    static final String LINE_NO = "lineNo";
+    static final String MESSAGE = "message";
+    static final String NO_COMPILE_ERRORS = "No compile errors";
+    static final String HTML_DIV = "div";
+    static final String HTML_CLASS = "class";
+    static final String NO_TAINT_HISTORY_FOUND = "No taint history found";
+    static final String LINE = "line";
+    static final String TIMESTAMP = "timestamp";
+    static final String CHANGED_FILE = "changedFile";
+    static final String ERRORS_LABEL = "errorsLabel";
+    static final String WARNINGS_LABEL = "warningsLabel";
+    static final String ERRORS = "errors";
+    static final String WARNINGS = "warnings";
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistory.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistory.java
new file mode 100644
index 0000000..10d9049
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistory.java
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.components;
+
+import javax.el.ValueExpression;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+
+/**
+ * Component which allows to check which files
+ * have been marked as possibly modified in the recent history
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class TaintHistory extends UIOutput {
+
+    public static final int DEFAULT_NO_ENTRIES = 10;
+
+    Integer _noEntries;
+    String _filter;
+    private static final String RENDERER_TYPE = "org.apache.myfaces.extensions.scripting.components.TaintHistoryRenderer";
+    private static final String NO_ENTRIES = "noEntries";
+
+    public TaintHistory() {
+        setRendererType(RENDERER_TYPE);
+    }
+
+    @SuppressWarnings("unused")
+    public void setNoEntries(Integer entries) {
+        _noEntries = entries;
+    }
+
+    @Override
+    public Object saveState(FacesContext facesContext) {
+        Object values[] = new Object[3];
+        values[0] = super.saveState(facesContext);    //To change body of overridden methods use File | Settings | File Templates.
+        values[1] = _noEntries;
+        values[2] = _filter;
+        return values;
+    }
+
+    @Override
+    public void restoreState(FacesContext facesContext, Object state) {
+        Object[] values = (Object[]) state;
+        super.restoreState(facesContext, values[0]);
+        _noEntries = (Integer) values[1];
+        _filter = (String) values[2];
+    }
+
+    public Integer getNoEntries() {
+        if (_noEntries != null) {
+            return _noEntries;
+        }
+        ValueExpression vb = getValueExpression(NO_ENTRIES);
+        return vb != null ? ((Integer) vb.getValue(getFacesContext().getELContext())) : DEFAULT_NO_ENTRIES;
+    }
+
+    @SuppressWarnings("unused")
+    public void setFilter(String filter) {
+        _filter = filter;
+    }
+
+    @SuppressWarnings("unused")
+    public String getFilter() {
+        if (_filter != null) {
+            return _filter;
+        }
+        ValueExpression vb = getValueExpression(NO_ENTRIES);
+        return vb != null ? ((String) vb.getValue(getFacesContext().getELContext())) : null;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistoryRenderer.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistoryRenderer.java
new file mode 100644
index 0000000..fcfcbfe
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistoryRenderer.java
@@ -0,0 +1,94 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.components;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.util.Collection;
+
+/**
+ * A renderer which displays our taint history
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@SuppressWarnings("unchecked")
+//we have to suppress here because of the component cast
+public class TaintHistoryRenderer extends Renderer {
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        super.encodeBegin(context, component);
+
+        ResponseWriter responseWriter = FacesContext.getCurrentInstance().getResponseWriter();
+
+        startDiv(component, responseWriter, "historyBox");
+        int lastTainted = ((TaintHistory) component).getNoEntries();
+
+        Collection<ClassResource> result = WeavingContext.getInstance().getLastTainted(lastTainted);
+        if (result == null || result.isEmpty()) {
+            responseWriter.write(RendererConst.NO_TAINT_HISTORY_FOUND);
+        } else {
+            writeHistory(component, responseWriter, result);
+        }
+        endDiv(responseWriter);
+
+        responseWriter.flush();
+
+    }
+
+    private void writeHistory(UIComponent component, ResponseWriter responseWriter,
+                              Collection<ClassResource> result) throws IOException {
+        startDiv(component, responseWriter, "history");
+        for (ClassResource entry : result) {
+            startDiv(component, responseWriter, RendererConst.LINE);
+            writeDiv(component, responseWriter, RendererConst.TIMESTAMP, DateFormat.getInstance().format(entry.getFile().lastModified()));
+            writeDiv(component, responseWriter, RendererConst.CHANGED_FILE, entry.getFile().getAbsolutePath());
+            endDiv(responseWriter);
+        }
+
+        endDiv(responseWriter);
+    }
+
+    private String writeDiv(UIComponent component, ResponseWriter responseWriter, String styleClass, String value) throws IOException {
+        startDiv(component, responseWriter, styleClass);
+        responseWriter.write(value);
+        endDiv(responseWriter);
+        return "";
+    }
+
+    private void endDiv(ResponseWriter responseWriter) throws IOException {
+        responseWriter.endElement(RendererConst.HTML_DIV);
+    }
+
+    private void startDiv(UIComponent component, ResponseWriter responseWriter, String styleClass) throws IOException {
+        responseWriter.startElement(RendererConst.HTML_DIV, component);
+        responseWriter.writeAttribute(RendererConst.HTML_CLASS, styleClass, null);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingApplicationFactory.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingApplicationFactory.java
new file mode 100644
index 0000000..439d0c7
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingApplicationFactory.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.factories;
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations.ApplicationProxy;
+
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+
+/**
+ * Application factory which introduces
+ * scripting proxies for their artefacts
+ * <p/>
+ * We use a mix of AOP and helper constructs
+ * to reach the goal to be dynamic.
+ * For most artefacts we just need to
+ * check if the object is a Groovy object
+ * and then reload at their connection interfaces
+ * <p/>
+ * Some artefacts have a longer lifespan and/or are stateless
+ * for those we have to work with reloading AOP
+ *
+ * @author Werner Punz
+ */
+public class ScriptingApplicationFactory extends ApplicationFactory implements Decorated
+{
+
+    ApplicationFactory _delegate;
+
+
+    public ScriptingApplicationFactory(ApplicationFactory delegate) {
+        _delegate = delegate;
+
+    }
+
+    public Application getApplication() {
+        Application retVal = _delegate.getApplication();
+
+        if (WeavingContext.getInstance().isScriptingEnabled()  && !(retVal instanceof ApplicationProxy))
+            retVal = new ApplicationProxy(retVal);
+
+        return retVal;
+    }
+
+    public void setApplication(Application application) {
+        if (WeavingContext.getInstance().isScriptingEnabled() && !(application instanceof ApplicationProxy))
+            application = new ApplicationProxy(application);
+
+        _delegate.setApplication(application);
+    }
+
+    @Override
+    public ApplicationFactory getWrapped() {
+        return _delegate.getWrapped();
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingFacesContextFactory.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingFacesContextFactory.java
new file mode 100644
index 0000000..6cc84b6
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingFacesContextFactory.java
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.factories;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations.FacesContextProxy;
+
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.Lifecycle;
+
+/**
+ * Faces context weaver which builds
+ * our reloading proxy around the current faces context
+ *
+ * @author Werner Punz
+ */
+public class ScriptingFacesContextFactory extends FacesContextFactory implements Decorated
+{
+
+    public FacesContextFactory _delegate;
+
+    public ScriptingFacesContextFactory(FacesContextFactory delegate) {
+        _delegate = delegate;
+    }
+
+    public void setDelegate(FacesContextFactory delegate) {
+        _delegate = delegate;
+    }
+
+    public FacesContext getFacesContext(Object o, Object o1, Object o2, Lifecycle lifecycle) throws FacesException {
+        FacesContext retVal = _delegate.getFacesContext(o, o1, o2, lifecycle);
+
+        if (WeavingContext.getInstance().isScriptingEnabled()  && !(retVal instanceof FacesContextProxy))
+            return new FacesContextProxy(retVal);
+        return retVal;
+    }
+
+    @Override
+    public FacesContextFactory getWrapped() {
+        return _delegate.getWrapped();
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingLifecycleFactory.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingLifecycleFactory.java
new file mode 100644
index 0000000..becb94b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingLifecycleFactory.java
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.factories;
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations.LifefcycleProxy;
+
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+import java.util.Iterator;
+
+/**
+ * Lifecyclefactory which introduces scripting proxies
+ * for their artefacts
+ *
+ * @author Werner Punz
+ */
+public class ScriptingLifecycleFactory extends LifecycleFactory implements Decorated
+{
+
+    LifecycleFactory _delegate;
+
+
+    public ScriptingLifecycleFactory(LifecycleFactory delegate) {
+        _delegate = delegate;
+    }
+
+    public void addLifecycle(String s, Lifecycle lifecycle) {
+        if (WeavingContext.getInstance().isScriptingEnabled()  && !(lifecycle instanceof LifefcycleProxy))
+            lifecycle = new LifefcycleProxy(lifecycle);
+        _delegate.addLifecycle(s, lifecycle);
+    }
+
+    public Lifecycle getLifecycle(String s) {
+        Lifecycle retVal = _delegate.getLifecycle(s);
+        if (WeavingContext.getInstance().isScriptingEnabled()  && !(retVal instanceof LifefcycleProxy))
+            retVal = new LifefcycleProxy(retVal);
+
+        return retVal;
+    }
+
+    public Iterator getLifecycleIds() {
+        return _delegate.getLifecycleIds();
+    }
+
+    public void setDelegate(LifecycleFactory delegate) {
+        this._delegate = delegate;
+    }
+
+    @Override
+    public LifecycleFactory getWrapped() {
+        return _delegate.getWrapped();
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingRenderkitFactory.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingRenderkitFactory.java
new file mode 100644
index 0000000..5d70779
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/factories/ScriptingRenderkitFactory.java
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.factories;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations.RenderkitProxy;
+
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import java.util.Iterator;
+
+/**
+ * Scripting enabled renderkit factory
+ *
+ * @author Werner Punz
+ */
+public class ScriptingRenderkitFactory extends RenderKitFactory implements Decorated
+{
+
+
+    public ScriptingRenderkitFactory(RenderKitFactory delegate) {
+        _delegate = delegate;
+    }
+
+    public void addRenderKit(String s, RenderKit renderKit) {
+        if (WeavingContext.getInstance().isScriptingEnabled() && renderKit != null && !(renderKit instanceof RenderkitProxy))
+            renderKit = new RenderkitProxy(renderKit);
+
+        _delegate.addRenderKit(s, renderKit);
+    }
+
+    public RenderKit getRenderKit(FacesContext facesContext, String s) {
+        RenderKit retVal = _delegate.getRenderKit(facesContext, s);
+        if (WeavingContext.getInstance().isScriptingEnabled() && retVal != null && !(retVal instanceof RenderkitProxy))
+            retVal = new RenderkitProxy(retVal);
+        return retVal;
+    }
+
+    public Iterator getRenderKitIds() {
+        return _delegate.getRenderKitIds();
+    }
+
+    public void setDelegate(RenderKitFactory delegate) {
+        _delegate = delegate;
+    }
+
+    @Override
+    public RenderKitFactory getWrapped() {
+        return _delegate.getWrapped();
+    }
+
+    RenderKitFactory _delegate = null;
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ApplicationProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ApplicationProxy.java
new file mode 100644
index 0000000..1f7e6f8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ApplicationProxy.java
@@ -0,0 +1,982 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.el.ELContextListener;
+import javax.el.ELException;
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.application.NavigationHandler;
+import javax.faces.application.ProjectStage;
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.StateManager;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UIComponent;
+import javax.faces.component.behavior.Behavior;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.el.MethodBinding;
+import javax.faces.el.PropertyResolver;
+import javax.faces.el.ReferenceSyntaxException;
+import javax.faces.el.ValueBinding;
+import javax.faces.el.VariableResolver;
+import javax.faces.event.ActionListener;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.validator.Validator;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ARTIFACT_TYPE_ACTIONLISTENER;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ARTIFACT_TYPE_APPLICATION;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ARTIFACT_TYPE_BEHAVIOR;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ARTIFACT_TYPE_COMPONENT;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ARTIFACT_TYPE_CONVERTER;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ARTIFACT_TYPE_ELCONTEXTLISTENER;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ARTIFACT_TYPE_MANAGEDBEAN;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ARTIFACT_TYPE_VALIDATOR;
+
+/**
+ * @author Werner Punz
+ *         <p/>
+ *         our decorating applicstion
+ *         which should resolve our bean issues within a central
+ *         bean processing interceptor
+ */
+public class ApplicationProxy extends Application implements Decorated
+{
+
+    Application _delegate = null;
+
+    /*
+    * separate map needed for the behavior ids, because
+    * the original is immutable
+    * we have to do a double bookkeeping
+    * here
+    */
+    Map<String, String> _behaviors = new ConcurrentHashMap<String, String>();
+
+    /**
+     * special data structure to save our
+     * object -> proxy references
+     */
+    class EventHandlerProxyEntry
+    {
+        Class event;
+        Decorated proxy;
+
+        EventHandlerProxyEntry(Class event, Decorated proxy)
+        {
+            this.event = event;
+            this.proxy = proxy;
+        }
+
+        @SuppressWarnings("unused")
+        public Class getEvent()
+        {
+            return event;
+        }
+
+        @SuppressWarnings("unused")
+        public void setEvent(Class event)
+        {
+            this.event = event;
+        }
+
+        public Decorated getProxy()
+        {
+            return proxy;
+        }
+
+        @SuppressWarnings("unused")
+        public void setProxy(Decorated proxy)
+        {
+            this.proxy = proxy;
+        }
+
+        @Override
+        public boolean equals(Object o)
+        {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+
+            EventHandlerProxyEntry that = (EventHandlerProxyEntry) o;
+
+            return !(event != null ? !event.equals(that.event) : that.event != null) && !(proxy != null ? !proxy.getDelegate().getClass().getName().equals(that.proxy.getDelegate().getClass().getName()) : that.proxy != null);
+
+        }
+
+        @Override
+        public int hashCode()
+        {
+            int result = event.hashCode();
+            result = 31 * result + proxy.getDelegate().getClass().getName().hashCode();
+            return result;
+        }
+    }
+
+    /**
+     * now at the first look this looks like a weird construct
+     * but the standard java set imposes this limit since
+     * we have to iterate over the entire set to reach the correct element
+     * the trick is to save the same object in as both key and value
+     * and now if we generate a new key on an object
+     * we can fetch our proxy which might already contain
+     * the same object in a refreshed state from the value
+     * part of the set, in our case
+     * using hash maps should speed things up
+     * <p/>
+     * since we only have few write operations but access
+     * the map multithreaded we use concurrentHashMap here
+     */
+    Map<EventHandlerProxyEntry, EventHandlerProxyEntry> _eventHandlerIdx = new ConcurrentHashMap<EventHandlerProxyEntry, EventHandlerProxyEntry>();
+
+    volatile static boolean varResolverAdded = false;
+
+    ELResolverProxy finalResolver = null;
+
+    public ApplicationProxy(Application delegate)
+    {
+        _delegate = delegate;
+    }
+
+    public void addELResolver(ELResolver elResolver)
+    {
+        weaveDelegate();
+        //we do not need a proxy here anymore because
+        //we drop the beans directly
+        _delegate.addELResolver(elResolver);
+    }
+
+    private void weaveDelegate()
+    {
+        if (_delegate != null)
+        {
+            _delegate = (Application) WeavingContext.getInstance().reload(_delegate,
+                    ARTIFACT_TYPE_APPLICATION);
+        }
+    }
+
+    public ELResolver getELResolver()
+    {
+        weaveDelegate();
+
+        ELResolver retVal = _delegate.getELResolver();
+        return retVal;
+    }
+
+    //TOD add a weaving for resource bundles
+
+    public ResourceBundle getResourceBundle(FacesContext facesContext, String s) throws FacesException, NullPointerException
+    {
+        weaveDelegate();
+        return _delegate.getResourceBundle(facesContext, s);
+    }
+
+    public UIComponent createComponent(ValueExpression valueExpression, FacesContext facesContext, String componentType) throws FacesException, NullPointerException
+    {
+        weaveDelegate();
+        UIComponent component = _delegate.createComponent(valueExpression, facesContext, componentType);
+        UIComponent oldComponent = component;
+        //We can replace annotated components on the fly via
+        //ApplicationImpl.addComponent(final String componentType, final String componentClassName)
+
+        /*we are reweaving on the fly because we cannot be sure if
+        * the class is not recycled all the time in the creation
+        * code, in the renderer we do it on method base
+        * due to the fact that our renderers are recycled via
+        * a flyweight pattern
+        *
+        *
+        * Also we cannot proxy here because there is no UIComponent interface
+        * maybe in the long run we can make a decorator here instead
+        * but for now lets try it this way
+        */
+        component = (UIComponent) reloadInstance(component, ARTIFACT_TYPE_COMPONENT);
+
+        //we now have to check for an annotation change, but only in case a reload has happened
+        /*<> if (component.getClass().hashCode() != oldComponent.getClass().hashCode())
+        {
+            return handleAnnotationChange(component, valueExpression, facesContext, componentType);
+        } */
+
+        return component;
+
+    }
+
+    public ExpressionFactory getExpressionFactory()
+    {
+        weaveDelegate();
+        return _delegate.getExpressionFactory();
+    }
+
+    public void addELContextListener(ELContextListener elContextListener)
+    {
+        weaveDelegate();
+        if (WeavingContext.getInstance().isDynamic(elContextListener.getClass()))
+            elContextListener = (ELContextListener) WeavingContext.getInstance().createMethodReloadingProxyFromObject
+            (elContextListener, ELContextListener.class, ARTIFACT_TYPE_ELCONTEXTLISTENER);
+        _delegate.addELContextListener(elContextListener);
+    }
+
+    public void removeELContextListener(ELContextListener elContextListener)
+    {
+        weaveDelegate();
+        _delegate.removeELContextListener(elContextListener);
+    }
+
+    public ELContextListener[] getELContextListeners()
+    {
+        weaveDelegate();
+        return _delegate.getELContextListeners();
+    }
+
+    public ActionListener getActionListener()
+    {
+        weaveDelegate();
+        ActionListener retVal = _delegate.getActionListener();
+        if (WeavingContext.getInstance().isDynamic(retVal.getClass()))
+            retVal = (ActionListener) WeavingContext.getInstance().createMethodReloadingProxyFromObject(retVal,
+            ActionListener.class, ARTIFACT_TYPE_ACTIONLISTENER);
+        return retVal;
+    }
+
+    public void setActionListener(ActionListener actionListener)
+    {
+        weaveDelegate();
+        if (WeavingContext.getInstance().isDynamic(actionListener.getClass()))
+            actionListener = (ActionListener) WeavingContext.getInstance().createMethodReloadingProxyFromObject(actionListener,
+            ActionListener.class, ARTIFACT_TYPE_ACTIONLISTENER);
+        _delegate.setActionListener(actionListener);
+    }
+
+    public Locale getDefaultLocale()
+    {
+        weaveDelegate();
+        return _delegate.getDefaultLocale();
+    }
+
+    public void setDefaultLocale(Locale locale)
+    {
+        weaveDelegate();
+        _delegate.setDefaultLocale(locale);
+    }
+
+    public String getDefaultRenderKitId()
+    {
+        weaveDelegate();
+        return _delegate.getDefaultRenderKitId();
+    }
+
+    public void setDefaultRenderKitId(String s)
+    {
+        weaveDelegate();
+        _delegate.setDefaultRenderKitId(s);
+    }
+
+    public String getMessageBundle()
+    {
+        weaveDelegate();
+        return _delegate.getMessageBundle();
+    }
+
+    public void setMessageBundle(String s)
+    {
+        weaveDelegate();
+        _delegate.setMessageBundle(s);
+    }
+
+    public NavigationHandler getNavigationHandler()
+    {
+        weaveDelegate();
+        //defined in the setter to speed things up a little
+        NavigationHandler retVal = _delegate.getNavigationHandler();
+
+        //if (retVal != null && WeavingContext.isDynamic(retVal.getClass()))
+        //    retVal = new NavigationHandlerProxy(retVal);
+        return retVal;
+    }
+
+    public void setNavigationHandler(NavigationHandler navigationHandler)
+    {
+        weaveDelegate();
+
+        if (navigationHandler != null && WeavingContext.getInstance().isDynamic(navigationHandler.getClass()))
+            navigationHandler = new NavigationHandlerProxy(navigationHandler);
+        _delegate.setNavigationHandler(navigationHandler);
+    }
+
+    @SuppressWarnings("deprecation")
+    public PropertyResolver getPropertyResolver()
+    {
+        weaveDelegate();
+        return _delegate.getPropertyResolver();
+    }
+
+    @SuppressWarnings("deprecation")
+    public void setPropertyResolver(PropertyResolver propertyResolver)
+    {
+        weaveDelegate();
+        _delegate.setPropertyResolver(propertyResolver);
+    }
+
+    @SuppressWarnings("deprecation")
+    public VariableResolver getVariableResolver()
+    {
+        weaveDelegate();
+        return _delegate.getVariableResolver();
+    }
+
+    @SuppressWarnings("deprecation")
+    public void setVariableResolver(VariableResolver variableResolver)
+    {
+        weaveDelegate();
+        if (!varResolverAdded)
+        {
+            variableResolver = new VariableResolverProxy(variableResolver);
+            varResolverAdded = true;
+        }
+        _delegate.setVariableResolver(variableResolver);
+    }
+
+    public ViewHandler getViewHandler()
+    {
+        weaveDelegate();
+        ViewHandler handler = _delegate.getViewHandler();
+
+        /*
+        We proxy here to enable dynamic reloading for
+        methods in the long run, as soon as we hit
+        java all our groovy reloading code is lost
+        hence we have to work with proxies here
+        */
+        if (WeavingContext.getInstance().isDynamic(handler.getClass()))
+            handler = new ViewHandlerProxy(handler);
+        return handler;
+    }
+
+    public void setViewHandler(ViewHandler viewHandler)
+    {
+        weaveDelegate();
+        /*make sure you have the delegates as well in properties*/
+        if (WeavingContext.getInstance().isDynamic(viewHandler.getClass()))
+            viewHandler = new ViewHandlerProxy(viewHandler);
+
+        _delegate.setViewHandler(viewHandler);
+    }
+
+    public StateManager getStateManager()
+    {
+        weaveDelegate();
+        return _delegate.getStateManager();
+    }
+
+    public void setStateManager(StateManager stateManager)
+    {
+        weaveDelegate();
+        _delegate.setStateManager(stateManager);
+    }
+
+    public void addComponent(String componentType, String componentClass)
+    {
+        weaveDelegate();
+        _delegate.addComponent(componentType, componentClass);
+    }
+
+    public UIComponent createComponent(String componentType) throws FacesException
+    {
+        weaveDelegate();
+        //the components are generated anew very often
+        //we cannot do an on object weaving here
+        UIComponent oldComponent = _delegate.createComponent(componentType);
+
+        /*we are reweaving on the fly because we cannot be sure if
+        * the class is not recycled all the time in the creation
+        * code, in the renderer we do it on method base
+        * due to the fact that our renderers are recycled via
+        * a flyweight pattern*/
+        UIComponent component = (UIComponent) reloadInstance(oldComponent, ARTIFACT_TYPE_COMPONENT);
+
+        //we now have to check for an annotation change, but only in case a reload has happened
+        /*<> if (component.getClass().hashCode() != oldComponent.getClass().hashCode())
+        {
+            return handleAnnotationChange(component, componentType);
+        } */
+
+        return component;
+
+    }
+
+    @SuppressWarnings("deprecation")
+    public UIComponent createComponent(ValueBinding valueBinding, FacesContext facesContext, String componentType) throws FacesException
+    {
+        weaveDelegate();
+        UIComponent oldComponent = _delegate.createComponent(valueBinding, facesContext, componentType);
+
+        /*we are reweaving on the fly because we cannot be sure if
+         * the class is not recycled all the time in the creation
+         * code, in the renderer we do it on method base
+         * due to the fact that our renderers are recycled via
+         * a flyweight pattern*/
+        UIComponent component = (UIComponent) reloadInstance(oldComponent, ARTIFACT_TYPE_COMPONENT);
+
+        //we now have to check for an annotation change, but only in case a reload has happened
+        /*<>if (component.getClass().hashCode() != oldComponent.getClass().hashCode())
+        {
+            return handleAnnotationChange(component, valueBinding, facesContext, componentType);
+        }*/
+
+        return component;
+    }
+
+    public Iterator<String> getComponentTypes()
+    {
+        weaveDelegate();
+        return _delegate.getComponentTypes();
+    }
+
+    public void addConverter(String converterId, String converterClass)
+    {
+        weaveDelegate();
+        /* if (converterClass.equals(PurgedConverter.class.getName())) {
+            //purged case we do a full rescan
+            WeavingContext.getWeaver().fullClassScan();
+            Converter componentToChange = _delegate.createConverter(converterId);
+            if (componentToChange instanceof PurgedConverter) {
+                //Null not allowed here, but we set a purted converter to make
+                //sure that we get errors on the proper level
+                _delegate.addConverter(converterId, PurgedConverter.class.getName());
+            }
+            return;
+        }*/
+
+        _delegate.addConverter(converterId, converterClass);
+    }
+
+    public void addConverter(Class targetClass, String converterClass)
+    {
+        weaveDelegate();
+        _delegate.addConverter(targetClass, converterClass);
+    }
+
+    public Converter createConverter(String converterId)
+    {
+        weaveDelegate();
+        Converter retVal = _delegate.createConverter(converterId);
+
+        /**
+         * since createConverter is called only once
+         * we have to work with method reloading proxies
+         * we cannot use this technique extensively for speed reasons
+         * most of the time it is fine just to work with
+         *
+         * reloading objects at their interception points
+         */
+        Converter newRetVal = (Converter) reloadInstance(retVal, ARTIFACT_TYPE_CONVERTER);
+        if (newRetVal != retVal)
+        {
+            return _delegate.createConverter(converterId);
+        }
+
+        return retVal;
+    }
+
+    public Converter createConverter(Class aClass)
+    {
+        weaveDelegate();
+        Converter retVal = _delegate.createConverter(aClass);
+        Converter newRetVal = (Converter) reloadInstance(retVal, ARTIFACT_TYPE_CONVERTER);
+        if (newRetVal != retVal)
+        {
+            return _delegate.createConverter(aClass);
+        }
+
+        return retVal;
+    }
+
+    public Iterator<String> getConverterIds()
+    {
+        weaveDelegate();
+        return _delegate.getConverterIds();
+    }
+
+    public Iterator<Class<?>> getConverterTypes()
+    {
+        weaveDelegate();
+        return _delegate.getConverterTypes();
+    }
+
+    @SuppressWarnings("deprecation")
+    public MethodBinding createMethodBinding(String s, Class[] classes) throws ReferenceSyntaxException
+    {
+        weaveDelegate();
+        return _delegate.createMethodBinding(s, classes);
+    }
+
+    public Iterator<Locale> getSupportedLocales()
+    {
+        weaveDelegate();
+        return _delegate.getSupportedLocales();
+    }
+
+    public void setSupportedLocales(Collection<Locale> locales)
+    {
+        weaveDelegate();
+        _delegate.setSupportedLocales(locales);
+    }
+
+    public void addValidator(String validatorId, String validatorClass)
+    {
+        weaveDelegate();
+/*        if (validatorClass.equals(PurgedValidator.class.getName())) {
+            //purged case we do a full rescane
+            WeavingContext.getWeaver().fullClassScan();
+            Validator componentToChange = _delegate.createValidator(validatorId);
+            if (componentToChange instanceof PurgedValidator) {
+                //Null not allowed here, but we set a purted validator to make
+                //sure that we get errors on the proper level
+                _delegate.addValidator(validatorId, PurgedValidator.class.getName());
+
+            }
+            return;
+        } */
+        _delegate.addValidator(validatorId, validatorClass);
+    }
+
+    public Validator createValidator(String validatorId) throws FacesException
+    {
+        weaveDelegate();
+
+        Validator retVal = _delegate.createValidator(validatorId);
+
+        //the validators are recreated every request we do not have to deal with them on method level
+        Validator newRetVal = (Validator) reloadInstance(retVal, ARTIFACT_TYPE_VALIDATOR);
+        if (newRetVal != retVal)
+        {
+            _delegate.createValidator(validatorId);
+        }
+        return retVal;
+    }
+
+    public Iterator<String> getValidatorIds()
+    {
+        weaveDelegate();
+        return _delegate.getValidatorIds();
+    }
+
+    @SuppressWarnings("deprecation")
+    public ValueBinding createValueBinding(String s) throws ReferenceSyntaxException
+    {
+        weaveDelegate();
+        return _delegate.createValueBinding(s);
+    }
+
+
+  /*<> @Override  public void addBehavior(String behaviorId, String behaviorClass)
+    {
+        weaveDelegate();
+
+        if (behaviorClass.equals(PurgedValidator.class.getName()))
+        {
+            //purged case we do a full rescan
+            WeavingContext.getInstance().getWeaver().fullClassScan();
+            Behavior behavior = _delegate.createBehavior(behaviorId);
+            _behaviors.put(behaviorId, behaviorClass);
+            if (behavior instanceof PurgedBehavior)
+            {
+                //Null not allowed here, but we set a purged validator to make
+                //sure that we get errors on the proper level
+                _delegate.addBehavior(behaviorId, PurgedBehavior.class.getName());
+                _behaviors.remove(behaviorId);
+
+            }
+            return;
+        }
+
+        _delegate.addBehavior(behaviorId, behaviorClass);
+    } */
+
+    @Override
+    public void addDefaultValidatorId(String validatorId)
+    {
+        weaveDelegate();
+        _delegate.addDefaultValidatorId(validatorId);
+    }
+
+    @Override
+    public Behavior createBehavior(String behaviorId) throws FacesException
+    {
+        weaveDelegate();
+        Behavior retVal = _delegate.createBehavior(behaviorId);
+
+        //we might have casts here against one of the parents
+        //of this object
+        Behavior newBehavior = (Behavior) reloadInstance(retVal, ARTIFACT_TYPE_BEHAVIOR);
+        if (newBehavior != retVal)
+        {
+            return _delegate.createBehavior(behaviorId);
+        }
+
+        return retVal;
+    }
+
+    @Override
+    public UIComponent createComponent(FacesContext facesContext, Resource resource)
+    {
+        weaveDelegate();
+
+        UIComponent oldComponent = _delegate.createComponent(facesContext, resource);
+
+        /*we are reweaving on the fly because we cannot be sure if
+         * the class is not recycled all the time in the creation
+         * code, in the renderer we do it on method base
+         * due to the fact that our renderers are recycled via
+         * a flyweight pattern*/
+        UIComponent component = (UIComponent) reloadInstance(oldComponent, ARTIFACT_TYPE_COMPONENT);
+
+        //we now have to check for an annotation change, but only in case a reload has happened
+        /*<>if (component.getClass().hashCode() != oldComponent.getClass().hashCode())
+        {
+            return handleAnnotationChange(component, facesContext, resource);
+        }*/
+
+        return component;
+
+    }
+
+    @Override
+    public UIComponent createComponent(FacesContext facesContext, String componentType, String rendererType)
+    {
+        weaveDelegate();
+        UIComponent oldComponent = _delegate.createComponent(facesContext, componentType, rendererType);
+
+        /*we are reweaving on the fly because we cannot be sure if
+         * the class is not recycled all the time in the creation
+         * code, in the renderer we do it on method base
+         * due to the fact that our renderers are recycled via
+         * a flyweight pattern*/
+        UIComponent component = (UIComponent) reloadInstance(oldComponent, ARTIFACT_TYPE_COMPONENT);
+
+        //we now have to check for an annotation change, but only in case a reload has happened
+        /*<>if (component.getClass().hashCode() != oldComponent.getClass().hashCode())
+        {
+            return handleAnnotationChange(component, facesContext, componentType, rendererType);
+        } */
+
+        return component;
+    }
+
+    @Override
+    public UIComponent createComponent(ValueExpression valueExpression, FacesContext facesContext, String s, String s1)
+    {
+        weaveDelegate();
+        UIComponent oldComponent = _delegate.createComponent(valueExpression, facesContext, s, s1);
+
+        /*we are reweaving on the fly because we cannot be sure if
+     * the class is not recycled all the time in the creation
+     * code, in the renderer we do it on method base
+     * due to the fact that our renderers are recycled via
+     * a flyweight pattern*/
+        UIComponent component = (UIComponent) reloadInstance(oldComponent, ARTIFACT_TYPE_COMPONENT);
+
+        //we now have to check for an annotation change, but only in case a reload has happened
+        /*if (component.getClass().hashCode() != oldComponent.getClass().hashCode())
+        {
+            return handleAnnotationChange(component, valueExpression, facesContext, s, s1);
+        } <>*/
+
+        return component;
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public <T> T evaluateExpressionGet(FacesContext facesContext, String s, Class<? extends T> aClass) throws ELException
+    {
+        weaveDelegate();
+        //good place for a dynamic reloading check as well
+        T retVal = _delegate.evaluateExpressionGet(facesContext, s, aClass);
+        if (WeavingContext.getInstance().isDynamic(retVal.getClass()))
+            retVal = (T) WeavingContext.getInstance().reload(retVal, ARTIFACT_TYPE_MANAGEDBEAN);
+        return retVal;
+    }
+
+    @Override
+    public Iterator<String> getBehaviorIds()
+    {
+        weaveDelegate();
+        return _behaviors.keySet().iterator();
+        //return _delegate.getBehaviorIds();
+    }
+
+    @Override
+    public Map<String, String> getDefaultValidatorInfo()
+    {
+        weaveDelegate();
+        return _delegate.getDefaultValidatorInfo();
+    }
+
+    @Override
+    public ProjectStage getProjectStage()
+    {
+        weaveDelegate();
+        return _delegate.getProjectStage();
+    }
+
+    @Override
+    public ResourceHandler getResourceHandler()
+    {
+        weaveDelegate();
+        ResourceHandler retVal = _delegate.getResourceHandler();
+
+        /*if (WeavingContext.isDynamic(retVal.getClass())) {
+           ResourceHandler newHandler = (ResourceHandler) reloadInstance(retVal, ScriptingConst.ARTIFACT_TYPE_RESOURCEHANDLER);
+           if (newHandler != retVal) {
+               _delegate.setResourceHandler(newHandler);
+               return newHandler;
+           }
+       } */
+        return retVal;
+    }
+
+    @Override
+    public void publishEvent(FacesContext facesContext, Class<? extends SystemEvent> eventClass, Class<?> sourceBaseTye, Object source)
+    {
+        weaveDelegate();
+        _delegate.publishEvent(facesContext, eventClass, sourceBaseTye, source);
+    }
+
+    @Override
+    public void publishEvent(FacesContext facesContext, Class<? extends SystemEvent> eventClass, Object source)
+    {
+        weaveDelegate();
+        _delegate.publishEvent(facesContext, eventClass, source);
+    }
+
+    @Override
+    public void setResourceHandler(ResourceHandler resourceHandler)
+    {
+        weaveDelegate();
+        if (WeavingContext.getInstance().isDynamic(resourceHandler.getClass()))
+        {
+            ResourceHandler proxy = new ResourceHandlerProxy(resourceHandler);
+            resourceHandler = proxy;
+        }
+
+        _delegate.setResourceHandler(resourceHandler);
+        //ResourceHandler handler = _delegate.getResourceHandler();
+        //if (handler instanceof PurgedResourceHandler) {
+        //    WeavingContext.getWeaver().fullClassScan();
+        //}
+    }
+
+    @Override
+    public void subscribeToEvent(Class<? extends SystemEvent> eventClass, Class<?> aClass, SystemEventListener systemEventListener)
+    {
+        weaveDelegate();
+        systemEventListener = makeEventProxy(eventClass, systemEventListener);
+        _delegate.subscribeToEvent(eventClass, aClass, systemEventListener);
+    }
+
+    private SystemEventListener makeEventProxy(Class<? extends SystemEvent> eventClass, SystemEventListener systemEventListener)
+    {
+        if (WeavingContext.getInstance().isDynamic(systemEventListener.getClass()))
+        {
+            systemEventListener = new SystemEventListenerProxy(systemEventListener);
+            EventHandlerProxyEntry entry = new EventHandlerProxyEntry(eventClass, (Decorated) systemEventListener);
+            _eventHandlerIdx.put(entry, entry);
+        }
+        return systemEventListener;
+    }
+
+    @Override
+    public void subscribeToEvent(Class<? extends SystemEvent> eventClass, SystemEventListener systemEventListener)
+    {
+        weaveDelegate();
+        systemEventListener = makeEventProxy(eventClass, systemEventListener);
+        _delegate.subscribeToEvent(eventClass, systemEventListener);
+    }
+
+    @Override
+    public void unsubscribeFromEvent(Class<? extends SystemEvent> eventClass, Class<?> aClass, SystemEventListener systemEventListener)
+    {
+        weaveDelegate();
+        systemEventListener = resolveEventProxy(eventClass, systemEventListener);
+        _delegate.unsubscribeFromEvent(eventClass, aClass, systemEventListener);
+    }
+
+    private SystemEventListener resolveEventProxy(Class<? extends SystemEvent> eventClass, SystemEventListener systemEventListener)
+    {
+        if (WeavingContext.getInstance().isDynamic(systemEventListener.getClass()))
+        {
+            systemEventListener = new SystemEventListenerProxy(systemEventListener);
+            EventHandlerProxyEntry entry = new EventHandlerProxyEntry(eventClass, (Decorated) systemEventListener);
+            entry = _eventHandlerIdx.remove(entry);
+            if (entry != null)
+            {
+                systemEventListener = (SystemEventListener) entry.getProxy().getDelegate();
+            }
+        }
+        return systemEventListener;
+    }
+
+    @Override
+    public void unsubscribeFromEvent(Class<? extends SystemEvent> eventClass, SystemEventListener systemEventListener)
+    {
+        weaveDelegate();
+        systemEventListener = resolveEventProxy(eventClass, systemEventListener);
+        _delegate.unsubscribeFromEvent(eventClass, systemEventListener);
+    }
+
+    public Object getDelegate()
+    {
+        return _delegate;
+    }
+
+    private Object reloadInstance(Object instance, int artifactType)
+    {
+        if (instance == null)
+        {
+            return null;
+        }
+        if (WeavingContext.getInstance().isDynamic(instance.getClass()))
+        {
+            instance = WeavingContext.getInstance().reload(instance, artifactType);
+        }
+        return instance;
+    }
+
+   /* private boolean alreadyWovenInRequest(String clazz)
+    {
+        //portlets now can be enabled thanks to the jsf2 indirections regarding the external context
+        Map<String, Object> req = WeavingContext.getRequestMap();
+        if (req.get(SCRIPTING_REQUSINGLETON + clazz) == null)
+        {
+            req.put(SCRIPTING_REQUSINGLETON + clazz, "");
+            return false;
+        }
+        return true;
+    }*/
+
+   /*<> private UIComponent handleAnnotationChange(UIComponent oldComponent, ValueExpression valueExpression,
+                                                FacesContext facesContext, String componentType)
+    {
+        UIComponent componentToChange = _delegate.createComponent(valueExpression, facesContext, componentType);
+        if (componentToChange instanceof PurgedComponent)
+        {
+            WeavingContext.getWeaver().fullClassScan();
+            //via an additional create component we can check whether a purged component
+            //was registered after the reload because the annotation has been removed
+            componentToChange = _delegate.createComponent(valueExpression, facesContext, componentType);
+
+            return componentToChange;
+        }
+        return oldComponent;
+    }  */
+
+  /*<>  private UIComponent handleAnnotationChange(UIComponent oldComponent, String componentType)
+    {
+        UIComponent componentToChange = _delegate.createComponent(componentType);
+        if (componentToChange instanceof PurgedComponent)
+        {
+            WeavingContext.getWeaver().fullClassScan();
+            //via an additional create component we can check whether a purged component
+            //was registered after the reload because the annotation has been removed
+            componentToChange = _delegate.createComponent(componentType);
+
+            return componentToChange;
+        }
+        return oldComponent;
+    }*/
+
+
+   /*<>@SuppressWarnings("deprecation") private UIComponent handleAnnotationChange(UIComponent oldComponent, ValueBinding valueBinding,
+                                                FacesContext context, String componentType)
+    {
+        UIComponent componentToChange = _delegate.createComponent(valueBinding, context, componentType);
+        if (componentToChange instanceof PurgedComponent)
+        {
+            WeavingContext.getWeaver().fullClassScan();
+            //via an additional create component we can check whether a purged component
+            //was registered after the reload because the annotation has been removed
+            componentToChange = _delegate.createComponent(valueBinding, context, componentType);
+
+            return componentToChange;
+        }
+        return oldComponent;
+    } */
+
+   /*<> private UIComponent handleAnnotationChange(UIComponent oldComponent, FacesContext context, Resource resource)
+    {
+        UIComponent componentToChange = _delegate.createComponent(context, resource);
+        if (componentToChange instanceof PurgedComponent)
+        {
+            WeavingContext.getWeaver().fullClassScan();
+            //via an additional create component we can check whether a purged component
+            //was registered after the reload because the annotation has been removed
+            componentToChange = _delegate.createComponent(context, resource);
+
+            return componentToChange;
+        }
+        return oldComponent;
+    }
+
+    private UIComponent handleAnnotationChange(UIComponent oldComponent, FacesContext context, String componentType, String rendererType)
+    {
+        UIComponent componentToChange = _delegate.createComponent(context, componentType, rendererType);
+        if (componentToChange instanceof PurgedComponent)
+        {
+            WeavingContext.getWeaver().fullClassScan();
+            //via an additional create component we can check whether a purged component
+            //was registered after the reload because the annotation has been removed
+            componentToChange = _delegate.createComponent(context, componentType, rendererType);
+
+            return componentToChange;
+        }
+        return oldComponent;
+    }
+
+    private UIComponent handleAnnotationChange(UIComponent oldComponent, ValueExpression valueExpression, FacesContext facesContext, String s, String s1)
+    {
+        UIComponent componentToChange = _delegate.createComponent(valueExpression, facesContext, s, s1);
+        if (componentToChange instanceof PurgedComponent)
+        {
+            WeavingContext.getWeaver().fullClassScan();
+
+            //via an additional create component we can check whether a purged component
+            //was registered after the reload because the annotation has been removed
+
+            componentToChange = _delegate.createComponent(valueExpression, facesContext, s, s1);
+
+            return componentToChange;
+        }
+        return oldComponent;
+    } */
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ELResolverProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ELResolverProxy.java
new file mode 100644
index 0000000..cebd30e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ELResolverProxy.java
@@ -0,0 +1,129 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.ELResolver;
+import javax.faces.context.FacesContext;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.util.Iterator;
+import java.util.logging.Logger;
+
+/**
+ * EL Resolver which is scripting enabled
+ *
+ * @author Werner Punz
+ *
+ * TODO not needed anymore because we drop the beans at request start directly which are tainted...
+ * they get reloaded because they are dropped entirely from the scope
+ * 
+ * The compile and load happens on classloader level
+ * @deprecated
+ */
+public class ELResolverProxy extends ELResolver implements Decorated
+{
+
+    Logger log = Logger.getLogger(ELResolverProxy.class.getName());
+    ELResolver _delegate = null;
+
+   // static ThreadLocal<Boolean> _getValue = new ThreadLocal<Boolean>();
+
+    public Object getValue(ELContext elContext, final Object base, final Object property) throws NullPointerException, ELException {
+
+        Object retVal = _delegate.getValue(elContext, base, property);
+
+      /*  Object newRetVal;
+        if (retVal != null && WeavingContext.getInstance().isDynamic(retVal.getClass())) {
+
+            newRetVal = WeavingContext.getInstance().getWeaver().reloadScriptingInstance(retVal, ScriptingConst.ARTIFACT_TYPE_MANAGEDBEAN);
+
+            if (newRetVal != retVal) {
+                setValue(elContext, base, property, newRetVal);
+            }
+
+            return newRetVal;
+
+        }*/
+
+        return retVal;
+    }
+
+
+
+
+    public Class<?> getType(ELContext elContext, Object o, Object o1) throws NullPointerException, ELException {
+        Class<?> retVal = _delegate.getType(elContext, o, o1);
+        if (retVal != null && WeavingContext.getInstance().isDynamic(retVal)) {
+            return WeavingContext.getInstance().reload(retVal);
+        }
+        return retVal;
+    }
+
+    public void setValue(ELContext elContext, Object base, Object property, Object value) throws NullPointerException, ELException {
+        //now to more complex relations...
+        //TODO add dependency
+        if (base != null && WeavingContext.getInstance().isDynamic(base.getClass()) && WeavingContext.getInstance().isDynamic(value.getClass())) {
+            WeavingContext.getInstance().addDependency(ScriptingConst.ENGINE_TYPE_JSF_ALL, base.getClass().getName(),
+                    value.getClass().getName());
+        }
+        _delegate.setValue(elContext, base, property, value);
+    }
+
+    public boolean isReadOnly(ELContext elContext, Object o, Object o1) throws NullPointerException, ELException {
+        return _delegate.isReadOnly(elContext, o, o1);
+    }
+
+    public Iterator getFeatureDescriptors(ELContext elContext, Object o) {
+        return _delegate.getFeatureDescriptors(elContext, o);
+    }
+
+    public Class<?> getCommonPropertyType(ELContext elContext, Object o) {
+        return _delegate.getCommonPropertyType(elContext, o);
+    }
+
+
+    public ELResolverProxy() {
+        _delegate = FacesContext.getCurrentInstance().getELContext().getELResolver();
+    }
+
+    public ELResolverProxy(ELResolver delegate) {
+        _delegate = delegate;
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+
+
+   private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
+   {
+     // our "pseudo-constructor"
+     in.defaultReadObject();
+     log = Logger.getLogger(ELResolverProxy.class.getName());
+
+   }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/FacesContextProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/FacesContextProxy.java
new file mode 100644
index 0000000..ea3c882
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/FacesContextProxy.java
@@ -0,0 +1,225 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.el.ELContext;
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExceptionHandler;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.PartialViewContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.PhaseId;
+import javax.faces.render.RenderKit;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A reloading, weaving  faces context
+ * this is needed because groovy fails on
+ * the introspection of the standard java myfaces
+ * faces context due to pending references
+ * of the _impl into the portlet context
+ * not sure if this works in portlets
+ * though
+ *
+ * @author Werner Punz
+ */
+public class FacesContextProxy extends FacesContext implements Decorated
+{
+
+    public FacesContext _delegate = null;
+
+    private void weaveDelegate() {
+        //in case of a context destroyed the weaver might be accessed a last time
+        //but is already null due to having no weaver in the shutdown thread
+        if (_delegate != null && WeavingContext.getInstance().isScriptingEnabled())
+            _delegate = (FacesContext) WeavingContext.getInstance().reload(_delegate,
+                    ScriptingConst.ARTIFACT_TYPE_FACESCONTEXT);
+    }
+
+    public ELContext getELContext() {
+        return _delegate.getELContext();
+    }
+
+    public Application getApplication() {
+        return _delegate.getApplication();
+    }
+
+    public Iterator<String> getClientIdsWithMessages() {
+        return _delegate.getClientIdsWithMessages();
+    }
+
+    public ExternalContext getExternalContext() {
+        return _delegate.getExternalContext();
+    }
+
+    public FacesMessage.Severity getMaximumSeverity() {
+        return _delegate.getMaximumSeverity();
+    }
+
+    public Iterator<FacesMessage> getMessages() {
+        return _delegate.getMessages();
+    }
+
+    public Iterator<FacesMessage> getMessages(String s) {
+        return _delegate.getMessages(s);
+    }
+
+    public RenderKit getRenderKit() {
+        return _delegate.getRenderKit();
+    }
+
+    public boolean getRenderResponse() {
+        return _delegate.getRenderResponse();
+    }
+
+    public boolean getResponseComplete() {
+        return _delegate.getResponseComplete();
+    }
+
+    public ResponseStream getResponseStream() {
+        return _delegate.getResponseStream();
+    }
+
+    public void setResponseStream(ResponseStream responseStream) {
+        _delegate.setResponseStream(responseStream);
+    }
+
+    public ResponseWriter getResponseWriter() {
+        return _delegate.getResponseWriter();
+    }
+
+    public void setResponseWriter(ResponseWriter responseWriter) {
+        _delegate.setResponseWriter(responseWriter);
+    }
+
+    public UIViewRoot getViewRoot() {
+        return _delegate.getViewRoot();
+    }
+
+    public void setViewRoot(UIViewRoot uiViewRoot) {
+        weaveDelegate();//perfect place no matter what the viewRoot is about once per request set
+        _delegate.setViewRoot(uiViewRoot);
+    }
+
+    public void addMessage(String s, FacesMessage facesMessage) {
+        _delegate.addMessage(s, facesMessage);
+    }
+
+    public void release() {
+        _delegate.release();
+    }
+
+    public void renderResponse() {
+        _delegate.renderResponse();
+    }
+
+    public void responseComplete() {
+        _delegate.responseComplete();
+    }
+
+    public FacesContextProxy(FacesContext delegate) {
+        _delegate = delegate;
+        weaveDelegate();
+    }
+
+    @Override
+    public Map<Object, Object> getAttributes() {
+        return _delegate.getAttributes();
+    }
+
+    @Override
+    public PhaseId getCurrentPhaseId() {
+        return _delegate.getCurrentPhaseId();
+    }
+
+    @Override
+    public ExceptionHandler getExceptionHandler() {
+        return _delegate.getExceptionHandler();
+    }
+
+    @Override
+    public List<FacesMessage> getMessageList() {
+        return _delegate.getMessageList();
+    }
+
+    @Override
+    public List<FacesMessage> getMessageList(String s) {
+        return _delegate.getMessageList(s);
+    }
+
+    @Override
+    public PartialViewContext getPartialViewContext() {
+        return _delegate.getPartialViewContext();
+    }
+
+    @Override
+    public boolean isValidationFailed() {
+        return _delegate.isValidationFailed();
+    }
+
+    @Override
+    public boolean isPostback() {
+        return _delegate.isPostback();
+    }
+
+    @Override
+    public boolean isProcessingEvents() {
+        return _delegate.isProcessingEvents();
+    }
+
+    @Override
+    public void setCurrentPhaseId(PhaseId phaseId) {
+        _delegate.setCurrentPhaseId(phaseId);
+    }
+
+    @Override
+    public void setExceptionHandler(ExceptionHandler exceptionHandler) {
+        _delegate.setExceptionHandler(exceptionHandler);
+    }
+
+    @Override
+    public void setProcessingEvents(boolean b) {
+        _delegate.setProcessingEvents(b);
+    }
+
+    @Override
+    public void validationFailed() {
+        _delegate.validationFailed();
+    }
+
+    @Override
+    public boolean isProjectStage(ProjectStage projectStage) {
+        return _delegate.isProjectStage(projectStage);
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/LifefcycleProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/LifefcycleProxy.java
new file mode 100644
index 0000000..a250cf5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/LifefcycleProxy.java
@@ -0,0 +1,84 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseListener;
+import javax.faces.lifecycle.Lifecycle;
+
+/**
+ * Scripting enabled lifecycle
+ *
+ * @author Werner Punz
+ */
+public class LifefcycleProxy extends Lifecycle implements Decorated
+{
+
+    Lifecycle _delegate = null;
+
+    private void weaveDelegate() {
+        if (_delegate != null)
+            _delegate = (Lifecycle) WeavingContext.getInstance().reload(_delegate,
+                    ScriptingConst.ARTIFACT_TYPE_LIFECYCLE);
+    }
+
+    public LifefcycleProxy(Lifecycle delegate) {
+        _delegate = delegate;
+    }
+
+    public void addPhaseListener(PhaseListener phaseListener) {
+        weaveDelegate();
+        /*we can put our object weaving code into the add here*/
+        if (WeavingContext.getInstance().isDynamic(phaseListener.getClass()))
+            phaseListener = (PhaseListener) WeavingContext.getInstance().createMethodReloadingProxyFromObject(phaseListener,
+                PhaseListener.class, ScriptingConst.ARTIFACT_TYPE_PHASELISTENER);
+
+        _delegate.addPhaseListener(phaseListener);
+    }
+
+    public void execute(FacesContext facesContext) throws FacesException {
+        weaveDelegate();
+        _delegate.execute(facesContext);
+    }
+
+    public PhaseListener[] getPhaseListeners() {
+        weaveDelegate();
+        return _delegate.getPhaseListeners();
+    }
+
+    public void removePhaseListener(PhaseListener phaseListener) {
+        weaveDelegate();
+        _delegate.removePhaseListener(phaseListener);
+    }
+
+    public void render(FacesContext facesContext) throws FacesException {
+        weaveDelegate();
+        _delegate.render(facesContext);
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/NavigationHandlerProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/NavigationHandlerProxy.java
new file mode 100644
index 0000000..0216e95
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/NavigationHandlerProxy.java
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.faces.application.NavigationHandler;
+import javax.faces.context.FacesContext;
+
+/**
+ * A reloading navigation handler
+ *
+ * @author Werner Punz
+ */
+public class NavigationHandlerProxy extends NavigationHandler implements Decorated
+{
+
+    NavigationHandler _delegate;
+
+    private void weaveDelegate() {
+        _delegate = (NavigationHandler) WeavingContext.getInstance().reload(_delegate,
+                ScriptingConst.ARTIFACT_TYPE_NAVIGATIONHANDLER);
+    }
+
+    public NavigationHandlerProxy(NavigationHandler delegate) {
+        super();
+        _delegate = delegate;
+    }
+
+    public void handleNavigation(FacesContext facesContext, String s, String s1) {
+        weaveDelegate();
+        _delegate.handleNavigation(facesContext, s, s1);
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/RenderkitProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/RenderkitProxy.java
new file mode 100644
index 0000000..eab6783
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/RenderkitProxy.java
@@ -0,0 +1,254 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.ClientBehaviorRenderer;
+import javax.faces.render.RenderKit;
+import javax.faces.render.Renderer;
+import javax.faces.render.ResponseStateManager;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.Iterator;
+
+/**
+ * Weaving renderkit which
+ * acts as a proxy factory for
+ * our internal reloading referers
+ *
+ * @author Werner Punz
+ */
+public class RenderkitProxy extends RenderKit implements Decorated
+{
+
+    RenderKit _delegate = null;
+
+    public RenderkitProxy(RenderKit delegate)
+    {
+        _delegate = delegate;
+    }
+
+    public void addRenderer(String componentFamily, String rendererType, Renderer renderer)
+    {
+        weaveDelegate();
+        //wo do it brute force here because we have sometimes casts and hence cannot rely on proxies
+        //renderers itself are flyweight patterns which means they are shared over objects
+        renderer = (Renderer) reloadInstance(renderer, ScriptingConst.ARTIFACT_TYPE_RENDERER);
+
+        _delegate.addRenderer(componentFamily, rendererType, renderer);
+    }
+
+    /**
+     * unproxy renderer from different systems
+     *
+     * @return
+     */
+    private Renderer unproxy(Renderer proxiedObject)
+    {
+        Renderer oldProxiedObject = proxiedObject;
+        try
+        {
+            //extval
+
+            String name = proxiedObject.getClass().getName();
+            while (name.contains("ExtVal") && (name.contains("Wrapper") || name.contains("Proxy")))
+            {
+                proxiedObject = (Renderer) ReflectUtil.getField(proxiedObject,
+                        "wrapped", true);
+                name = proxiedObject.getClass().getName();
+            }
+
+            // "getWrapped");
+        }
+        catch (RuntimeException e)
+        {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+
+        return proxiedObject;
+    }
+
+    private Renderer applyToProxy(Renderer proxy, Renderer toBeProxied)
+    {
+        Renderer oldProxiedObject = proxy;
+        try
+        {
+            //extval
+
+            String name = proxy.getClass().getName();
+            while (name.contains("ExtVal") && (name.contains("Wrapper") || name.contains("Proxy")))
+            {
+                oldProxiedObject = proxy;
+                proxy = (Renderer) ReflectUtil.getField(proxy, "wrapped", true); //(Renderer) proxiedField.get(proxy);
+                name = proxy.getClass().getName();
+                if (!name.contains("ExtVal") && !(name.contains("Wrapper") || name.contains("Proxy")))
+                {
+                    ReflectUtil.setField(oldProxiedObject, "wrapped", proxy, true);
+                    return proxy;
+                }
+            }
+        }
+        catch (RuntimeException e)
+        {
+            e.printStackTrace();
+        }
+        return toBeProxied;
+    }
+
+    public Renderer getRenderer(String componentFamily, String rendererType)
+    {
+        weaveDelegate();
+        Renderer rendr = _delegate.getRenderer(componentFamily, rendererType);
+        Renderer unproxiedRendr = unproxy(rendr);
+
+        //TODO extval proxy handling here
+        Renderer rendr2 = (Renderer) reloadInstance(unproxiedRendr, ScriptingConst.ARTIFACT_TYPE_RENDERER);
+        if (unproxiedRendr != rendr2)
+        {
+            Renderer tempRenderer = _delegate.getRenderer(componentFamily, rendererType);
+            //in case of a renderer proxy we have to weave the original object back in
+            rendr2 = applyToProxy(rendr, rendr2);
+            _delegate.addRenderer(componentFamily, rendererType, rendr2);
+            return rendr2;
+        }
+        return rendr;
+    }
+
+    private ClientBehaviorRenderer handleAnnotationChangeBehaviorRenderer(String s)
+    {
+        ClientBehaviorRenderer rendr2;
+
+        rendr2 = _delegate.getClientBehaviorRenderer(s);
+        /*<>if (rendr2 instanceof PurgedClientBehaviorRenderer) {
+            throw new FacesException("Renderer not found");
+        } */
+        rendr2 = _delegate.getClientBehaviorRenderer(s);
+        return rendr2;
+    }
+
+    private Renderer handleAnnotationChange(String s, String s1)
+    {
+        Renderer rendr2;
+
+        //WeavingContext.getWeaver().fullClassScan();
+        rendr2 = _delegate.getRenderer(s, s1);
+        /*<>if (rendr2 instanceof PurgedRenderer) {
+            throw new FacesException("Renderer not found");
+        }*/
+        rendr2 = _delegate.getRenderer(s, s1);
+        return rendr2;
+    }
+
+    public ResponseStateManager getResponseStateManager()
+    {
+        weaveDelegate();
+        return _delegate.getResponseStateManager();
+    }
+
+    public ResponseWriter createResponseWriter(Writer writer, String s, String s1)
+    {
+        weaveDelegate();
+        return (ResponseWriter) reloadInstance(_delegate.createResponseWriter(writer, s, s1), ScriptingConst.ARTIFACT_TYPE_RESPONSEWRITER);
+    }
+
+    public ResponseStream createResponseStream(OutputStream outputStream)
+    {
+        weaveDelegate();
+        return (ResponseStream) reloadInstance(_delegate.createResponseStream(outputStream), ScriptingConst.ARTIFACT_TYPE_RESPONSESTREAM);
+    }
+
+    @Override
+    public void addClientBehaviorRenderer(String s, ClientBehaviorRenderer renderer)
+    {
+
+        weaveDelegate();
+        renderer = (ClientBehaviorRenderer) reloadInstance(renderer, ScriptingConst.ARTIFACT_TYPE_CLIENTBEHAVIORRENDERER);
+        _delegate.addClientBehaviorRenderer(s, renderer);
+    }
+
+    @Override
+    public ClientBehaviorRenderer getClientBehaviorRenderer(String s)
+    {
+        weaveDelegate();
+        ClientBehaviorRenderer rendr = _delegate.getClientBehaviorRenderer(s);
+        ClientBehaviorRenderer rendr2 = (ClientBehaviorRenderer) reloadInstance(rendr, ScriptingConst.ARTIFACT_TYPE_CLIENTBEHAVIORRENDERER);
+        if (rendr != rendr2)
+        {
+
+            rendr2 = _delegate.getClientBehaviorRenderer(s);
+            /*<>if (rendr2 instanceof PurgedClientBehaviorRenderer) {
+                return handleAnnotationChangeBehaviorRenderer(s);
+            }*/
+            return rendr2;
+        }
+        return rendr;
+    }
+
+    @Override
+    public Iterator<String> getClientBehaviorRendererTypes()
+    {
+        weaveDelegate();
+        return _delegate.getClientBehaviorRendererTypes();
+    }
+
+    @Override
+    public Iterator<String> getComponentFamilies()
+    {
+        weaveDelegate();
+        return _delegate.getComponentFamilies();
+    }
+
+    @Override
+    public Iterator<String> getRendererTypes(String s)
+    {
+        weaveDelegate();
+        return _delegate.getRendererTypes(s);
+    }
+
+    public Object getDelegate()
+    {
+        return _delegate;
+    }
+
+    private void weaveDelegate()
+    {
+        _delegate = (RenderKit) WeavingContext.getInstance().reload(_delegate, ScriptingConst.ARTIFACT_TYPE_RENDERKIT);
+    }
+
+    private Object reloadInstance(Object instance, int artefactType)
+    {
+        if (instance == null)
+        {
+            return null;
+        }
+        if (WeavingContext.getInstance().isDynamic(instance.getClass()))
+        {
+            instance = WeavingContext.getInstance().reload(instance, artefactType);
+            //now the add should be done properly if possible
+        }
+        return instance;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ResourceHandlerProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ResourceHandlerProxy.java
new file mode 100644
index 0000000..02c8787
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ResourceHandlerProxy.java
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * Problem the resource request is issued on servlet level before
+ * our compile triggers can trigger from the phase listener
+ * this is evil
+ *
+ * We probably have to reissue the compile from the resource handler
+ * directly upfront :-( or mark the resource handler as something like double tainted!
+ *
+ * This problem will resolve itself with async compile
+ *
+ */
+
+public class ResourceHandlerProxy extends ResourceHandler {
+    private ResourceHandler _delegate;
+
+    public ResourceHandlerProxy(ResourceHandler delegate) {
+        _delegate = delegate;
+    }
+
+    public Resource createResource(String resourceName) {
+        weaveDelegate();
+        return _delegate.createResource(resourceName);
+    }
+
+    public Resource createResource(String resourceName, String libraryName) {
+        weaveDelegate();
+        return _delegate.createResource(resourceName, libraryName);
+    }
+
+    public Resource createResource(String resourceName, String libraryName, String contentType) {
+        weaveDelegate();
+        return _delegate.createResource(resourceName, libraryName, contentType);
+    }
+
+    public String getRendererTypeForResourceName(String resourceName) {
+        weaveDelegate();
+        return _delegate.getRendererTypeForResourceName(resourceName);
+    }
+
+    public void handleResourceRequest(FacesContext context) throws java.io.IOException {
+        weaveDelegate();
+        _delegate.handleResourceRequest(context);
+    }
+    
+    public boolean isResourceRequest(FacesContext context) {
+        weaveDelegate();
+        return _delegate.isResourceRequest(context);
+    }
+
+    public boolean libraryExists(String libraryName) {
+        weaveDelegate();
+        return _delegate.libraryExists(libraryName);
+    }
+
+    private final void weaveDelegate() {
+        _delegate = (ResourceHandler) WeavingContext.getInstance().reload(_delegate,
+                ScriptingConst.ARTIFACT_TYPE_RESOURCEHANDLER);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/SystemEventListenerProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/SystemEventListenerProxy.java
new file mode 100644
index 0000000..08f7ebb
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/SystemEventListenerProxy.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+/**
+ * a method level reloading proxy class
+ * we do not use auto proxies here because
+ * this class needs special treatment
+ * over our decorated interface
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class SystemEventListenerProxy implements Decorated, SystemEventListener {
+
+    SystemEventListener _delegate;
+
+    public SystemEventListenerProxy(SystemEventListener delegate) {
+        _delegate = delegate;
+    }
+
+    public boolean isListenerForSource(Object source) {
+        weaveDelegate();
+        return _delegate.isListenerForSource(source);
+    }
+
+    public void processEvent(SystemEvent event) {
+        weaveDelegate();
+        _delegate.processEvent(event);
+    }
+
+    @Override
+    public Object getDelegate() {
+        return _delegate;
+    }
+
+    private void weaveDelegate() {
+        //TODO (1.1) add a speed optimization here by pushing something in the request map
+        if (_delegate != null) {
+            _delegate = (SystemEventListener) WeavingContext.getInstance().reload(_delegate,
+                    ScriptingConst.ARTIFACT_TYPE_SYSTEMEVENTLISTENER);
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/VariableResolverProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/VariableResolverProxy.java
new file mode 100644
index 0000000..a6a4ff4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/VariableResolverProxy.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.VariableResolver;
+
+/**
+ * objects loaded must
+ * be checked if a reloading is needed
+ *
+ * @author Werner Punz
+ */
+@SuppressWarnings("deprecation") //we must suppress it here
+public class VariableResolverProxy extends VariableResolver implements Decorated
+{
+    VariableResolver _delegate;
+
+    public VariableResolverProxy(VariableResolver delegate) {
+        _delegate = delegate;
+    }
+
+    public Object resolveVariable(FacesContext facesContext, String s) throws EvaluationException {
+        Object variable = _delegate.resolveVariable(facesContext, s);
+        if (variable != null && WeavingContext.getInstance().isDynamic(variable.getClass()))
+            variable = WeavingContext.getInstance().reload(variable, ScriptingConst.ARTIFACT_TYPE_MANAGEDBEAN);
+        return variable;
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ViewHandlerProxy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ViewHandlerProxy.java
new file mode 100644
index 0000000..559e704
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicDecorators/implementations/ViewHandlerProxy.java
@@ -0,0 +1,134 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.dynamicDecorators.implementations;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.faces.FacesException;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewDeclarationLanguage;
+import java.io.IOException;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Scripting enabled View Handler
+ *
+ * @author Werner Punz
+ */
+public class ViewHandlerProxy extends ViewHandler implements Decorated
+{
+
+    ViewHandler _delegate = null;
+
+    private void weaveDelegate() {
+        if (_delegate != null) {
+            _delegate = (ViewHandler) WeavingContext.getInstance().reload(_delegate,
+                    ScriptingConst.ARTIFACT_TYPE_VIEWHANDLER);
+        }
+    }
+
+    public ViewHandlerProxy(ViewHandler delegate) {
+        _delegate = delegate;
+    }
+
+    public String calculateCharacterEncoding(FacesContext facesContext) {
+        weaveDelegate();
+        return _delegate.calculateCharacterEncoding(facesContext);
+    }
+
+    public Locale calculateLocale(FacesContext facesContext) {
+        weaveDelegate();
+        return _delegate.calculateLocale(facesContext);
+    }
+
+    public String calculateRenderKitId(FacesContext facesContext) {
+        weaveDelegate();
+        return _delegate.calculateRenderKitId(facesContext);
+    }
+
+    public UIViewRoot createView(FacesContext facesContext, String s) {
+        weaveDelegate();
+        return _delegate.createView(facesContext, s);
+    }
+
+    public String getActionURL(FacesContext facesContext, String s) {
+        weaveDelegate();
+        return _delegate.getActionURL(facesContext, s);
+    }
+
+    public String getResourceURL(FacesContext facesContext, String s) {
+        weaveDelegate();
+        return _delegate.getResourceURL(facesContext, s);
+    }
+
+    public void initView(FacesContext facesContext) throws FacesException {
+        weaveDelegate();
+        _delegate.initView(facesContext);
+    }
+
+    public void renderView(FacesContext facesContext, UIViewRoot uiViewRoot) throws IOException, FacesException {
+        weaveDelegate();
+        _delegate.renderView(facesContext, uiViewRoot);
+    }
+
+    public UIViewRoot restoreView(FacesContext facesContext, String s) {
+        weaveDelegate();
+        return _delegate.restoreView(facesContext, s);
+    }
+
+    public void writeState(FacesContext facesContext) throws IOException {
+        weaveDelegate();
+        _delegate.writeState(facesContext);
+    }
+
+
+    @Override
+    public String deriveViewId(FacesContext facesContext, String s) {
+        weaveDelegate();
+        return _delegate.deriveViewId(facesContext, s);
+    }
+
+    @Override
+    public String getBookmarkableURL(FacesContext facesContext, String s, Map<String, List<String>> stringListMap, boolean b) {
+        return super.getBookmarkableURL(facesContext, s, stringListMap, b);
+    }
+
+    @Override
+    public ViewDeclarationLanguage getViewDeclarationLanguage(FacesContext facesContext, String s) {
+        weaveDelegate();
+        return _delegate.getViewDeclarationLanguage(facesContext, s);
+    }
+
+    @Override
+    public String getRedirectURL(FacesContext facesContext, String s, Map<String, List<String>> stringListMap, boolean b) {
+        weaveDelegate();
+        return _delegate.getRedirectURL(facesContext, s, stringListMap, b);
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/MyFacesReroutingResourceResolver.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/MyFacesReroutingResourceResolver.java
new file mode 100644
index 0000000..9277681
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/MyFacesReroutingResourceResolver.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.facelet;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.view.facelets.impl.DefaultResourceResolver;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * decorated Facelet resource resolver to reroute
+ * the resource requests to our source path if possible
+ */
+public class MyFacesReroutingResourceResolver extends DefaultResourceResolver
+{
+
+    DefaultResourceResolver _delegate = new DefaultResourceResolver();
+    volatile boolean _initiated = false;
+    List<String> _resourceDirs = null;
+
+    Logger log = Logger.getLogger(this.getClass().getName());
+
+    @Override
+    public URL resolveUrl(String path) {
+
+        if (!_initiated) {
+            _resourceDirs = WeavingContext.getInstance().getConfiguration().getResourceDirs();
+            _initiated = true;
+        }
+
+        if (_resourceDirs != null && !_resourceDirs.isEmpty()) {
+            for (String resourceDir : _resourceDirs) {
+                File resource = new File(resourceDir + path);
+                if (resource.exists()) try {
+                    return resource.toURI().toURL();
+                } catch (MalformedURLException e) {
+                    log.log(Level.SEVERE, "",e);
+                }
+            }
+        }
+
+        return _delegate.resolveUrl(path);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingBehaviorTagHandlerDelegate.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingBehaviorTagHandlerDelegate.java
new file mode 100644
index 0000000..9d724b3
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingBehaviorTagHandlerDelegate.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.facelet;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.view.facelets.tag.jsf.BehaviorTagHandlerDelegate;
+
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.BehaviorHandler;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRuleset;
+import javax.faces.view.facelets.TagHandlerDelegate;
+import java.io.IOException;
+
+/**
+ * Behavior Tag Handler which introduces reloading behavior
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ReloadingBehaviorTagHandlerDelegate extends TagHandlerDelegate {
+
+    BehaviorHandler _owner;
+    TagHandlerDelegate _delegate;
+
+    public ReloadingBehaviorTagHandlerDelegate(BehaviorHandler owner) {
+        applyOwner(owner);
+    }
+
+    private void applyOwner(BehaviorHandler owner) {
+        _owner = owner;
+        _delegate = new BehaviorTagHandlerDelegate(_owner);
+    }
+
+    @Override
+    public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
+        if (WeavingContext.getInstance().isDynamic(_owner.getClass())) {
+            BehaviorHandler newOwner = (BehaviorHandler) WeavingContext.getInstance().reload(_owner,
+                    ScriptingConst.ARTIFACT_TYPE_BEHAVIOR_HANDLER);
+            if (!newOwner.getClass().equals(_owner.getClass())) {
+                applyOwner(newOwner);
+            }
+        }
+        _owner.apply(ctx, comp);
+    }
+
+    @Override
+    public MetaRuleset createMetaRuleset(Class type) {
+        return _delegate.createMetaRuleset(type);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingComponentTagHandlerDelegate.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingComponentTagHandlerDelegate.java
new file mode 100644
index 0000000..0968b92
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingComponentTagHandlerDelegate.java
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.facelet;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.jsf.facelet.support.ComponentRule;
+import org.apache.myfaces.extensions.scripting.jsf.facelet.support.SwitchingMetarulesetImpl;
+import org.apache.myfaces.view.facelets.tag.jsf.ActionSourceRule;
+import org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate;
+import org.apache.myfaces.view.facelets.tag.jsf.EditableValueHolderRule;
+import org.apache.myfaces.view.facelets.tag.jsf.ValueHolderRule;
+
+import javax.faces.component.ActionSource;
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.ValueHolder;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRuleset;
+import javax.faces.view.facelets.TagHandlerDelegate;
+import java.io.IOException;
+
+/**
+ * we provide our own component tag handler factory impl
+ * so that we can deal with refreshing of components
+ * on Facelets level without running into
+ * nasty type exceptions
+ */
+public class ReloadingComponentTagHandlerDelegate extends TagHandlerDelegate {
+
+    ComponentHandler _owner;
+    TagHandlerDelegate _delegate;
+
+    public ReloadingComponentTagHandlerDelegate(ComponentHandler owner) {
+        applyOwner(owner);
+    }
+
+    private void applyOwner(ComponentHandler owner) {
+        _owner = owner;
+        _delegate = new ComponentTagHandlerDelegate(_owner);
+    }
+
+    @Override
+    public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
+        if (WeavingContext.getInstance().isDynamic(_owner.getClass())) {
+            ComponentHandler newOwner = (ComponentHandler) WeavingContext.getInstance().reload(_owner,
+                    ScriptingConst.ARTIFACT_TYPE_COMPONENT_HANDLER);
+            if (!newOwner.getClass().equals(_owner.getClass())) {
+                applyOwner(newOwner);
+            }
+        }
+        _delegate.apply(ctx, comp);
+    }
+
+    public MetaRuleset createMetaRuleset(Class type) {
+        //We have to create a different meta rule set for dynamic classes
+        //which have weaver instantiation criteria, the original meta rule set
+        //first applies the attributes and then calls BeanPropertyTagRule
+        //that one however caches the current method and does not take into consideration
+        //that classes can be changed on the fly
+
+        // if (WeavingContext.isDynamic(type)) {
+        MetaRuleset m = new SwitchingMetarulesetImpl(_owner.getTag(), type);
+        // ignore standard component attributes
+        m.ignore("binding").ignore("id");
+
+        // add auto wiring for attributes
+        m.addRule(ComponentRule.Instance);
+
+        // if it's an ActionSource
+        if (ActionSource.class.isAssignableFrom(type)) {
+            m.addRule(ActionSourceRule.INSTANCE);
+        }
+
+        // if it's a ValueHolder
+        if (ValueHolder.class.isAssignableFrom(type)) {
+            m.addRule(ValueHolderRule.INSTANCE);
+
+            // if it's an EditableValueHolder
+            if (EditableValueHolder.class.isAssignableFrom(type)) {
+                m.ignore("submittedValue");
+                m.ignore("valid");
+                m.addRule(EditableValueHolderRule.INSTANCE);
+            }
+        }
+
+        return m;
+        //}
+
+        //return _delegate.createMetaRuleset(type);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingConverterTagHandlerDelegate.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingConverterTagHandlerDelegate.java
new file mode 100644
index 0000000..570716c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingConverterTagHandlerDelegate.java
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.facelet;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.view.facelets.tag.jsf.ConverterTagHandlerDelegate;
+
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.ConverterHandler;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRuleset;
+import javax.faces.view.facelets.TagHandlerDelegate;
+import java.io.IOException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ReloadingConverterTagHandlerDelegate extends TagHandlerDelegate {
+
+        ConverterHandler _owner;
+        TagHandlerDelegate _delegate;
+
+        public ReloadingConverterTagHandlerDelegate(ConverterHandler owner) {
+            applyOwner(owner);
+        }
+
+    private void applyOwner(ConverterHandler owner) {
+        _owner = owner;
+        _delegate = new ConverterTagHandlerDelegate(_owner);
+    }
+
+    @Override
+        public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
+            if (WeavingContext.getInstance().isDynamic(_owner.getClass())) {
+                ConverterHandler newOwner = (ConverterHandler) WeavingContext.getInstance().reload(_owner,
+                        ScriptingConst.ARTIFACT_TYPE_CONVERTER_HANDLER);
+                if(!newOwner.getClass().equals(_owner.getClass())) {
+                    applyOwner(newOwner);
+                }
+            }
+            _delegate.apply(ctx, comp);
+        }
+
+        @Override
+        public MetaRuleset createMetaRuleset(Class type) {
+            return _delegate.createMetaRuleset(type);
+        }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingValidatorTagHandlerDelegate.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingValidatorTagHandlerDelegate.java
new file mode 100644
index 0000000..ce94498
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingValidatorTagHandlerDelegate.java
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.facelet;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.view.facelets.tag.jsf.ValidatorTagHandlerDelegate;
+
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRuleset;
+import javax.faces.view.facelets.TagHandlerDelegate;
+import javax.faces.view.facelets.ValidatorHandler;
+import java.io.IOException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ReloadingValidatorTagHandlerDelegate extends TagHandlerDelegate {
+
+    ValidatorHandler _owner;
+    TagHandlerDelegate _delegate;
+
+    public ReloadingValidatorTagHandlerDelegate(ValidatorHandler owner) {
+        applyOwner(owner);
+    }
+
+    private void applyOwner(ValidatorHandler owner) {
+        _owner = owner;
+        _delegate = new ValidatorTagHandlerDelegate(_owner);
+    }
+
+    @Override
+    public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
+        if (WeavingContext.getInstance().isDynamic(_owner.getClass())) {
+            ValidatorHandler newOwner = (ValidatorHandler) WeavingContext.getInstance().reload(_owner,
+                    ScriptingConst.ARTIFACT_TYPE_VALIDATOR_HANDLER);
+            if (!newOwner.getClass().equals(_owner.getClass())) {
+                applyOwner(newOwner);
+            }
+        }
+        _owner.apply(ctx, comp);
+    }
+
+    @Override
+    public MetaRuleset createMetaRuleset(Class type) {
+        return _delegate.createMetaRuleset(type);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/TagHandlerDelegateFactoryImpl.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/TagHandlerDelegateFactoryImpl.java
new file mode 100644
index 0000000..e2da662
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/TagHandlerDelegateFactoryImpl.java
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.facelet;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.view.facelets.tag.jsf.BehaviorTagHandlerDelegate;
+import org.apache.myfaces.view.facelets.tag.jsf.ConverterTagHandlerDelegate;
+import org.apache.myfaces.view.facelets.tag.jsf.ValidatorTagHandlerDelegate;
+
+import javax.faces.view.facelets.BehaviorHandler;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.ConverterHandler;
+import javax.faces.view.facelets.TagHandlerDelegate;
+import javax.faces.view.facelets.TagHandlerDelegateFactory;
+import javax.faces.view.facelets.ValidatorHandler;
+
+/**
+ * Tag handler delegate factory which injects reloading
+ * proxies for our facelet artifacts
+ */
+public class TagHandlerDelegateFactoryImpl extends TagHandlerDelegateFactory {
+
+    @Override
+    public TagHandlerDelegate createBehaviorHandlerDelegate(
+            BehaviorHandler owner) {
+        if (WeavingContext.getInstance().isDynamic(owner.getClass())) {
+            return new ReloadingBehaviorTagHandlerDelegate(owner);
+        } else {
+            return new BehaviorTagHandlerDelegate(owner);
+        }
+    }
+
+    @Override
+    public TagHandlerDelegate createComponentHandlerDelegate(
+            ComponentHandler owner) {
+        return new ReloadingComponentTagHandlerDelegate(owner);
+    }
+
+    @Override
+    public TagHandlerDelegate createConverterHandlerDelegate(
+            ConverterHandler owner) {
+        if (WeavingContext.getInstance().isDynamic(owner.getClass())) {
+            return new ReloadingConverterTagHandlerDelegate(owner);
+        } else {
+            return new ConverterTagHandlerDelegate(owner);
+        }
+    }
+
+    @Override
+    public TagHandlerDelegate createValidatorHandlerDelegate(
+            ValidatorHandler owner) {
+        if (WeavingContext.getInstance().isDynamic(owner.getClass())) {
+            return new ReloadingValidatorTagHandlerDelegate(owner);
+        } else {
+            return new ValidatorTagHandlerDelegate(owner);
+        }
+    }
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/ComponentRule.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/ComponentRule.java
new file mode 100644
index 0000000..61cbb72
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/ComponentRule.java
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.facelet.support;
+
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRule;
+import javax.faces.view.facelets.Metadata;
+import javax.faces.view.facelets.MetadataTarget;
+import javax.faces.view.facelets.TagAttribute;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * we have to re implement the component rule class here
+ * because it is declared private in the original
+ * implementation
+ */
+public final class ComponentRule extends MetaRule {
+
+    final class LiteralAttributeMetadata extends Metadata {
+        private final String _name;
+        private final String _value;
+
+        public LiteralAttributeMetadata(String name, String value) {
+            _name = name;
+            _value = value;
+        }
+
+        public void applyMetadata(FaceletContext ctx, Object instance) {
+            ((UIComponent) instance).getAttributes().put(_name, _value);
+        }
+    }
+
+    final static class ValueExpressionMetadata extends Metadata {
+        private final String _name;
+
+        private final TagAttribute _attr;
+
+        private final Class<?> _type;
+
+        public ValueExpressionMetadata(String name, Class<?> type, TagAttribute attr) {
+            _name = name;
+            _attr = attr;
+            _type = type;
+        }
+
+        public void applyMetadata(FaceletContext ctx, Object instance) {
+            ((UIComponent) instance).setValueExpression(_name, _attr.getValueExpression(ctx, _type));
+        }
+    }
+
+    //private final static Logger log = Logger.getLogger("facelets.tag.component");
+    private final static Logger log = Logger.getLogger(ComponentRule.class.getName());
+
+    public final static ComponentRule Instance = new ComponentRule();
+
+    public ComponentRule() {
+        super();
+    }
+
+    public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget meta) {
+        if (meta.isTargetInstanceOf(UIComponent.class)) {
+            // if component and dynamic, then must set expression
+            if (!attribute.isLiteral()) {
+                Class<?> type = meta.getPropertyType(name);
+                if (type == null) {
+                    type = Object.class;
+                }
+
+                return new ValueExpressionMetadata(name, type, attribute);
+            } else if (meta.getWriteMethod(name) == null) {
+
+                // this was an attribute literal, but not property
+                warnAttr(attribute, meta.getTargetClass(), name);
+
+                return new LiteralAttributeMetadata(name, attribute.getValue());
+            }
+        }
+        return null;
+    }
+
+    private static void warnAttr(TagAttribute attr, Class<?> type, String n) {
+        if (log.isLoggable(Level.FINER)) {
+            log.finer(attr + " Property '" + n + "' is not on type: " + type.getName());
+        }
+    }
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/InvokeDynamicBeanPropertyTagRule.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/InvokeDynamicBeanPropertyTagRule.java
new file mode 100644
index 0000000..4fe7065
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/InvokeDynamicBeanPropertyTagRule.java
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.facelet.support;
+
+
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.Metadata;
+import javax.faces.view.facelets.MetadataTarget;
+import javax.faces.view.facelets.TagAttribute;
+import java.lang.reflect.Method;
+
+/**
+ * We have to introduce a BeanPropertyTagRule
+ * which calls the setter of a given component
+ * on a weaker base than the original facelets component
+ * property tag rule does.
+ * By not enforcing a strict per object/class policy on calling
+ * the setter we are able to reload the classes on the fly
+ * <p/>
+ * the original approach was to cache the classes, and then
+ * call the invoke method on the existing class
+ * if we now exchange the classes we have a problem...
+ * By making the invocation of the method independend from the underlying
+ * class (sort of calling an invokedynamic) we can bypass this problem
+ * on facelets level.
+ */
+public class InvokeDynamicBeanPropertyTagRule {
+    public final static InvokeDynamicBeanPropertyTagRule Instance = new InvokeDynamicBeanPropertyTagRule();
+
+    public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget meta) {
+        Method m = meta.getWriteMethod(name);
+
+        // if the property is writable
+        if (m != null) {
+            if (attribute.isLiteral()) {
+                return new LiteralPropertyMetadata(m, attribute);
+            } else {
+                return new DynamicPropertyMetadata(m, attribute);
+            }
+        }
+
+        return null;
+    }
+
+    final static class LiteralPropertyMetadata extends Metadata {
+
+        private final Method method;
+
+        private final TagAttribute attribute;
+
+        private Object[] value;
+
+        public LiteralPropertyMetadata(Method method, TagAttribute attribute) {
+            this.method = method;
+            this.attribute = attribute;
+        }
+
+        public void applyMetadata(FaceletContext ctx, Object instance) {
+            if (value == null) {
+                String str = this.attribute.getValue();
+                value = new Object[]{ctx.getExpressionFactory().coerceToType(str, method.getParameterTypes()[0])};
+            }
+            //What we do here is simply to call an invoke dynamic on the method with the same name
+            //but on the new instance of, that way we can bypass class problems
+            //because the method reference has stored the old class in our case
+            ReflectUtil.executeMethod(instance, method.getName(), this.value);
+        }
+
+    }
+
+    final static class DynamicPropertyMetadata extends Metadata {
+
+        private final Method method;
+
+        private final TagAttribute attribute;
+
+        private final Class<?> type;
+
+        public DynamicPropertyMetadata(Method method, TagAttribute attribute) {
+            this.method = method;
+            this.type = method.getParameterTypes()[0];
+            this.attribute = attribute;
+        }
+
+        public void applyMetadata(FaceletContext ctx, Object instance) {
+            ReflectUtil.executeMethod(instance, method.getName(), new Object[]{attribute.getObject(ctx, type)});
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingBeanPropertyTagRule.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingBeanPropertyTagRule.java
new file mode 100644
index 0000000..5028206
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingBeanPropertyTagRule.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.facelet.support;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.view.facelets.tag.BeanPropertyTagRule;
+
+import javax.faces.view.facelets.MetaRule;
+import javax.faces.view.facelets.Metadata;
+import javax.faces.view.facelets.MetadataTarget;
+import javax.faces.view.facelets.TagAttribute;
+
+/**
+ * Bean property tag rule
+ * which switches between the fast static
+ * version and the slower invoke dynamic
+ * version depending on the class type of
+ * the incoming instance
+ */
+public class SwitchingBeanPropertyTagRule extends MetaRule {
+
+    InvokeDynamicBeanPropertyTagRule _invokeDynamic = InvokeDynamicBeanPropertyTagRule.Instance;
+    BeanPropertyTagRule _invokeStatic = BeanPropertyTagRule.INSTANCE;
+
+    public static volatile SwitchingBeanPropertyTagRule Instance = new SwitchingBeanPropertyTagRule();
+
+    @Override
+    public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget meta) {
+        if (WeavingContext.getInstance().isDynamic(meta.getTargetClass())) {
+            return _invokeDynamic.applyRule(name, attribute, meta);
+        } else {
+            return _invokeStatic.applyRule(name, attribute, meta);
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingMetarulesetImpl.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingMetarulesetImpl.java
new file mode 100644
index 0000000..c61096f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingMetarulesetImpl.java
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.facelet.support;
+
+import org.apache.myfaces.view.facelets.tag.MetaRulesetImpl;
+import org.apache.myfaces.view.facelets.tag.MetadataImpl;
+import org.apache.myfaces.view.facelets.tag.MetadataTargetImpl;
+import org.apache.myfaces.view.facelets.util.ParameterCheck;
+
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRule;
+import javax.faces.view.facelets.MetaRuleset;
+import javax.faces.view.facelets.Metadata;
+import javax.faces.view.facelets.MetadataTarget;
+import javax.faces.view.facelets.Tag;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagException;
+import java.beans.IntrospectionException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * we have to to do a full reimplementation of the rule set
+ * because otherwise we could not plant the switching bean reloading
+ * rule due to private props in the original code
+ */
+public class SwitchingMetarulesetImpl extends MetaRuleset {
+    private final static Metadata NONE = new NullMetadata();
+
+    //private final static Logger log = Logger.getLogger("facelets.tag.meta");
+    private final static Logger log = Logger.getLogger(MetaRulesetImpl.class.getName());
+
+    private final static WeakHashMap<String, MetadataTarget> _metadata = new WeakHashMap<String, MetadataTarget>();
+
+    private final Map<String, TagAttribute> _attributes;
+
+    private final List<Metadata> _mappers;
+
+    private final List<MetaRule> _rules;
+
+    private final Tag _tag;
+
+    private final Class<?> _type;
+
+    public SwitchingMetarulesetImpl(Tag tag, Class<?> type) {
+        _tag = tag;
+        _type = type;
+        _attributes = new HashMap<String, TagAttribute>();
+        _mappers = new ArrayList<Metadata>();
+        _rules = new ArrayList<MetaRule>();
+
+        // setup attributes
+        for (TagAttribute attribute : _tag.getAttributes().getAll()) {
+            _attributes.put(attribute.getLocalName(), attribute);
+        }
+
+        // add default rules
+        _rules.add(SwitchingBeanPropertyTagRule.Instance);
+    }
+
+    public MetaRuleset add(Metadata mapper) {
+        ParameterCheck.notNull("mapper", mapper);
+
+        if (!_mappers.contains(mapper)) {
+            _mappers.add(mapper);
+        }
+
+        return this;
+    }
+
+    public MetaRuleset addRule(MetaRule rule) {
+        ParameterCheck.notNull("rule", rule);
+
+        _rules.add(rule);
+
+        return this;
+    }
+
+    public MetaRuleset alias(String attribute, String property) {
+        ParameterCheck.notNull("attribute", attribute);
+        ParameterCheck.notNull("property", property);
+
+        TagAttribute attr = (TagAttribute) _attributes.remove(attribute);
+        if (attr != null) {
+            _attributes.put(property, attr);
+        }
+
+        return this;
+    }
+
+    public Metadata finish() {
+        assert !_rules.isEmpty();
+
+        if (!_attributes.isEmpty()) {
+            MetadataTarget target = this._getMetadataTarget();
+            int ruleEnd = _rules.size() - 1;
+
+            // now iterate over attributes
+            for (Map.Entry<String, TagAttribute> entry : _attributes.entrySet()) {
+                Metadata data = null;
+
+                int i = ruleEnd;
+
+                // First loop is always safe
+                do {
+                    MetaRule rule = _rules.get(i);
+                    data = rule.applyRule(entry.getKey(), entry.getValue(), target);
+                    i--;
+                } while (data == null && i >= 0);
+
+                if (data == null) {
+                    if (log.isLoggable(Level.SEVERE)) {
+                        log.severe(entry.getValue() + " Unhandled by MetaTagHandler for type " + _type.getName());
+                    }
+                } else {
+                    _mappers.add(data);
+                }
+            }
+        }
+
+        if (_mappers.isEmpty()) {
+            return NONE;
+        } else {
+            return new MetadataImpl(_mappers.toArray(new Metadata[_mappers.size()]));
+        }
+    }
+
+    public MetaRuleset ignore(String attribute) {
+        ParameterCheck.notNull("attribute", attribute);
+
+        _attributes.remove(attribute);
+
+        return this;
+    }
+
+    public MetaRuleset ignoreAll() {
+        _attributes.clear();
+
+        return this;
+    }
+
+    private final MetadataTarget _getMetadataTarget() {
+        String key = _type.getName();
+
+        MetadataTarget meta = _metadata.get(key);
+        if (meta == null) {
+            try {
+                meta = new MetadataTargetImpl(_type);
+            }
+            catch (IntrospectionException e) {
+                throw new TagException(_tag, "Error Creating TargetMetadata", e);
+            }
+
+            _metadata.put(key, meta);
+        }
+
+        return meta;
+    }
+
+    private static class NullMetadata extends Metadata {
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public void applyMetadata(FaceletContext ctx, Object instance) {
+            // do nothing
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/BehaviorHandlerReloadingStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/BehaviorHandlerReloadingStrategy.java
new file mode 100644
index 0000000..77168f9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/BehaviorHandlerReloadingStrategy.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.reloading;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.Cast;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
+
+import javax.faces.view.facelets.BehaviorConfig;
+import javax.faces.view.facelets.BehaviorHandler;
+import javax.faces.view.facelets.ComponentHandler;
+
+/**
+ * The reloading strategy for our behavior tag handlers
+ * note since we do not have an official api we must
+ * enforce a getConverterConfig() method to allow
+ * the reloading of converter tag handlers
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class BehaviorHandlerReloadingStrategy extends SimpleReloadingStrategy
+{
+    public BehaviorHandlerReloadingStrategy() {
+        super();
+    }
+
+    @Override
+    public Object reload(Object scriptingInstance, int engineType, int artifactType) {
+        if (!(scriptingInstance instanceof ComponentHandler)) return scriptingInstance;
+        Class aclass = WeavingContext.getInstance().reload(scriptingInstance.getClass());
+        if (aclass.hashCode() == scriptingInstance.getClass().hashCode()) {
+            //class of this object has not changed although
+            // reload is enabled we can skip the rest now
+            return scriptingInstance;
+        }
+        BehaviorHandler oldHandler = (BehaviorHandler) scriptingInstance;
+        /**
+         *
+         */
+        BehaviorConfig config = (BehaviorConfig) ReflectUtil.executeMethod(oldHandler, "getBehaviorConfig");
+        BehaviorHandler newHandler = (BehaviorHandler) ReflectUtil.instantiate(aclass, new Cast(BehaviorConfig.class, config));
+
+        //save all pending non config related properties wherever possible
+        super.mapProperties(newHandler, engineType, oldHandler);
+
+        return newHandler;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/ComponentHandlerReloadingStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/ComponentHandlerReloadingStrategy.java
new file mode 100644
index 0000000..f2880f5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/ComponentHandlerReloadingStrategy.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.reloading;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.Cast;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
+
+import javax.faces.view.facelets.ComponentConfig;
+import javax.faces.view.facelets.ComponentHandler;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ComponentHandlerReloadingStrategy extends SimpleReloadingStrategy
+{
+
+    public ComponentHandlerReloadingStrategy() {
+        super();
+    }
+
+    @Override
+    public Object reload(Object scriptingInstance, int engineType, int artifactType) {
+        if (!(scriptingInstance instanceof ComponentHandler)) return scriptingInstance;
+        Class aclass = WeavingContext.getInstance().reload(scriptingInstance.getClass());
+        if (aclass.hashCode() == scriptingInstance.getClass().hashCode()) {
+            //class of this object has not changed although
+            // reload is enabled we can skip the rest now
+            return scriptingInstance;
+        }
+        ComponentHandler oldHandler = (ComponentHandler) scriptingInstance;
+        ComponentConfig config = oldHandler.getComponentConfig();
+        ComponentHandler newHandler = (ComponentHandler) ReflectUtil.instantiate(aclass, new Cast(ComponentConfig.class, config));
+
+        //save all pending non config related properties wherever possible
+
+
+        super.mapProperties(newHandler, engineType, oldHandler);
+
+        return newHandler;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/ConverterHandlerReloadingStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/ConverterHandlerReloadingStrategy.java
new file mode 100644
index 0000000..fb33e8f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/ConverterHandlerReloadingStrategy.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.reloading;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.Cast;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
+
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.ConverterConfig;
+import javax.faces.view.facelets.ConverterHandler;
+
+/**
+ * The reloading strategy for our converter tag handlers
+ * note since we do not have an official api we must
+ * enforce a getConverterConfig() method to allow
+ * the reloading of converter tag handlers
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@SuppressWarnings("unused")//used dynamically
+public class ConverterHandlerReloadingStrategy extends SimpleReloadingStrategy
+{
+
+    public ConverterHandlerReloadingStrategy() {
+        super();
+    }
+
+    @Override
+    public Object reload(Object scriptingInstance, int engineType, int artifactType) {
+        if (!(scriptingInstance instanceof ComponentHandler)) return scriptingInstance;
+        Class aclass = WeavingContext.getInstance().reload(scriptingInstance.getClass());
+        if (aclass.hashCode() == scriptingInstance.getClass().hashCode()) {
+            //class of this object has not changed although
+            // reload is enabled we can skip the rest now
+            return scriptingInstance;
+        }
+        ConverterHandler oldHandler = (ConverterHandler) scriptingInstance;
+        /**
+         *
+         */
+        ConverterConfig config = (ConverterConfig) ReflectUtil.executeMethod(oldHandler, "getConverterConfig");
+        ConverterHandler newHandler = (ConverterHandler) ReflectUtil.instantiate(aclass, new Cast(ConverterConfig.class, config));
+
+        //save all pending non config related properties wherever possible
+        super.mapProperties(newHandler, engineType, oldHandler);
+
+        return newHandler;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/ValidatorHandlerReloadingStrategy.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/ValidatorHandlerReloadingStrategy.java
new file mode 100644
index 0000000..ccecb5b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/reloading/ValidatorHandlerReloadingStrategy.java
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.reloading;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.Cast;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
+
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.ValidatorConfig;
+import javax.faces.view.facelets.ValidatorHandler;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ValidatorHandlerReloadingStrategy extends SimpleReloadingStrategy
+{
+
+    public ValidatorHandlerReloadingStrategy() {
+        super();
+    }
+
+    @Override
+    public Object reload(Object scriptingInstance, int engineType, int artifactType) {
+        if (!(scriptingInstance instanceof ComponentHandler)) return scriptingInstance;
+        Class aclass = WeavingContext.getInstance().reload(scriptingInstance.getClass());
+        if (aclass.hashCode() == scriptingInstance.getClass().hashCode()) {
+            //class of this object has not changed although
+            // reload is enabled we can skip the rest now
+            return scriptingInstance;
+        }
+        ValidatorHandler oldHandler = (ValidatorHandler) scriptingInstance;
+        ValidatorConfig config = oldHandler.getValidatorConfig();
+        ValidatorHandler newHandler = (ValidatorHandler) ReflectUtil.instantiate(aclass, new Cast(ValidatorConfig.class, config));
+
+        //save all pending non config related properties wherever possible
+        super.mapProperties(newHandler, engineType, oldHandler);
+
+        return newHandler;
+    }
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/AliasResourceMetaImpl.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/AliasResourceMetaImpl.java
new file mode 100644
index 0000000..950e5b6
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/AliasResourceMetaImpl.java
@@ -0,0 +1,96 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+/**

+ * Contains the metadata information to reference a resource 

+ * 

+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)

+ * @version $Revision: 700544 $ $Date: 2008-09-30 13:44:02 -0500 (Mar, 30 Sep 2008) $

+ */

+public class AliasResourceMetaImpl extends ResourceMetaImpl

+{

+    private String _realResourceName;

+    

+    private boolean _couldContainValueExpressions;

+

+    public AliasResourceMetaImpl(String prefix, String libraryName, String libraryVersion,

+            String resourceName, String resourceVersion, String realResourceName, boolean couldContainValueExpressions)

+    {

+        super(prefix, libraryName, libraryVersion,

+            resourceName, resourceVersion);

+        _realResourceName = realResourceName;

+        _couldContainValueExpressions = couldContainValueExpressions;

+    }

+    

+    public String getRealResourceName()

+    {

+        return _realResourceName;

+    }

+

+    public void setRealResourceName(String realResourceName)

+    {

+        _realResourceName = realResourceName;

+    }

+    

+    @Override

+    public String getResourceIdentifier()

+    {

+        StringBuilder builder = new StringBuilder();

+        boolean firstSlashAdded = false;

+        if (getLocalePrefix() != null && getLocalePrefix().length() > 0)

+        {

+            builder.append(getLocalePrefix());

+            firstSlashAdded = true;

+        }

+        if (getLibraryName() != null)

+        {

+            if (firstSlashAdded) builder.append('/');

+            builder.append(getLibraryName());

+            firstSlashAdded = true;

+        }

+        if (getLibraryVersion() != null)

+        {

+            if (firstSlashAdded) builder.append('/');

+            builder.append(getLibraryVersion());

+            firstSlashAdded = true;

+        }

+        if (getRealResourceName() != null)

+        {

+            if (firstSlashAdded) builder.append('/');

+            builder.append(getRealResourceName());

+            firstSlashAdded = true;

+        }

+        if (getResourceVersion() != null)

+        {

+            if (firstSlashAdded) builder.append('/');

+            builder.append(getResourceVersion());

+            builder.append(

+                    getRealResourceName().substring(getRealResourceName().lastIndexOf('.')));

+            firstSlashAdded = true;

+        }

+        return builder.toString();

+    }

+

+    @Override

+    public boolean couldResourceContainValueExpressions()

+    {

+        return _couldContainValueExpressions;

+    }

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/BaseResourceHandlerSupport.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/BaseResourceHandlerSupport.java
new file mode 100644
index 0000000..a9c48c9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/BaseResourceHandlerSupport.java
@@ -0,0 +1,236 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+import javax.faces.context.ExternalContext;

+import javax.faces.context.FacesContext;

+import java.util.Map;

+

+/**

+ * A ResourceHandlerSupport implementation for use with standard Java Servlet engines,

+ * ie an engine that supports javax.servlet, and uses a standard web.xml file.

+ * 

+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)

+ * @version $Revision: 946779 $ $Date: 2010-05-20 15:31:42 -0500 (Jue, 20 May 2010) $

+ */

+public class BaseResourceHandlerSupport extends ResourceHandlerSupport

+{

+

+    /**

+     * Set the max time in miliseconds set on the "Expires" header for a resource.

+     * (default to one week in miliseconds or 604800000) 

+     */

+    public static final String RESOURCE_MAX_TIME_EXPIRES = "org.apache.myfaces.RESOURCE_MAX_TIME_EXPIRES";

+

+    /**

+     * Identifies the FacesServlet mapping in the current request map.

+     */

+    private static final String CACHED_SERVLET_MAPPING =

+        BaseResourceHandlerSupport.class.getName() + ".CACHED_SERVLET_MAPPING";

+    

+    private Long _startupTime;

+    

+    private Long _maxTimeExpires;

+        

+    public BaseResourceHandlerSupport()

+    {

+        _startupTime = System.currentTimeMillis();

+    }

+    

+    public ResourceLoader[] getResourceLoaders()

+    {

+        return null;

+    }

+

+    public String calculateResourceBasePath(FacesContext facesContext)

+    {        

+        FacesServletMapping mapping = getFacesServletMapping(facesContext);

+        ExternalContext externalContext = facesContext.getExternalContext();      

+        

+        if (mapping != null)

+        {

+            String resourceBasePath = null;

+            if (mapping.isExtensionMapping())

+            {

+                // Mapping using a suffix. In this case we have to strip 

+                // the suffix. If we have a url like:

+                // http://localhost:8080/testjsf20/javax.faces.resource/imagen.jpg.jsf?ln=dojo

+                // 

+                // The servlet path is /javax.faces.resource/imagen.jpg.jsf

+                //

+                // For obtain the resource name we have to remove the .jsf suffix and 

+                // the prefix ResourceHandler.RESOURCE_IDENTIFIER

+                resourceBasePath = externalContext.getRequestServletPath();

+                int stripPoint = resourceBasePath.lastIndexOf('.');

+                if (stripPoint > 0)

+                {

+                    resourceBasePath = resourceBasePath.substring(0, stripPoint);

+                }

+            }

+            else

+            {

+                // Mapping using prefix. In this case we have to strip 

+                // the prefix used for mapping. If we have a url like:

+                // http://localhost:8080/testjsf20/faces/javax.faces.resource/imagen.jpg?ln=dojo

+                //

+                // The servlet path is /faces

+                // and the path info is /javax.faces.resource/imagen.jpg

+                //

+                // For obtain the resource name we have to remove the /faces prefix and 

+                // then the prefix ResourceHandler.RESOURCE_IDENTIFIER

+                resourceBasePath = externalContext.getRequestPathInfo();

+            }

+            return resourceBasePath;            

+        }

+        else

+        {

+            //If no mapping is detected, just return the

+            //information follows the servlet path but before

+            //the query string

+            return externalContext.getRequestPathInfo();

+        }

+    }

+

+    public boolean isExtensionMapping()

+    {

+        FacesServletMapping mapping = getFacesServletMapping(

+                FacesContext.getCurrentInstance());

+        if (mapping != null)

+        {

+            if (mapping.isExtensionMapping())

+            {

+                return true;

+            }

+        }

+        return false;

+    }

+    

+    public String getMapping()

+    {

+        FacesServletMapping mapping = getFacesServletMapping(

+                FacesContext.getCurrentInstance());

+        if (mapping != null)

+        {

+            if (mapping.isExtensionMapping())

+            {

+                return mapping.getExtension();

+            }

+            else

+            {

+                return mapping.getPrefix();

+            }

+        }

+        return "";

+    }

+

+    /**

+     * Read the web.xml file that is in the classpath and parse its internals to

+     * figure out how the FacesServlet is mapped for the current webapp.

+     */

+    protected FacesServletMapping getFacesServletMapping(FacesContext context)

+    {

+        Map<Object, Object> attributes = context.getAttributes();

+

+        // Has the mapping already been determined during this request?

+        FacesServletMapping mapping = (FacesServletMapping) attributes.get(CACHED_SERVLET_MAPPING);

+        if (mapping == null)

+        {

+            ExternalContext externalContext = context.getExternalContext();

+            mapping = calculateFacesServletMapping(externalContext.getRequestServletPath(),

+                    externalContext.getRequestPathInfo());

+

+            attributes.put(CACHED_SERVLET_MAPPING, mapping);

+        }

+        return mapping;

+    }

+

+    /**

+     * Determines the mapping of the FacesServlet in the web.xml configuration

+     * file. However, there is no need to actually parse this configuration file

+     * as runtime information is sufficient.

+     *

+     * @param servletPath The servletPath of the current request

+     * @param pathInfo    The pathInfo of the current request

+     * @return the mapping of the FacesServlet in the web.xml configuration file

+     */

+    protected static FacesServletMapping calculateFacesServletMapping(

+        String servletPath, String pathInfo)

+    {

+        if (pathInfo != null)

+        {

+            // If there is a "extra path", it's definitely no extension mapping.

+            // Now we just have to determine the path which has been specified

+            // in the url-pattern, but that's easy as it's the same as the

+            // current servletPath. It doesn't even matter if "/*" has been used

+            // as in this case the servletPath is just an empty string according

+            // to the Servlet Specification (SRV 4.4).

+            return FacesServletMapping.createPrefixMapping(servletPath);

+        }

+        else

+        {

+            // In the case of extension mapping, no "extra path" is available.

+            // Still it's possible that prefix-based mapping has been used.

+            // Actually, if there was an exact match no "extra path"

+            // is available (e.g. if the url-pattern is "/faces/*"

+            // and the request-uri is "/context/faces").

+            int slashPos = servletPath.lastIndexOf('/');

+            int extensionPos = servletPath.lastIndexOf('.');

+            if (extensionPos > -1 && extensionPos > slashPos)

+            {

+                String extension = servletPath.substring(extensionPos);

+                return FacesServletMapping.createExtensionMapping(extension);

+            }

+            else

+            {

+                // There is no extension in the given servletPath and therefore

+                // we assume that it's an exact match using prefix-based mapping.

+                return FacesServletMapping.createPrefixMapping(servletPath);

+            }

+        }

+    }

+

+    public long getStartupTime()

+    {

+        return _startupTime;

+    }

+    

+    public long getMaxTimeExpires()

+    {

+        if (_maxTimeExpires == null)

+        {

+            String time = FacesContext.getCurrentInstance().getExternalContext().getInitParameter(RESOURCE_MAX_TIME_EXPIRES);

+            if (time != null && time.length() > 0)

+            {

+                try

+                {

+                    _maxTimeExpires = Long.parseLong(time);

+                }

+                catch (NumberFormatException e)

+                {

+                    _maxTimeExpires = 604800000L;

+                }

+            }

+            else

+            {

+                _maxTimeExpires = 604800000L;

+            }

+        }

+        return _maxTimeExpires;

+    }

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ClassLoaderResourceLoader.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ClassLoaderResourceLoader.java
new file mode 100644
index 0000000..f1f266e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ClassLoaderResourceLoader.java
@@ -0,0 +1,480 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+

+import org.apache.myfaces.extensions.scripting.core.common.util.ClassLoaderUtils;

+

+import javax.faces.application.ProjectStage;

+import javax.faces.context.FacesContext;

+import java.io.InputStream;

+import java.net.URL;

+

+/**

+ * A resource loader implementation which loads resources from the thread ClassLoader.

+ * 

+ */

+public class ClassLoaderResourceLoader extends ResourceLoader

+{

+    /**

+     * It checks version like this: 1, 1_0, 1_0_0, 100_100

+     * 

+     * Used on getLibraryVersion to filter resource directories

+     **/

+    //protected static Pattern VERSION_CHECKER = Pattern.compile("\\p{Digit}+(_\\p{Digit}*)*");

+

+    /**

+     * It checks version like this: /1.js, /1_0.js, /1_0_0.js, /100_100.js

+     * 

+     * Used on getResourceVersion to filter resources

+     **/

+    //protected static Pattern RESOURCE_VERSION_CHECKER = Pattern.compile("/\\p{Digit}+(_\\p{Digit}*)*\\..*");

+

+    /*

+    private FileFilter _libraryFileFilter = new FileFilter()

+    {

+        public boolean accept(File pathname)

+        {

+            if (pathname.isDirectory() && VERSION_CHECKER.matcher(pathname.getName()).matches())

+            {

+                return true;

+            }

+            return false;

+        }

+    };*/

+

+    /*

+    private FileFilter _resourceFileFilter = new FileFilter()

+    {

+        public boolean accept(File pathname)

+        {

+            if (pathname.isDirectory() && RESOURCE_VERSION_CHECKER.matcher(pathname.getName()).matches())

+            {

+                return true;

+            }

+            return false;

+        }

+    };*/

+    

+    private final boolean _developmentStage;

+

+    public ClassLoaderResourceLoader(String prefix)

+    {

+        super(prefix);

+        _developmentStage = FacesContext.getCurrentInstance().isProjectStage(ProjectStage.Development);

+    }

+

+    @Override

+    public String getLibraryVersion(String path)

+    {

+        return null;

+        /*

+        String libraryVersion = null;

+        if (getPrefix() != null)

+            path = getPrefix() + '/' + path;

+

+        URL url = getClassLoader().getResource(path);

+

+        if (url == null)

+        {

+            // This library does not exists for this

+            // ResourceLoader

+            return null;

+        }

+

+        // The problem here is how to scan the directory. When a ClassLoader

+        // is used two cases could occur

+        // 1. The files are unpacked so we can use Url.toURI and crawl

+        // the directory using the api for files.

+        // 2. The files are packed in a jar. This case is more tricky,

+        // because we only have a URL. Checking the jar api we can use

+        // JarURLConnection (Sounds strange, but the api of

+        // URL.openConnection says that for a jar connection a

+        // JarURLConnection is returned). From this point we can access

+        // to the jar api and solve the algoritm.

+        if (url.getProtocol().equals("file"))

+        {

+            try

+            {

+                File directory = new File(url.toURI());

+                if (directory.isDirectory())

+                {

+                    File[] versions = directory.listFiles(_libraryFileFilter);

+                    for (int i = 0; i < versions.length; i++)

+                    {

+                        String version = versions[i].getName();

+                        if (VERSION_CHECKER.matcher(version).matches())

+                        {

+                            if (libraryVersion == null)

+                            {

+                                libraryVersion = version;

+                            }

+                            else if (getVersionComparator().compare(libraryVersion, version) < 0)

+                            {

+                                libraryVersion = version;

+                            }

+                        }

+                    }

+                }

+            }

+            catch (URISyntaxException e)

+            {

+                // Just return null, because library version cannot be

+                // resolved.

+                Logger log = Logger.getLogger(ClassLoaderResourceLoader.class.getName()); 

+                if (log.isLoggable(Level.WARNING))

+                {

+                    log.log(Level.WARNING, "url "+url.toString()+" cannot be translated to uri: "+e.getMessage(), e);

+                }

+            }

+        }

+        else if (isJarResourceProtocol(url.getProtocol()))

+        {

+            try

+            {

+                url = getClassLoader().getResource(path + '/');

+

+                if (url != null)

+                {

+                    JarURLConnection conn = (JarURLConnection)url.openConnection();

+                    // See DIGESTER-29 for related problem

+                    conn.setUseCaches(false);

+

+                    try

+                    {

+                        if (conn.getJarEntry().isDirectory())

+                        {

+                            // Unfortunately, we have to scan all entry files

+                            // because there is no proper api to scan it as a

+                            // directory tree.

+                            JarFile file = conn.getJarFile();

+                            for (Enumeration<JarEntry> en = file.entries(); en.hasMoreElements();)

+                            {

+                                JarEntry entry = en.nextElement();

+                                String entryName = entry.getName();

+    

+                                if (entryName.startsWith(path + '/'))

+                                {

+                                    if (entryName.length() == path.length() + 1)

+                                    {

+                                        // the same string, just skip it

+                                        continue;

+                                    }

+    

+                                    if (entryName.charAt(entryName.length() - 1) != '/')

+                                    {

+                                        // Skip files

+                                        continue;

+                                    }

+    

+                                    entryName = entryName.substring(path.length() + 1, entryName.length() - 1);

+    

+                                    if (entryName.indexOf('/') >= 0)

+                                    {

+                                        // Inner Directory

+                                        continue;

+                                    }

+    

+                                    String version = entryName;

+                                    if (VERSION_CHECKER.matcher(version).matches())

+                                    {

+                                        if (libraryVersion == null)

+                                        {

+                                            libraryVersion = version;

+                                        }

+                                        else if (getVersionComparator().compare(libraryVersion, version) < 0)

+                                        {

+                                            libraryVersion = version;

+                                        }

+                                    }

+                                }

+                            }

+                        }

+                    }

+                    finally

+                    {

+                        //See TRINIDAD-73

+                        //just close the input stream again if

+                        //by inspecting the entries the stream

+                        //was let open.

+                        try

+                        {

+                            conn.getInputStream().close();

+                        }

+                        catch (Exception exception)

+                        {

+                            // Ignored

+                        }

+                    }

+                }

+            }

+            catch (IOException e)

+            {

+                // Just return null, because library version cannot be

+                // resolved.

+                Logger log = Logger.getLogger(ClassLoaderResourceLoader.class.getName()); 

+                if (log.isLoggable(Level.WARNING))

+                {

+                    log.log(Level.WARNING, "IOException when scanning for resource in jar file:", e);

+                }

+            }

+        }

+        return libraryVersion;

+        */

+    }

+

+    @Override

+    public InputStream getResourceInputStream(ResourceMeta resourceMeta)

+    {

+        if (getPrefix() != null && !"".equals(getPrefix()))

+        {

+            return getClassLoader().getResourceAsStream(getPrefix() + '/' + resourceMeta.getResourceIdentifier());

+        }

+        else

+        {

+            return getClassLoader().getResourceAsStream(resourceMeta.getResourceIdentifier());

+        }

+    }

+

+    @Override

+    public URL getResourceURL(ResourceMeta resourceMeta)

+    {

+        if (getPrefix() != null && !"".equals(getPrefix()))

+        {

+            return getClassLoader().getResource(getPrefix() + '/' + resourceMeta.getResourceIdentifier());

+        }

+        else

+        {

+            return getClassLoader().getResource(resourceMeta.getResourceIdentifier());

+        }

+    }

+

+    @Override

+    public String getResourceVersion(String path)

+    {

+        return null;

+        /*

+        String resourceVersion = null;

+

+        if (getPrefix() != null)

+            path = getPrefix() + '/' + path;

+

+        URL url = getClassLoader().getResource(path);

+

+        if (url == null)

+        {

+            // This library does not exists for this

+            // ResourceLoader

+            return null;

+        }

+

+        if (url.getProtocol().equals("file"))

+        {

+            try

+            {

+                File directory = new File(url.toURI());

+                if (directory.isDirectory())

+                {

+                    File[] versions = directory.listFiles(_resourceFileFilter);

+                    for (int i = 0; i < versions.length; i++)

+                    {

+                        String version = versions[i].getName();

+                        if (resourceVersion == null)

+                        {

+                            resourceVersion = version;

+                        }

+                        else if (getVersionComparator().compare(resourceVersion, version) < 0)

+                        {

+                            resourceVersion = version;

+                        }

+                    }

+                    //Since it is a directory and no version found set resourceVersion as invalid

+                    if (resourceVersion == null)

+                    {

+                        resourceVersion = VERSION_INVALID;

+                    }

+                }

+            }

+            catch (URISyntaxException e)

+            {

+                Logger log = Logger.getLogger(ClassLoaderResourceLoader.class.getName()); 

+                if (log.isLoggable(Level.WARNING))

+                {

+                    log.log(Level.WARNING, "url "+url.toString()+" cannot be translated to uri: "+e.getMessage(), e);

+                }

+            }

+        }

+        else if (isJarResourceProtocol(url.getProtocol()))

+        {

+            try

+            {

+                url = getClassLoader().getResource(path + '/');

+

+                if (url != null)

+                {

+                    JarURLConnection conn = (JarURLConnection)url.openConnection();

+                    // See DIGESTER-29 for related problem

+                    conn.setUseCaches(false);

+

+                    try

+                    {

+                        if (conn.getJarEntry().isDirectory())

+                        {

+                            // Unfortunately, we have to scan all entry files

+                            JarFile file = conn.getJarFile();

+                            for (Enumeration<JarEntry> en = file.entries(); en.hasMoreElements();)

+                            {

+                                JarEntry entry = en.nextElement();

+                                String entryName = entry.getName();

+    

+                                if (entryName.startsWith(path + '/'))

+                                {

+                                    if (entryName.length() == path.length() + 1)

+                                    {

+                                        // the same string, just skip it

+                                        continue;

+                                    }

+        

+                                    entryName = entryName.substring(path.length());

+                                    if (RESOURCE_VERSION_CHECKER.matcher(entryName).matches())

+                                    {

+                                        String version = entryName.substring(1, entryName.lastIndexOf('.'));

+                                        if (resourceVersion == null)

+                                        {

+                                            resourceVersion = version;

+                                        }

+                                        else if (getVersionComparator().compare(resourceVersion, version) < 0)

+                                        {

+                                            resourceVersion = version;

+                                        }

+                                    }

+                                }

+                            }

+                            if (resourceVersion == null)

+                            {

+                                resourceVersion = VERSION_INVALID;

+                            }

+                        }

+                    }

+                    finally

+                    {

+                        //See TRINIDAD-73

+                        //just close the input stream again if

+                        //by inspecting the entries the stream

+                        //was let open.

+                        try

+                        {

+                            conn.getInputStream().close();

+                        }

+                        catch (Exception exception)

+                        {

+                            // Ignored

+                        }

+                    }

+

+                }

+            }

+            catch (IOException e)

+            {

+                // Just return null, because library version cannot be

+                // resolved.

+                Logger log = Logger.getLogger(ClassLoaderResourceLoader.class.getName()); 

+                if (log.isLoggable(Level.WARNING))

+                {

+                    log.log(Level.WARNING, "IOException when scanning for resource in jar file:", e);

+                }

+            }

+        }

+        return resourceVersion;

+        */

+    }

+

+    @Override

+    public ResourceMeta createResourceMeta(String prefix, String libraryName, String libraryVersion,

+                                           String resourceName, String resourceVersion)

+    {

+        if (_developmentStage && libraryName != null && 

+                ResourceLoaderUtils.JAVAX_FACES_LIBRARY_NAME.equals(libraryName) &&

+                ResourceLoaderUtils.JSF_JS_RESOURCE_NAME.equals(resourceName))

+        {

+            // InternalClassLoaderResourceLoader will serve it, so return null in this case.

+            return null;

+        } else if (_developmentStage && libraryName != null &&

+                ResourceLoaderUtils.MYFACES_LIBRARY_NAME.equals(libraryName) &&

+                ResourceLoaderUtils.MYFACES_JS_RESOURCE_NAME.equals(resourceName)) {

+            // InternalClassLoaderResourceLoader will serve it, so return null in this case.

+             return null;

+        } else

+        {

+            return new ResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion);

+        }

+    }

+

+    /**

+     * Returns the ClassLoader to use when looking up resources under the top level package. By default, this is the

+     * context class loader.

+     * 

+     * @return the ClassLoader used to lookup resources

+     */

+    protected ClassLoader getClassLoader()

+    {

+        return ClassLoaderUtils.getDefaultClassLoader();

+    }

+

+    @Override

+    public boolean libraryExists(String libraryName)

+    {

+        if (getPrefix() != null && !"".equals(getPrefix()))

+        {

+            URL url = getClassLoader().getResource(getPrefix() + '/' + libraryName);

+            if (url != null)

+            {

+                return true;

+            }

+        }

+        else

+        {

+            URL url = getClassLoader().getResource(libraryName);

+            if (url != null)

+            {

+                return true;

+            }

+        }

+        return false;

+    }

+

+    /**

+     * <p>Determines whether the given URL resource protocol refers to a JAR file. Note that

+     * BEA WebLogic and IBM WebSphere don't use the "jar://" protocol for some reason even

+     * though you can treat these resources just like normal JAR files, i.e. you can ignore

+     * the difference between these protocols after this method has returned.</p>

+     *

+     * @param protocol the URL resource protocol you want to check

+     *

+     * @return <code>true</code> if the given URL resource protocol refers to a JAR file,

+     *          <code>false</code> otherwise

+     */

+    /*

+    private static boolean isJarResourceProtocol(String protocol)

+    {

+        // Websphere uses the protocol "wsjar://" and Weblogic uses the protocol "zip://".

+        return "jar".equals(protocol) || "wsjar".equals(protocol) || "zip".equals(protocol); 

+    }*/

+

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ExternalContextResourceLoader.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ExternalContextResourceLoader.java
new file mode 100644
index 0000000..43f9782
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ExternalContextResourceLoader.java
@@ -0,0 +1,205 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+import javax.faces.context.FacesContext;

+import java.io.InputStream;

+import java.net.MalformedURLException;

+import java.net.URL;

+import java.util.Iterator;

+import java.util.Set;

+import java.util.regex.Pattern;

+

+/**

+ * A resource loader implementation which loads resources from the webapp root. It uses the methods on ExternalContext

+ * for handle resources.

+ * 

+ */

+public class ExternalContextResourceLoader extends ResourceLoader

+{

+    /**

+     * It checks version like this: /1/, /1_0/, /1_0_0/, /100_100/

+     * 

+     * Used on getLibraryVersion to filter resource directories

+     **/

+    protected static Pattern VERSION_CHECKER = Pattern.compile("/\\p{Digit}+(_\\p{Digit}*)*/");

+

+    /**

+     * It checks version like this: /1.js, /1_0.js, /1_0_0.js, /100_100.js

+     * 

+     * Used on getResourceVersion to filter resources

+     **/

+    protected static Pattern RESOURCE_VERSION_CHECKER = Pattern.compile("/\\p{Digit}+(_\\p{Digit}*)*\\..*");

+

+    public ExternalContextResourceLoader(String prefix)

+    {

+        super(prefix);

+    }

+

+    protected Set<String> getResourcePaths(String path)

+    {

+        return FacesContext.getCurrentInstance().getExternalContext().getResourcePaths(getPrefix() + '/' + path);

+    }

+

+    @Override

+    public String getResourceVersion(String path)

+    {

+        String resourceVersion = null;

+        Set<String> resourcePaths = this.getResourcePaths(path);

+        if (getPrefix() != null)

+            path = getPrefix() + '/' + path;

+

+        if (null != resourcePaths && !resourcePaths.isEmpty())

+        {

+            // resourceVersion = // execute the comment

+            // Look in the resourcePaths for versioned resources.

+            // If one or more versioned resources are found, take

+            // the one with the "highest" version number as the value

+            // of resourceVersion. If no versioned libraries

+            // are found, let resourceVersion remain null.

+            for (String resourcePath : resourcePaths)

+            {

+                String version = resourcePath.substring(path.length());

+

+                if (RESOURCE_VERSION_CHECKER.matcher(version).matches())

+                {

+                    version = version.substring(1, version.lastIndexOf('.'));

+                    if (resourceVersion == null)

+                    {

+                        resourceVersion = version;

+                    }

+                    else if (getVersionComparator().compare(resourceVersion, version) < 0)

+                    {

+                        resourceVersion = version;

+                    }

+                }

+            }

+            //Since it is a directory and no version was found, set as invalid

+            if (resourceVersion == null)

+            {

+                resourceVersion = VERSION_INVALID;

+            }

+        }

+        return resourceVersion;

+    }

+

+    @Override

+    public String getLibraryVersion(String path)

+    {

+        String libraryVersion = null;

+        Set<String> libraryPaths = this.getResourcePaths(path);

+        path = getPrefix() + '/' + path;

+        if (null != libraryPaths && !libraryPaths.isEmpty())

+        {

+            // Look in the libraryPaths for versioned libraries.

+            // If one or more versioned libraries are found, take

+            // the one with the "highest" version number as the value

+            // of libraryVersion. If no versioned libraries

+            // are found, let libraryVersion remain null.

+

+            for (Iterator<String> it = libraryPaths.iterator(); it.hasNext();)

+            {

+                String libraryPath = it.next();

+                String version = libraryPath.substring(path.length());

+

+                if (VERSION_CHECKER.matcher(version).matches())

+                {

+                    version = version.substring(1, version.length() - 1);

+                    if (libraryVersion == null)

+                    {

+                        libraryVersion = version;

+                    }

+                    else if (getVersionComparator().compare(libraryVersion, version) < 0)

+                    {

+                        libraryVersion = version;

+                    }

+                }

+            }

+        }

+        return libraryVersion;

+    }

+

+    @Override

+    public URL getResourceURL(ResourceMeta resourceMeta)

+    {

+        try

+        {

+            return FacesContext.getCurrentInstance().getExternalContext().getResource(

+                getPrefix() + '/' + resourceMeta.getResourceIdentifier());

+        }

+        catch (MalformedURLException e)

+        {

+            return null;

+        }

+    }

+

+    @Override

+    public InputStream getResourceInputStream(ResourceMeta resourceMeta)

+    {

+        return FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(

+            getPrefix() + '/' + resourceMeta.getResourceIdentifier());

+    }

+

+    @Override

+    public ResourceMeta createResourceMeta(String prefix, String libraryName, String libraryVersion,

+                                           String resourceName, String resourceVersion)

+    {

+        return new ResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion);

+    }

+

+    @Override

+    public boolean libraryExists(String libraryName)

+    {

+        if (getPrefix() != null && !"".equals(getPrefix()))

+        {

+            try

+            {

+                URL url =

+                    FacesContext.getCurrentInstance().getExternalContext().getResource(

+                        getPrefix() + '/' + libraryName);

+                if (url != null)

+                {

+                    return true;

+                }

+            }

+            catch (MalformedURLException e)

+            {

+                return false;

+            }

+        }

+        else

+        {

+            try

+            {

+

+                URL url = FacesContext.getCurrentInstance().getExternalContext().getResource(libraryName);

+

+                if (url != null)

+                {

+                    return true;

+                }

+            }

+            catch (MalformedURLException e)

+            {

+                return false;

+            }

+        }

+        return false;

+    }

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/FacesServletMapping.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/FacesServletMapping.java
new file mode 100644
index 0000000..d6a1d72
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/FacesServletMapping.java
@@ -0,0 +1,159 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.resources;
+
+/**
+ * Represents a mapping entry of the FacesServlet in the web.xml
+ * configuration file.
+ */
+public class FacesServletMapping
+{
+
+    /**
+     * The path ("/faces", for example) which has been specified in the
+     * url-pattern of the FacesServlet mapping.
+     */
+    private String prefix;
+
+    /**
+     * The extension (".jsf", for example) which has been specified in the
+     * url-pattern of the FacesServlet mapping.
+     */
+    private String extension;
+
+    /**
+     * Creates a new FacesServletMapping object using prefix mapping.
+     *
+     * @param path The path ("/faces", for example) which has been specified
+     *             in the url-pattern of the FacesServlet mapping.
+     * @return a newly created FacesServletMapping
+     */
+    public static FacesServletMapping createPrefixMapping(String path)
+    {
+        FacesServletMapping mapping = new FacesServletMapping();
+        mapping.setPrefix(path);
+        return mapping;
+    }
+
+    /**
+     * Creates a new FacesServletMapping object using extension mapping.
+     *
+     * @param path The extension (".jsf", for example) which has been
+     *             specified in the url-pattern of the FacesServlet mapping.
+     * @return a newly created FacesServletMapping
+     */
+    public static FacesServletMapping createExtensionMapping(
+        String extension)
+    {
+        FacesServletMapping mapping = new FacesServletMapping();
+        mapping.setExtension(extension);
+        return mapping;
+    }
+
+    /**
+     * Returns the path ("/faces", for example) which has been specified in
+     * the url-pattern of the FacesServlet mapping. If this mapping is based
+     * on an extension, <code>null</code> will be returned. Note that this
+     * path is not the same as the specified url-pattern as the trailing
+     * "/*" is omitted.
+     *
+     * @return the path which has been specified in the url-pattern
+     */
+    public String getPrefix()
+    {
+        return prefix;
+    }
+
+    /**
+     * Sets the path ("/faces/", for example) which has been specified in
+     * the url-pattern.
+     *
+     * @param path The path which has been specified in the url-pattern
+     */
+    public void setPrefix(String path)
+    {
+        this.prefix = path;
+    }
+
+    /**
+     * Returns the extension (".jsf", for example) which has been specified
+     * in the url-pattern of the FacesServlet mapping. If this mapping is
+     * not based on an extension, <code>null</code> will be returned.
+     *
+     * @return the extension which has been specified in the url-pattern
+     */
+    public String getExtension()
+    {
+        return extension;
+    }
+
+    /**
+     * Sets the extension (".jsf", for example) which has been specified in
+     * the url-pattern of the FacesServlet mapping.
+     *
+     * @param extension The extension which has been specified in the url-pattern
+     */
+    public void setExtension(String extension)
+    {
+        this.extension = extension;
+    }
+
+    /**
+     * Indicates whether this mapping is based on an extension (e.g.
+     * ".jsp").
+     *
+     * @return <code>true</code>, if this mapping is based is on an
+     *         extension, <code>false</code> otherwise
+     */
+    public boolean isExtensionMapping()
+    {
+        return extension != null;
+    }
+
+    /**
+     * Indicates whether this mapping is based on a prefix (e.g.
+     * /faces/*").
+     *
+     * @return <code>true</code>, if this mapping is based is on a
+     *         prefix, <code>false</code> otherwise
+     */
+    public boolean isPrefixMapping()
+    {
+        return prefix != null;
+    }
+
+    /**
+     * Returns the url-pattern entry for this servlet mapping.
+     *
+     * @return the url-pattern entry for this servlet mapping
+     */
+    public String getUrlPattern()
+    {
+        if (isExtensionMapping())
+        {
+            return "*" + extension;
+        }
+        else
+        {
+            return prefix + "/*";
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceHandlerCache.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceHandlerCache.java
new file mode 100644
index 0000000..c8326bf
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceHandlerCache.java
@@ -0,0 +1,241 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+import javax.faces.application.ProjectStage;

+import javax.faces.context.ExternalContext;

+import javax.faces.context.FacesContext;

+import java.util.Collections;

+import java.util.LinkedHashMap;

+import java.util.Map;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+public class ResourceHandlerCache

+{

+    private static final Logger log = Logger

+            .getLogger(ResourceHandlerCache.class.getName());

+

+    private Boolean _resourceCacheEnabled = null;

+    private Map<ResourceKey, ResourceValue> _resourceCacheMap = null;

+

+    private static final String RESOURCE_HANDLER_CACHE_SIZE_ATTRIBUTE = "org.apache.myfaces.RESOURCE_HANDLER_CACHE_SIZE";

+    private static final int RESOURCE_HANDLER_CACHE_DEFAULT_SIZE = 500;

+

+    private static final String RESOURCE_HANDLER_CACHE_ENABLED_ATTRIBUTE = "org.apache.myfaces.RESOURCE_HANDLER_CACHE_ENABLED";

+    private static final boolean RESOURCE_HANDLER_CACHE_ENABLED_DEFAULT = true;

+

+    public ResourceValue getResource(String resourceName, String libraryName,

+            String contentType)

+    {

+        if (!isResourceCachingEnabled() || _resourceCacheMap == null)

+            return null;

+

+        if (log.isLoggable(Level.FINE))

+            log.log(Level.FINE, "Attemping to get resource from cache for "

+                    + resourceName);

+

+        ResourceKey key = new ResourceKey(resourceName, libraryName,

+                contentType);

+

+        return _resourceCacheMap.get(key);

+    }

+    

+    public boolean containsResource(String resourceName, String libraryName,

+            String contentType)

+    {

+        if (!isResourceCachingEnabled() || _resourceCacheMap == null)

+            return false;

+        ResourceKey key = new ResourceKey(resourceName, libraryName,

+                contentType);

+        return _resourceCacheMap.containsKey(key);

+    }

+

+    public void putResource(String resourceName, String libraryName,

+            String contentType, ResourceMeta resource, ResourceLoader loader)

+    {

+        if (!isResourceCachingEnabled())

+            return;

+

+        if (log.isLoggable(Level.FINE))

+            log.log(Level.FINE, "Attemping to put resource to cache for "

+                    + resourceName);

+

+        if (_resourceCacheMap == null)

+        {

+            if (log.isLoggable(Level.FINE))

+                log.log(Level.FINE, "Initializing resource cache map");

+            _resourceCacheMap = Collections

+                    .synchronizedMap(new _ResourceMap<ResourceKey, ResourceValue>(

+                            getMaxSize()));

+        }

+

+        _resourceCacheMap.put(new ResourceKey(resourceName, libraryName,

+                contentType), new ResourceValue(resource, loader));

+    }

+

+    private boolean isResourceCachingEnabled()

+    {

+        if (_resourceCacheEnabled == null)

+        {

+            FacesContext facesContext = FacesContext.getCurrentInstance();

+

+            //first, check to make sure that ProjectStage is production, if not, skip caching

+            if (!facesContext.isProjectStage(ProjectStage.Production))

+            {

+                return _resourceCacheEnabled = Boolean.FALSE;

+            }

+

+            ExternalContext externalContext = facesContext.getExternalContext();

+            if (externalContext == null)

+                return false; //don't cache right now, but don't disable it yet either

+

+            //if in production, make sure that the cache is not explicitly disabled via context param

+            String configParam = externalContext

+                    .getInitParameter(ResourceHandlerCache.RESOURCE_HANDLER_CACHE_ENABLED_ATTRIBUTE);

+            _resourceCacheEnabled = configParam == null ? ResourceHandlerCache.RESOURCE_HANDLER_CACHE_ENABLED_DEFAULT

+                    : Boolean.parseBoolean(configParam);

+

+            if (log.isLoggable(Level.FINE))

+            {

+                log.log(Level.FINE, "MyFaces Resource Caching Enabled="

+                        + _resourceCacheEnabled);

+            }

+        }

+        return _resourceCacheEnabled;

+    }

+

+    private int getMaxSize()

+    {

+        ExternalContext externalContext = FacesContext.getCurrentInstance()

+                .getExternalContext();

+

+        String configParam = externalContext == null ? null : externalContext

+                .getInitParameter(RESOURCE_HANDLER_CACHE_SIZE_ATTRIBUTE);

+        return configParam == null ? RESOURCE_HANDLER_CACHE_DEFAULT_SIZE

+                : Integer.parseInt(configParam);

+    }

+

+    public static class ResourceKey

+    {

+        private String resourceName;

+        private String libraryName;

+        private String contentType;

+

+        public ResourceKey(String resourceName, String libraryName,

+                String contentType)

+        {

+            this.resourceName = resourceName;

+            this.libraryName = libraryName;

+            this.contentType = contentType;

+        }

+

+        @Override

+        public int hashCode()

+        {

+            final int prime = 31;

+            int result = 1;

+            result = prime * result

+                    + ((contentType == null) ? 0 : contentType.hashCode());

+            result = prime * result

+                    + ((libraryName == null) ? 0 : libraryName.hashCode());

+            result = prime * result

+                    + ((resourceName == null) ? 0 : resourceName.hashCode());

+            return result;

+        }

+

+        @Override

+        public boolean equals(Object obj)

+        {

+            if (this == obj)

+                return true;

+            if (obj == null)

+                return false;

+            if (getClass() != obj.getClass())

+                return false;

+            ResourceKey other = (ResourceKey) obj;

+            if (contentType == null)

+            {

+                if (other.contentType != null)

+                    return false;

+            }

+            else if (!contentType.equals(other.contentType))

+                return false;

+            if (libraryName == null)

+            {

+                if (other.libraryName != null)

+                    return false;

+            }

+            else if (!libraryName.equals(other.libraryName))

+                return false;

+            if (resourceName == null)

+            {

+                if (other.resourceName != null)

+                    return false;

+            }

+            else if (!resourceName.equals(other.resourceName))

+                return false;

+            return true;

+        }

+    }

+    

+    public static class ResourceValue

+    {

+        private ResourceMeta resourceMeta;

+        

+        private ResourceLoader resourceLoader;

+

+        public ResourceValue(ResourceMeta resourceMeta,

+                ResourceLoader resourceLoader)

+        {

+            super();

+            this.resourceMeta = resourceMeta;

+            this.resourceLoader = resourceLoader;

+        }

+

+        public ResourceMeta getResourceMeta()

+        {

+            return resourceMeta;

+        }

+

+        public ResourceLoader getResourceLoader()

+        {

+            return resourceLoader;

+        }

+    }

+

+    private static class _ResourceMap<K, V> extends LinkedHashMap<K, V>

+    {

+        private static final long serialVersionUID = 1L;

+        private int maxCapacity;

+

+        public _ResourceMap(int cacheSize)

+        {

+            // create map at max capacity and 1.1 load factor to avoid rehashing

+            super(cacheSize + 1, 1.1f, true);

+            maxCapacity = cacheSize;

+        }

+

+        @Override

+        protected boolean removeEldestEntry(Map.Entry<K, V> eldest)

+        {

+            return size() > maxCapacity;

+        }

+    }

+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceHandlerImpl.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceHandlerImpl.java
new file mode 100644
index 0000000..1e2ec02
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceHandlerImpl.java
@@ -0,0 +1,567 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.resources;
+
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassLoaderUtils;
+import org.apache.myfaces.renderkit.ErrorPageWriter;
+
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.context.FacesContext;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * DOCUMENT ME!
+ *
+ * @author Simon Lessard (latest modification by $Author: slessard $)
+ *
+ * @version $Revision: 696515 $ $Date: 2008-09-17 19:37:53 -0500 (mer., 17 sept. 2008) $
+ */
+public abstract class ResourceHandlerImpl extends ResourceHandler
+{
+
+    private static final String IS_RESOURCE_REQUEST = "org.apache.myfaces.IS_RESOURCE_REQUEST";
+
+    private ResourceHandlerSupport _resourceHandlerSupport;
+
+    private ResourceHandlerCache _resourceHandlerCache;
+
+    //private static final Log log = LogFactory.getLog(ResourceHandlerImpl.class);
+    private static final Logger log = Logger.getLogger(ResourceHandlerImpl.class.getName());
+
+    private static final int _BUFFER_SIZE = 2048;
+
+    @Override
+    public Resource createResource(String resourceName)
+    {
+        return createResource(resourceName, null);
+    }
+
+    @Override
+    public Resource createResource(String resourceName, String libraryName)
+    {
+        return createResource(resourceName, libraryName, null);
+    }
+
+    @Override
+    public Resource createResource(String resourceName, String libraryName,
+            String contentType)
+    {
+        Resource resource = null;
+
+        if (contentType == null)
+        {
+            //Resolve contentType using ExternalContext.getMimeType
+            contentType = FacesContext.getCurrentInstance().getExternalContext().getMimeType(resourceName);
+        }
+
+        if(getResourceLoaderCache().containsResource(resourceName, libraryName, contentType))
+        {
+            ResourceHandlerCache.ResourceValue resourceValue = getResourceLoaderCache().getResource(resourceName, libraryName, contentType);
+            resource = new ResourceImpl(resourceValue.getResourceMeta(), resourceValue.getResourceLoader(),
+                    getResourceHandlerSupport(), contentType);
+        }
+        else
+        {
+            for (ResourceLoader loader : getResourceHandlerSupport()
+                    .getResourceLoaders())
+            {
+                ResourceMeta resourceMeta = deriveResourceMeta(loader,
+                        resourceName, libraryName);
+
+                if (resourceMeta != null)
+                {
+                    resource = new ResourceImpl(resourceMeta, loader,
+                            getResourceHandlerSupport(), contentType);
+
+                    getResourceLoaderCache().putResource(resourceName, libraryName, contentType, resourceMeta, loader);
+                    break;
+                }
+            }
+        }
+
+        return resource;
+    }
+
+    /**
+     * This method try to create a ResourceMeta for a specific resource
+     * loader. If no library, or resource is found, just return null,
+     * so the algorithm in createResource can continue checking with the
+     * next registered ResourceLoader.
+     */
+    protected ResourceMeta deriveResourceMeta(ResourceLoader resourceLoader,
+            String resourceName, String libraryName)
+    {
+        String localePrefix = getLocalePrefixForLocateResource();
+        String resourceVersion = null;
+        String libraryVersion = null;
+        ResourceMeta resourceId = null;
+
+        //1. Try to locate resource in a localized path
+        if (localePrefix != null)
+        {
+            if (null != libraryName)
+            {
+                String pathToLib = localePrefix + '/' + libraryName;
+                libraryVersion = resourceLoader.getLibraryVersion(pathToLib);
+
+                if (null != libraryVersion)
+                {
+                    String pathToResource = localePrefix + '/'
+                            + libraryName + '/' + libraryVersion + '/'
+                            + resourceName;
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                }
+                else
+                {
+                    String pathToResource = localePrefix + '/'
+                            + libraryName + '/' + resourceName;
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                }
+
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion)))
+                {
+                    resourceId = resourceLoader.createResourceMeta(localePrefix, libraryName,
+                            libraryVersion, resourceName, resourceVersion);
+                }
+            }
+            else
+            {
+                resourceVersion = resourceLoader
+                        .getResourceVersion(localePrefix + '/'+ resourceName);
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion)))
+                {
+                    resourceId = resourceLoader.createResourceMeta(localePrefix, null, null,
+                            resourceName, resourceVersion);
+                }
+            }
+
+            if (resourceId != null)
+            {
+                URL url = resourceLoader.getResourceURL(resourceId);
+                if (url == null)
+                {
+                    resourceId = null;
+                }
+            }
+        }
+
+        //2. Try to localize resource in a non localized path
+        if (resourceId == null)
+        {
+            if (null != libraryName)
+            {
+                libraryVersion = resourceLoader.getLibraryVersion(libraryName);
+
+                if (null != libraryVersion)
+                {
+                    String pathToResource = (libraryName + '/' + libraryVersion
+                            + '/' + resourceName);
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                }
+                else
+                {
+                    String pathToResource = (libraryName + '/'
+                            + resourceName);
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                }
+
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion)))
+                {
+                    resourceId = resourceLoader.createResourceMeta(null, libraryName,
+                            libraryVersion, resourceName, resourceVersion);
+                }
+            }
+            else
+            {
+                resourceVersion = resourceLoader
+                        .getResourceVersion(resourceName);
+
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion)))
+                {
+                    resourceId = resourceLoader.createResourceMeta(null, null, null,
+                            resourceName, resourceVersion);
+                }
+            }
+
+            if (resourceId != null)
+            {
+                URL url = resourceLoader.getResourceURL(resourceId);
+                if (url == null)
+                {
+                    resourceId = null;
+                }
+            }
+        }
+
+        return resourceId;
+    }
+
+    @Override
+    public String getRendererTypeForResourceName(String resourceName)
+    {
+        if (resourceName.endsWith(".js"))
+            return "javax.faces.resource.Script";
+        else if (resourceName.endsWith(".css"))
+            return "javax.faces.resource.Stylesheet";
+        return null;
+    }
+
+    /**
+     *  Handle the resource request, writing in the output.
+     *
+     *  This method implements an algorithm semantically identical to
+     *  the one described on the javadoc of ResourceHandler.handleResourceRequest
+     */
+    @Override
+    public void handleResourceRequest(FacesContext facesContext) throws IOException
+    {
+        try
+        {
+            String resourceBasePath = getResourceHandlerSupport()
+                    .calculateResourceBasePath(facesContext);
+
+            if (resourceBasePath == null)
+            {
+                // No base name could be calculated, so no further
+                //advance could be done here. HttpServletResponse.SC_NOT_FOUND
+                //cannot be returned since we cannot extract the
+                //resource base name
+                return;
+            }
+
+            // We neet to get an instance of HttpServletResponse, but sometimes
+            // the response object is wrapped by several instances of
+            // ServletResponseWrapper (like ResponseSwitch).
+            // Since we are handling a resource, we can expect to get an
+            // HttpServletResponse.
+            Object response = facesContext.getExternalContext().getResponse();
+
+            //TODO merge the servlet response determination in
+            HttpServletResponse httpServletResponse = (HttpServletResponse) response;
+            if (httpServletResponse == null)
+            {
+                throw new IllegalStateException("Could not obtain an instance of HttpServletResponse.");
+            }
+
+            if (isResourceIdentifierExcluded(facesContext, resourceBasePath))
+            {
+                httpServletResponse.setStatus(HttpServletResponse.SC_NOT_FOUND);
+                return;
+            }
+
+            String resourceName = null;
+            if (resourceBasePath.startsWith(ResourceHandler.RESOURCE_IDENTIFIER))
+            {
+                resourceName = resourceBasePath
+                        .substring(ResourceHandler.RESOURCE_IDENTIFIER.length() + 1);
+            }
+            else
+            {
+                //Does not have the conditions for be a resource call
+                httpServletResponse.setStatus(HttpServletResponse.SC_NOT_FOUND);
+                return;
+            }
+
+            String libraryName = facesContext.getExternalContext()
+                    .getRequestParameterMap().get("ln");
+
+            Resource resource = null;
+            if (libraryName != null)
+            {
+                //log.info("libraryName=" + libraryName);
+                resource = facesContext.getApplication().getResourceHandler().createResource(resourceName, libraryName);
+            }
+            else
+            {
+                resource = facesContext.getApplication().getResourceHandler().createResource(resourceName);
+            }
+
+            if (resource == null)
+            {
+                httpServletResponse.setStatus(HttpServletResponse.SC_NOT_FOUND);
+                return;
+            }
+
+            if (!resource.userAgentNeedsUpdate(facesContext))
+            {
+                httpServletResponse.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
+                return;
+            }
+
+            httpServletResponse.setContentType(resource.getContentType());
+
+            Map<String, String> headers = resource.getResponseHeaders();
+
+            for (Map.Entry<String, String> entry : headers.entrySet())
+            {
+                httpServletResponse.setHeader(entry.getKey(), entry.getValue());
+            }
+
+            //serve up the bytes (taken from trinidad ResourceServlet)
+            try
+            {
+                InputStream in = resource.getInputStream();
+                OutputStream out = httpServletResponse.getOutputStream();
+                byte[] buffer = new byte[_BUFFER_SIZE];
+
+                try
+                {
+                    int count = pipeBytes(in, out, buffer);
+                    //set the content lenght
+                    httpServletResponse.setContentLength(count);
+                }
+                finally
+                {
+                    try
+                    {
+                        in.close();
+                    }
+                    finally
+                    {
+                        out.close();
+                    }
+                }
+            }
+            catch (IOException e)
+            {
+                //TODO: Log using a localized message (which one?)
+                if (log.isLoggable(Level.SEVERE))
+                    log.severe("Error trying to load resource " + resourceName
+                            + " with library " + libraryName + " :"
+                            + e.getMessage());
+                httpServletResponse.setStatus(HttpServletResponse.SC_NOT_FOUND);
+            }
+        }
+        catch (Throwable ex)
+        {
+            // handle the Throwable accordingly. Maybe generate an error page.
+            // FIXME we are creating a html error page for a non html request here
+            // shouln't we do something better? -=Jakob Korherr=-
+            ErrorPageWriter.handleThrowable(facesContext, ex);
+        }
+    }
+
+    /**
+     * Reads the specified input stream into the provided byte array storage and
+     * writes it to the output stream.
+     */
+    private static int pipeBytes(InputStream in, OutputStream out, byte[] buffer)
+            throws IOException
+    {
+        int count = 0;
+        int length;
+
+        while ((length = (in.read(buffer))) >= 0)
+        {
+            out.write(buffer, 0, length);
+            count += length;
+        }
+        return count;
+    }
+
+    @Override
+    public boolean isResourceRequest(FacesContext facesContext)
+    {
+        // Since this method could be called many times we save it
+        //on request map so the first time is calculated it remains
+        //alive until the end of the request
+        Boolean value = (Boolean) facesContext.getAttributes().get(IS_RESOURCE_REQUEST);
+
+        if (value != null && value)
+        {
+            //return the saved value
+            return value;
+        }
+        else
+        {
+            String resourceBasePath = getResourceHandlerSupport()
+                    .calculateResourceBasePath(facesContext);
+
+            if (resourceBasePath != null
+                    && resourceBasePath.startsWith(ResourceHandler.RESOURCE_IDENTIFIER))
+            {
+                facesContext.getAttributes().put(IS_RESOURCE_REQUEST, Boolean.TRUE);
+                return true;
+            }
+            else
+            {
+                facesContext.getAttributes().put(IS_RESOURCE_REQUEST, Boolean.FALSE);
+                return false;
+            }
+        }
+    }
+
+    protected String getLocalePrefixForLocateResource()
+    {
+        String localePrefix = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        String bundleName = context.getApplication().getMessageBundle();
+
+        if (null != bundleName)
+        {
+            Locale locale = context.getApplication().getViewHandler()
+                    .calculateLocale(context);
+
+            ResourceBundle bundle = ResourceBundle
+                    .getBundle(bundleName, locale, ClassLoaderUtils.getDefaultClassLoader());
+
+            if (bundle != null)
+            {
+                try
+                {
+                    localePrefix = bundle.getString(ResourceHandler.LOCALE_PREFIX);
+                }
+                catch (MissingResourceException e)
+                {
+                    // Ignore it and return null
+                }
+            }
+        }
+        return localePrefix;
+    }
+
+    private static ResourceBundle getBundle(FacesContext facesContext, Locale locale, String bundleName)
+    {
+        try
+        {
+            // First we try the JSF implementation class loader
+            return ResourceBundle.getBundle(bundleName, locale, facesContext.getClass().getClassLoader());
+        }
+        catch (MissingResourceException ignore1)
+        {
+            try
+            {
+                // Next we try the JSF API class loader
+                return ResourceBundle.getBundle(bundleName, locale, ResourceHandlerImpl.class.getClassLoader());
+            }
+            catch (MissingResourceException ignore2)
+            {
+                try
+                {
+                    // Last resort is the context class loader
+                    return ResourceBundle.getBundle(bundleName, locale, ClassLoaderUtils.getDefaultClassLoader());
+                }
+                catch (MissingResourceException damned)
+                {
+                    return null;
+                }
+            }
+        }
+    }
+
+    protected boolean isResourceIdentifierExcluded(FacesContext context,
+            String resourceIdentifier)
+    {
+        String value = context.getExternalContext().getInitParameter(
+                RESOURCE_EXCLUDES_PARAM_NAME);
+        if (value == null)
+        {
+            value = RESOURCE_EXCLUDES_DEFAULT_VALUE;
+        }
+        //TODO: optimize this code
+        String[] extensions = value.split("\\s+");
+        for (int i = 0; i < extensions.length; i++)
+        {
+            if (resourceIdentifier.endsWith(extensions[i]))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Check if a library exists or not. This is done delegating
+     * to each ResourceLoader used, because each one has a different
+     * prefix and way to load resources.
+     *
+     */
+    @Override
+    public boolean libraryExists(String libraryName)
+    {
+        String localePrefix = getLocalePrefixForLocateResource();
+
+        String pathToLib = null;
+
+        if (localePrefix != null)
+        {
+            //Check with locale
+            pathToLib = localePrefix + '/' + libraryName;
+
+            for (ResourceLoader loader : getResourceHandlerSupport()
+                    .getResourceLoaders())
+            {
+                if (loader.libraryExists(pathToLib))
+                {
+                    return true;
+                }
+            }
+        }
+
+        //Check without locale
+        for (ResourceLoader loader : getResourceHandlerSupport()
+                .getResourceLoaders())
+        {
+            if (loader.libraryExists(libraryName))
+            {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * @param resourceHandlerSupport
+     *            the resourceHandlerSupport to set
+     */
+    public void setResourceHandlerSupport(
+            ResourceHandlerSupport resourceHandlerSupport)
+    {
+        _resourceHandlerSupport = resourceHandlerSupport;
+    }
+
+    /**
+     * @return the resourceHandlerSupport
+     */
+    protected abstract ResourceHandlerSupport getResourceHandlerSupport();
+
+    private ResourceHandlerCache getResourceLoaderCache()
+    {
+        if (_resourceHandlerCache == null)
+            _resourceHandlerCache = new ResourceHandlerCache();
+        return _resourceHandlerCache;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceHandlerSupport.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceHandlerSupport.java
new file mode 100644
index 0000000..1ee9365
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceHandlerSupport.java
@@ -0,0 +1,86 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+import javax.faces.context.FacesContext;

+

+/**

+ * A utility class to isolate a ResourceHandler implementation from its

+ * underlying implementation

+ * 

+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)

+ * @version $Revision: 891494 $ $Date: 2009-12-16 19:42:18 -0500 (Mié, 16 Dic 2009) $

+ */

+public abstract class ResourceHandlerSupport

+{

+

+    /**

+     * Calculate the resource base path.

+     * 

+     * It should extract a string like:

+     * 

+     * ResourceHandler.RESOURCE_IDENTIFIER + '/' + getResourceName()

+     * 

+     * For example:

+     * 

+     * /javax.faces.resource/image.jpg

+     * 

+     * This is used on ResourceHandler.handleResourceRequest()

+     * 

+     */

+    public abstract String calculateResourceBasePath(FacesContext facesContext);

+

+    /**

+     * Return an array of resource loaders used to find resources

+     * using the standard. The order of ResourceLoaders define

+     * its precedence. 

+     * 

+     * @return

+     */

+    public abstract ResourceLoader[] getResourceLoaders();

+    

+    /**

+     * Check if the mapping used is done using extensions (.xhtml, .jsf)

+     * or if it is not (/faces/*)

+     * @return

+     */

+    public abstract boolean isExtensionMapping();

+    

+    /**

+     * Get the mapping used as prefix(/faces) or sufix(.jsf)

+     * 

+     * @return

+     */

+    public abstract String getMapping();

+    

+    /**

+     * Return the time when the app started. This is useful to set the

+     * "Last-Modified" header in some specific cases.

+     * 

+     * @return

+     */

+    public abstract long getStartupTime();

+    

+    /**

+     * Return the time that should be set on "Expires" header in a resource.

+     * 

+     * @return

+     */

+    public abstract long getMaxTimeExpires();

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceImpl.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceImpl.java
new file mode 100644
index 0000000..2dcad27
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceImpl.java
@@ -0,0 +1,316 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+import javax.el.ELContext;

+import javax.el.ELException;

+import javax.el.ValueExpression;

+import javax.faces.application.ProjectStage;

+import javax.faces.application.Resource;

+import javax.faces.application.ResourceHandler;

+import javax.faces.context.FacesContext;

+import javax.faces.event.ExceptionQueuedEvent;

+import javax.faces.event.ExceptionQueuedEventContext;

+import java.io.IOException;

+import java.io.InputStream;

+import java.io.PushbackInputStream;

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+/**

+ * Default implementation for resources

+ *

+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)

+ * @version $Revision: 957739 $ $Date: 2010-06-24 17:27:40 -0500 (Jue, 24 Jun 2010) $

+ */

+public class ResourceImpl extends Resource {

+

+

+    private ResourceMeta _resourceMeta;

+    private ResourceLoader _resourceLoader;

+    private ResourceHandlerSupport _resourceHandlerSupport;

+

+    public ResourceImpl(ResourceMeta resourceMeta,

+                        ResourceLoader resourceLoader, ResourceHandlerSupport support, String contentType) {

+        _resourceMeta = resourceMeta;

+        _resourceLoader = resourceLoader;

+        _resourceHandlerSupport = support;

+        setLibraryName(resourceMeta.getLibraryName());

+        setResourceName(resourceMeta.getResourceName());

+        setContentType(contentType);

+    }

+

+    public ResourceLoader getResourceLoader() {

+        return _resourceLoader;

+    }

+

+    @Override

+    public InputStream getInputStream() throws IOException {

+        if (couldResourceContainValueExpressions()) {

+            return new ValueExpressionFilterInputStream(

+                    getResourceLoader().getResourceInputStream(_resourceMeta));

+        } else {

+            return getResourceLoader().getResourceInputStream(_resourceMeta);

+        }

+    }

+

+    private boolean couldResourceContainValueExpressions() {

+        if (_resourceMeta.couldResourceContainValueExpressions()) {

+            return true;

+        } else {

+            //By default only css resource contain value expressions

+            String contentType = getContentType();

+

+            return ("text/css".equals(contentType));

+        }

+    }

+

+    private class ValueExpressionFilterInputStream extends InputStream {

+        private PushbackInputStream delegate;

+

+        public ValueExpressionFilterInputStream(InputStream in) {

+            super();

+            delegate = new PushbackInputStream(in, 255);

+        }

+

+        @Override

+        public int read() throws IOException {

+            int c1 = delegate.read();

+

+            if (c1 == -1) return -1;

+

+            if (((char) c1) == '#') {

+                int c2 = delegate.read();

+                if (c2 == -1) return -1;

+                if (((char) c2) == '{') {

+                    //It is a value expression. We need

+                    //to look for a occurrence of } to 

+                    //extract the expression and evaluate it,

+                    //the result should be unread.

+                    List<Integer> expressionList = new ArrayList<Integer>();

+                    int c3 = delegate.read();

+                    while (c3 != -1 && ((char) c3) != '}') {

+                        expressionList.add(c3);

+                        c3 = delegate.read();

+                    }

+

+                    if (c3 == -1) {

+                        //get back the data, because we can't

+                        //extract any value expression

+                        for (int i = 0; i < expressionList.size(); i++) {

+                            delegate.unread(expressionList.get(i));

+                        }

+                        delegate.unread(c2);

+                        return c1;

+                    } else {

+                        //EL expression found. Evaluate it and pushback

+                        //the result into the stream

+                        FacesContext context = FacesContext.getCurrentInstance();

+                        ELContext elContext = context.getELContext();

+                        try {

+                            ValueExpression ve = context.getApplication().

+                                    getExpressionFactory().createValueExpression(

+                                    elContext,

+                                    "#{" + convertToExpression(expressionList) + "}",

+                                    String.class);

+                            String value = (String) ve.getValue(elContext);

+

+                            for (int i = value.length() - 1; i >= 0; i--) {

+                                delegate.unread((int) value.charAt(i));

+                            }

+                        } catch (ELException e) {

+                            ExceptionQueuedEventContext equecontext = new ExceptionQueuedEventContext(context, e, null);

+                            context.getApplication().publishEvent(context, ExceptionQueuedEvent.class, equecontext);

+

+                            Logger log = Logger.getLogger(ResourceImpl.class.getName());

+                            if (log.isLoggable(Level.SEVERE))

+                                log.severe("Cannot evaluate EL expression " + convertToExpression(expressionList) + " in resource " + getLibraryName() + ":" + getResourceName());

+

+                            delegate.unread(c3);

+                            for (int i = expressionList.size() - 1; i >= 0; i--) {

+                                delegate.unread(expressionList.get(i));

+                            }

+                            delegate.unread(c2);

+                            return c1;

+                        }

+

+                        //read again

+                        return delegate.read();

+                    }

+                } else {

+                    delegate.unread(c2);

+                    return c1;

+                }

+            } else {

+                //just continue

+                return c1;

+            }

+        }

+

+        private String convertToExpression(List<Integer> expressionList) {

+            char[] exprArray = new char[expressionList.size()];

+

+            for (int i = 0; i < expressionList.size(); i++) {

+                exprArray[i] = (char) expressionList.get(i).intValue();

+            }

+            return String.valueOf(exprArray);

+        }

+    }

+

+    @Override

+    public String getRequestPath() {

+        String path;

+        if (_resourceHandlerSupport.isExtensionMapping()) {

+            path = ResourceHandler.RESOURCE_IDENTIFIER + '/' +

+                    getResourceName() + _resourceHandlerSupport.getMapping();

+        } else {

+            String mapping = _resourceHandlerSupport.getMapping();

+            path = ResourceHandler.RESOURCE_IDENTIFIER + '/' + getResourceName();

+            path = (mapping == null) ? path : mapping + path;

+        }

+

+        FacesContext facesContext = FacesContext.getCurrentInstance();

+        String metadata = null;

+        boolean useAmp = false;

+        if (getLibraryName() != null) {

+            metadata = "?ln=" + getLibraryName();

+            path = path + metadata;

+            useAmp = true;

+

+            if (!facesContext.isProjectStage(ProjectStage.Production)

+                    && ResourceLoaderUtils.JSF_JS_RESOURCE_NAME.equals(getResourceName())

+                    && ResourceLoaderUtils.JAVAX_FACES_LIBRARY_NAME.equals(getLibraryName())) {

+                // append &stage=?? for all ProjectStages except Production

+                path = path + "&stage=" + facesContext.getApplication().getProjectStage().toString();

+            }

+        }

+

+        return facesContext.getApplication().getViewHandler().getResourceURL(facesContext, path);

+    }

+

+    @Override

+    public Map<String, String> getResponseHeaders() {

+        FacesContext facesContext = FacesContext.getCurrentInstance();

+

+        if (facesContext.getApplication().getResourceHandler().isResourceRequest(facesContext)) {

+            Map<String, String> headers = new HashMap<String, String>();

+

+            long lastModified;

+            try {

+                lastModified = ResourceLoaderUtils.getResourceLastModified(this.getURL());

+            } catch (IOException e) {

+                lastModified = -1;

+            }

+

+            // Here we have two cases: If the file could contain EL Expressions

+            // the last modified time is the greatest value between application startup and

+            // the value from file.

+            if (this.couldResourceContainValueExpressions() &&

+                    lastModified < _resourceHandlerSupport.getStartupTime()) {

+                lastModified = _resourceHandlerSupport.getStartupTime();

+            } else if (_resourceMeta instanceof AliasResourceMetaImpl &&

+                    lastModified < _resourceHandlerSupport.getStartupTime()) {

+                // If the resource meta is aliased, the last modified time is the greatest 

+                // value between application startup and the value from file.

+                lastModified = _resourceHandlerSupport.getStartupTime();

+            }

+

+            if (lastModified >= 0) {

+                headers.put("Last-Modified", ResourceLoaderUtils.formatDateHeader(lastModified));

+

+                long expires;

+                if (facesContext.isProjectStage(ProjectStage.Development)) {

+                    // Force to expire now to prevent caching on development time.

+                    expires = System.currentTimeMillis();

+                } else {

+                    expires = System.currentTimeMillis() + _resourceHandlerSupport.getMaxTimeExpires();

+                }

+                headers.put("Expires", ResourceLoaderUtils.formatDateHeader(expires));

+            }

+

+            return headers;

+        } else {

+            //No need to return headers 

+            return Collections.emptyMap();

+        }

+    }

+

+    @Override

+    public URL getURL() {

+        return getResourceLoader().getResourceURL(_resourceMeta);

+    }

+

+    @Override

+    public boolean userAgentNeedsUpdate(FacesContext context) {

+        // RFC2616 says related to If-Modified-Since header the following:

+        //

+        // "... The If-Modified-Since request-header field is used with a method to 

+        // make it conditional: if the requested variant has not been modified since 

+        // the time specified in this field, an entity will not be returned from 

+        // the server; instead, a 304 (not modified) response will be returned 

+        // without any message-body..."

+        // 

+        // This method is called from ResourceHandlerImpl.handleResourceRequest and if

+        // returns false send a 304 Not Modified response.

+

+        String ifModifiedSinceString = context.getExternalContext().getRequestHeaderMap().get("If-Modified-Since");

+

+        if (ifModifiedSinceString == null) {

+            return true;

+        }

+

+        Long ifModifiedSince = ResourceLoaderUtils.parseDateHeader(ifModifiedSinceString);

+

+        if (ifModifiedSince == null) {

+            return true;

+        }

+

+        Long lastModified;

+        try {

+            lastModified = ResourceLoaderUtils.getResourceLastModified(this.getURL());

+        } catch (IOException exception) {

+            lastModified = -1L;

+        }

+

+        if (lastModified >= 0) {

+            if (this.couldResourceContainValueExpressions() &&

+                    lastModified < _resourceHandlerSupport.getStartupTime()) {

+                lastModified = _resourceHandlerSupport.getStartupTime();

+            }

+

+            // If the lastModified date is lower or equal than ifModifiedSince,

+            // the agent does not need to update.

+            // Note the lastModified time is set at milisecond precision, but when 

+            // the date is parsed and sent on ifModifiedSince, the exceding miliseconds

+            // are trimmed. So, we have to compare trimming this from the calculated

+            // lastModified time.

+            if ((lastModified - (lastModified % 1000)) <= ifModifiedSince) {

+                return false;

+            }

+        }

+

+        return true;

+    }

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoader.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoader.java
new file mode 100644
index 0000000..b7c75ce
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoader.java
@@ -0,0 +1,155 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+import java.io.InputStream;

+import java.net.URL;

+import java.util.Comparator;

+

+/**

+ * Base class for resource loaders.  Resource loaders can lookup resources 

+ * as URLs from arbitrary locations, including JAR files.

+ * 

+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)

+ * @version $Revision: 882702 $ $Date: 2009-11-20 15:16:07 -0500 (Vie, 20 Nov 2009) $

+ */

+public abstract class ResourceLoader

+{

+    

+    public static final String VERSION_INVALID = "INVALID";

+    

+    private String _prefix;

+    

+    public ResourceLoader(String prefix)

+    {

+        _prefix = prefix;

+    }

+

+    public abstract String getResourceVersion(String path);

+

+    /**

+     * Return the max available version found (if exists) or

+     * return null if no version available. 

+     */

+    public abstract String getLibraryVersion(String path);

+

+    /**

+     * Return the max available version found (if exists) or

+     * return null if no version available. 

+     */

+    public abstract URL getResourceURL(ResourceMeta resourceMeta);

+

+    public abstract InputStream getResourceInputStream(ResourceMeta resourceMeta);

+    

+    public abstract ResourceMeta createResourceMeta(String prefix, String libraryName, String libraryVersion,

+            String resourceName, String resourceVersion);

+    

+    public abstract boolean libraryExists(String libraryName);

+    

+    private Comparator<String> _versionComparator = null;

+

+    protected Comparator<String> getVersionComparator()

+    {

+        if (_versionComparator == null)

+        {

+            _versionComparator = new VersionComparator();

+        }

+        return _versionComparator;

+    }

+

+    protected void setVersionComparator(Comparator<String> versionComparator)

+    {

+        _versionComparator = versionComparator;

+    }

+

+    public class VersionComparator implements Comparator<String>

+    {

+

+        public int compare(String s1, String s2)

+        {

+            int n1 = 0;

+            int n2 = 0;

+            String o1 = s1;

+            String o2 = s2;

+

+            boolean p1 = true;

+            boolean p2 = true;

+

+            while (n1 == n2 && (p1 || p2))

+            {

+                int i1 = o1.indexOf('_');

+                int i2 = o2.indexOf('_');

+                if (i1 < 0)

+                {

+                    if (o1.length() > 0)

+                    {

+                        p1 = false;

+                        n1 = Integer.valueOf(o1);

+                        o1 = "";

+                    }

+                    else

+                    {

+                        p1 = false;

+                        n1 = 0;

+                    }

+                }

+                else

+                {

+                    n1 = Integer.valueOf(o1.substring(0, i1));

+                    o1 = o1.substring(i1 + 1);

+                }

+                if (i2 < 0)

+                {

+                    if (o2.length() > 0)

+                    {

+                        p2 = false;

+                        n2 = Integer.valueOf(o2);

+                        o2 = "";

+                    }

+                    else

+                    {

+                        p2 = false;

+                        n2 = 0;

+                    }

+                }

+                else

+                {

+                    n2 = Integer.valueOf(o2.substring(0, i2));

+                    o2 = o2.substring(i2 + 1);

+                }

+            }

+

+            if (n1 == n2)

+            {

+                return s1.length() - s2.length();

+            }

+            return n1 - n2;

+        }

+    }

+    

+    public String getPrefix()

+    {

+        return _prefix;

+    }

+

+    public void setPrefix(String prefix)

+    {

+        _prefix = prefix;

+    }

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoaderUtils.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoaderUtils.java
new file mode 100644
index 0000000..2c21bc4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoaderUtils.java
@@ -0,0 +1,125 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+import java.io.File;

+import java.io.IOException;

+import java.net.JarURLConnection;

+import java.net.URL;

+import java.net.URLConnection;

+import java.text.ParseException;

+import java.text.SimpleDateFormat;

+import java.util.Date;

+import java.util.Locale;

+import java.util.TimeZone;

+

+public class ResourceLoaderUtils {

+

+    public final static String JAVAX_FACES_LIBRARY_NAME = "javax.faces";

+    public final static String JSF_JS_RESOURCE_NAME = "jsf.js";

+

+    public final static String MYFACES_JS_RESOURCE_NAME = "oamSubmit.js";

+    public final static String MYFACES_JS_RESOURCE_NAME_UNCOMPRESSED = "oamSubmit-uncompressed.js";

+

+    public final static String MYFACES_LIBRARY_NAME = "org.apache.myfaces";

+    private final static String RENDERED_MYFACES_JS = "org.apache.myfaces.RENDERED_MYFACES_JS";

+

+    // TODO: In tomcat and jetty it is implemented a Flyweight pattern when converting

+    // date headers. For now it is better keep this stuff simple.

+    private static final String HTTP_RESPONSE_DATE_HEADER =

+            "EEE, dd MMM yyyy HH:mm:ss zzz";

+

+    private static final String[] HTTP_REQUEST_DATE_HEADER = {

+            "EEE, dd MMM yyyy HH:mm:ss zzz", "EEEEEE, dd-MMM-yy HH:mm:ss zzz",

+            "EEE MMMM d HH:mm:ss yyyy"};

+

+    private static TimeZone __GMT = TimeZone.getTimeZone("GMT");

+

+    public static String formatDateHeader(long value) {

+        SimpleDateFormat format = new SimpleDateFormat(

+                HTTP_RESPONSE_DATE_HEADER,

+                Locale.US);

+        format.setTimeZone(__GMT);

+        return format.format(new Date(value));

+    }

+

+    public static Long parseDateHeader(String value) {

+        Date date = null;

+        for (int i = 0; (date == null) && (i < HTTP_REQUEST_DATE_HEADER.length); i++) {

+            try {

+                SimpleDateFormat format = new SimpleDateFormat(

+                        HTTP_REQUEST_DATE_HEADER[i], Locale.US);

+                format.setTimeZone(__GMT);

+                date = format.parse(value);

+            } catch (ParseException e) {

+                ;

+            }

+        }

+        if (date == null) {

+            return null;

+        }

+        return new Long(date.getTime());

+    }

+

+    //Taken from trinidad URLUtils

+    public static long getResourceLastModified(URL url) throws IOException {

+        if ("file".equals(url.getProtocol())) {

+            String externalForm = url.toExternalForm();

+            // Remove the "file:"

+            File file = new File(externalForm.substring(5));

+

+            return file.lastModified();

+        } else {

+            return getResourceLastModified(url.openConnection());

+        }

+    }

+

+    //Taken from trinidad URLUtils

+    public static long getResourceLastModified(URLConnection connection) throws IOException {

+        long modified;

+        if (connection instanceof JarURLConnection) {

+            // The following hack is required to work-around a JDK bug.

+            // getLastModified() on a JAR entry URL delegates to the actual JAR file

+            // rather than the JAR entry.

+            // This opens internally, and does not close, an input stream to the JAR

+            // file.

+            // In turn, you cannot close it by yourself, because it's internal.

+            // The work-around is to get the modification date of the JAR file

+            // manually,

+            // and then close that connection again.

+

+            URL jarFileUrl = ((JarURLConnection) connection).getJarFileURL();

+            URLConnection jarFileConnection = jarFileUrl.openConnection();

+

+            try {

+                modified = jarFileConnection.getLastModified();

+            } finally {

+                try {

+                    jarFileConnection.getInputStream().close();

+                } catch (Exception exception) {

+                    // Ignored

+                }

+            }

+        } else {

+            modified = connection.getLastModified();

+        }

+

+        return modified;

+    }

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMeta.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMeta.java
new file mode 100644
index 0000000..7033bb4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMeta.java
@@ -0,0 +1,43 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+/**

+ * Contains the metadata information to reference a resource 

+ * 

+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)

+ * @version $Revision: 946779 $ $Date: 2010-05-20 15:31:42 -0500 (Jue, 20 May 2010) $

+ */

+public abstract class ResourceMeta

+{

+    

+    public abstract String getLibraryName();

+    

+    public abstract String getResourceName();

+

+    public abstract String getLocalePrefix();

+

+    public abstract String getLibraryVersion();

+

+    public abstract String getResourceVersion();

+    

+    public abstract String getResourceIdentifier();

+    

+    public abstract boolean couldResourceContainValueExpressions();

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMetaImpl.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMetaImpl.java
new file mode 100644
index 0000000..03ce139
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMetaImpl.java
@@ -0,0 +1,116 @@
+/*

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

+ */

+package org.apache.myfaces.extensions.scripting.jsf.resources;

+

+/**

+ * Contains the metadata information to reference a resource 

+ * 

+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)

+ * @version $Revision: 700544 $ $Date: 2008-09-30 13:44:02 -0500 (Mar, 30 Sep 2008) $

+ */

+public class ResourceMetaImpl extends ResourceMeta

+{

+

+    private final String _prefix;

+    private final String _libraryName;

+    private final String _libraryVersion;

+    private final String _resourceName;

+    private final String _resourceVersion;

+    

+    public ResourceMetaImpl(String prefix, String libraryName, String libraryVersion,

+            String resourceName, String resourceVersion)

+    {

+        _prefix = prefix;

+        _libraryName = libraryName;

+        _libraryVersion = libraryVersion;

+        _resourceName = resourceName;

+        _resourceVersion = resourceVersion;

+    }

+

+    public String getLibraryName()

+    {

+        return _libraryName;

+    }    

+    

+    public String getResourceName()

+    {

+        return _resourceName;

+    }    

+

+    public String getLocalePrefix()

+    {

+        return _prefix;

+    }

+

+    public String getLibraryVersion()

+    {

+        return _libraryVersion;

+    }

+

+    public String getResourceVersion()

+    {

+        return _resourceVersion;

+    }

+    

+    @Override

+    public String getResourceIdentifier()

+    {

+        StringBuilder builder = new StringBuilder();

+        boolean firstSlashAdded = false;

+        if (_prefix != null && _prefix.length() > 0)

+        {

+            builder.append(_prefix);

+            firstSlashAdded = true;

+        }

+        if (_libraryName != null)

+        {

+            if (firstSlashAdded) builder.append('/');

+            builder.append(_libraryName);

+            firstSlashAdded = true;

+        }

+        if (_libraryVersion != null)

+        {

+            if (firstSlashAdded) builder.append('/');

+            builder.append(_libraryVersion);

+            firstSlashAdded = true;

+        }

+        if (_resourceName != null)

+        {

+            if (firstSlashAdded) builder.append('/');

+            builder.append(_resourceName);

+            firstSlashAdded = true;

+        }

+        if (_resourceVersion != null)

+        {

+            if (firstSlashAdded) builder.append('/');

+            builder.append(_resourceVersion);

+            builder.append(

+                    _resourceName.substring(_resourceName.lastIndexOf('.')));

+            firstSlashAdded = true;

+        }

+

+        return builder.toString();

+    }

+

+    @Override

+    public boolean couldResourceContainValueExpressions()

+    {

+        return false;

+    }

+}

diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandler.java
new file mode 100644
index 0000000..1f03b61
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandler.java
@@ -0,0 +1,209 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.resources;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.context.FacesContext;
+import java.io.IOException;
+import java.net.URL;
+
+/**
+ * A simple delegating resource handler
+ * which is supposed to pick up resources from a
+ * given location if the Weaving configuration
+ * has the parameter present
+ */
+public class SourceResourceHandler extends ResourceHandlerImpl implements Decorated
+{
+
+    ResourceHandler _delegate = null;
+    ResourceHandlerSupport _sourceHandlerSupport = null;
+
+    public SourceResourceHandler(ResourceHandler delegate) {
+        _delegate = delegate;
+    }
+
+    public Resource createResource(String resourceName) {
+        Resource retVal = super.createResource(resourceName);
+        if (retVal != null)
+            return retVal;
+
+        return _delegate.createResource(resourceName);
+    }
+
+    public Resource createResource(String resourceName, String libraryName) {
+        Resource retVal = super.createResource(resourceName, libraryName);
+        if (retVal != null)
+            return retVal;
+
+        return _delegate.createResource(resourceName, libraryName);
+    }
+
+    public Resource createResource(String resourceName, String libraryName, String contentType) {
+        Resource retVal = super.createResource(resourceName, libraryName, contentType);
+
+        if (retVal != null)
+            return retVal;
+
+        return _delegate.createResource(resourceName, libraryName, contentType);
+    }
+
+    public String getRendererTypeForResourceName(String resourceName) {
+
+        String retVal = super.getRendererTypeForResourceName(resourceName);
+        if (retVal != null)
+            return retVal;
+
+        return _delegate.getRendererTypeForResourceName(resourceName);
+    }
+
+    public void handleResourceRequest(FacesContext context) throws IOException {
+        super.handleResourceRequest(context);
+    }
+
+    public boolean isResourceRequest(FacesContext context) {
+        return _delegate.isResourceRequest(context);
+    }
+
+    public boolean libraryExists(String libraryName) {
+        return _delegate.libraryExists(libraryName);
+    }
+
+    public ResourceHandler getDelegate() {
+        return _delegate;
+    }
+
+    @Override
+    /**
+     * central override of this class it provides a new handler
+     * support class which allows source pickups after the
+     * JSF2 specified restful algorithms
+     *
+     * @return A support instance which allows also source pickups from resources additionally to the
+     *              default deployment and jar pickups
+     */
+    protected ResourceHandlerSupport getResourceHandlerSupport() {
+        if (_sourceHandlerSupport == null) {
+            _sourceHandlerSupport = new SourceResourceHandlerSupport();
+        }
+        return _sourceHandlerSupport;
+    }
+
+    protected ResourceMeta deriveResourceMeta(ResourceLoader resourceLoader,
+                                              String resourceName, String libraryName) {
+        String localePrefix = getLocalePrefixForLocateResource();
+        String resourceVersion = null;
+        String libraryVersion = null;
+        ResourceMeta resourceId = null;
+
+        //1. Try to locate resource in a localized path
+        if (localePrefix != null) {
+            if (null != libraryName) {
+                String pathToLib = localePrefix + '/' + libraryName;
+                libraryVersion = resourceLoader.getLibraryVersion(pathToLib);
+
+                if (null != libraryVersion) {
+                    String pathToResource = localePrefix + '/'
+                            + libraryName + '/' + libraryVersion + '/'
+                            + resourceName;
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                } else {
+                    String pathToResource = localePrefix + '/'
+                            + libraryName + '/' + resourceName;
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                }
+
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion))) {
+                    resourceId = resourceLoader.createResourceMeta(localePrefix, libraryName,
+                            libraryVersion, resourceName, resourceVersion);
+                }
+            } else {
+                resourceVersion = resourceLoader
+                        .getResourceVersion(localePrefix + '/' + resourceName);
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion))) {
+                    resourceId = resourceLoader.createResourceMeta(localePrefix, null, null,
+                            resourceName, resourceVersion);
+                } else if (resourceVersion == ResourceLoader.VERSION_INVALID) {
+                    resourceId = resourceLoader.createResourceMeta(null, libraryName,
+                            null, resourceName, null);
+                }
+            }
+
+            if (resourceId != null) {
+                URL url = resourceLoader.getResourceURL(resourceId);
+                if (url == null) {
+                    resourceId = null;
+                }
+            }
+        }
+
+        //2. Try to localize resource in a non localized path
+        if (resourceId == null) {
+            if (null != libraryName) {
+                libraryVersion = resourceLoader.getLibraryVersion(libraryName);
+
+                if (null != libraryVersion) {
+                    String pathToResource = (libraryName + '/' + libraryVersion
+                            + '/' + resourceName);
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                } else {
+                    String pathToResource = (libraryName + '/'
+                            + resourceName);
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                }
+
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion))) {
+                    resourceId = resourceLoader.createResourceMeta(null, libraryName,
+                            libraryVersion, resourceName, resourceVersion);
+                } else if (resourceVersion == ResourceLoader.VERSION_INVALID) {
+                    resourceId = resourceLoader.createResourceMeta(null, libraryName,
+                            libraryVersion, resourceName, null);
+                }
+            } else {
+                resourceVersion = resourceLoader
+                        .getResourceVersion(resourceName);
+
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion))) {
+                    resourceId = resourceLoader.createResourceMeta(null, null, null,
+                            resourceName, resourceVersion);
+                } else if (resourceVersion == ResourceLoader.VERSION_INVALID) {
+                    resourceId = resourceLoader.createResourceMeta(null, null,
+                            null, resourceName, null);
+                }
+            }
+
+            if (resourceId != null) {
+                URL url = resourceLoader.getResourceURL(resourceId);
+                if (url == null) {
+                    resourceId = null;
+                }
+            }
+        }
+
+        return resourceId;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandlerSupport.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandlerSupport.java
new file mode 100644
index 0000000..7b2c90f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandlerSupport.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.resources;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * impl specific handler support which attaches
+ * the source resource loader upfront before
+ * checking the other ones
+ * <p/>
+ * a delegate is used to limit the binding between
+ * the "parent" class and the child class
+ * in this case it simply makes sense to avoid any internal sideeffects
+ * between getResourceLoaders and the other methods
+ */
+public class SourceResourceHandlerSupport extends ResourceHandlerSupport {
+
+    private ResourceLoader[] _supportResourceLoaders;
+    private BaseResourceHandlerSupport _defaultSupport = new BaseResourceHandlerSupport();
+
+    @Override
+    /**
+     * Delivers a list of resource loaders in a binding order
+     * of the resource lookup algorithms
+     *
+     * @return a list of resource loaders with following order,
+     *              <ul>
+     *                  <li>source lookup paths if present</li>
+     *                  <li>/resources directory</li>
+     *                  <li>META-INF/resources directory</li>
+     *              </ul>
+     */
+    public ResourceLoader[] getResourceLoaders() {
+        if (_supportResourceLoaders == null) {
+            //The ExternalContextResourceLoader has precedence over
+            //ClassLoaderResourceLoader, so it goes first.
+            _supportResourceLoaders = new ResourceLoader[]{
+                    new SourceResourceLoader("/resources"),
+                    new ExternalContextResourceLoader("/resources"),
+                    new ClassLoaderResourceLoader("META-INF/resources")
+            };
+        }
+        return _supportResourceLoaders;
+    }
+
+    public String calculateResourceBasePath(FacesContext facesContext) {
+        return _defaultSupport.calculateResourceBasePath(facesContext);
+    }
+
+    public boolean isExtensionMapping() {
+        return _defaultSupport.isExtensionMapping();
+    }
+
+    public String getMapping() {
+        return _defaultSupport.getMapping();
+    }
+
+    public long getStartupTime() {
+        return _defaultSupport.getStartupTime();
+    }
+
+    public long getMaxTimeExpires() {
+        return _defaultSupport.getMaxTimeExpires();
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceLoader.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceLoader.java
new file mode 100644
index 0000000..3f6e947
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceLoader.java
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.jsf.resources;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * internal resource loader to be used with our custom resource handler
+ * the resource loader is added to the list of available loaders
+ * so that the resource gets loaded properly from our source path
+ * instead of the web context if present, the source paths as usual
+ * are picked up by our context params.
+ */
+public class SourceResourceLoader extends ExternalContextResourceLoader {
+
+    public SourceResourceLoader(String prefix) {
+        super(prefix);
+    }
+
+    @Override
+    protected Set<String> getResourcePaths(String path) {
+        List<String> resourceRoots = WeavingContext.getInstance().getConfiguration().getResourceDirs();
+        if (resourceRoots == null || resourceRoots.isEmpty()) {
+            return Collections.EMPTY_SET;
+        }
+        Set<String> retVals = new HashSet<String>(resourceRoots.size());
+        //for (String resourceRoot : resourceRoots) {
+        retVals.add(getPrefix() + "/" + path);
+        //}
+        return retVals;
+    }
+
+    @Override
+    public URL getResourceURL(ResourceMeta resourceMeta) {
+        try {
+            List<String> resourceRoots = WeavingContext.getInstance().getConfiguration().getResourceDirs();
+            if (resourceRoots == null || resourceRoots.isEmpty()) {
+                return super.getResourceURL(resourceMeta);
+            }
+
+            for (String resourceRoot : resourceRoots) {
+                File resourceFile = new File(resourceRoot + getPrefix() + "/" + resourceMeta.getLibraryName() + "/"+ resourceMeta.getResourceName());
+                if (resourceFile.exists()) {
+                    return resourceFile.toURI().toURL();
+                }
+            }
+
+            return super.getResourceURL(resourceMeta);
+        }
+        catch (MalformedURLException e) {
+            return null;
+        }
+    }
+
+    @Override
+    public InputStream getResourceInputStream(ResourceMeta resourceMeta) {
+        try {
+            List<String> resourceRoots = WeavingContext.getInstance().getConfiguration().getResourceDirs();
+            if (resourceRoots == null || resourceRoots.isEmpty()) {
+                return super.getResourceInputStream(resourceMeta);
+            }
+
+            for (String resourceRoot : resourceRoots) {
+                File resourceFile = new File(resourceRoot + getPrefix() + "/" +resourceMeta.getLibraryName() + "/"+ resourceMeta.getResourceName());
+                if (resourceFile.exists()) {
+                    return new FileInputStream(resourceFile);
+                }
+            }
+
+            return super.getResourceInputStream(resourceMeta);
+        }
+        catch (IOException e) {
+            return null;
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/RefreshPhaseListener.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/RefreshPhaseListener.java
new file mode 100644
index 0000000..2e1f488
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/RefreshPhaseListener.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.startup;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.api.eventhandling.events.RefreshBeginEvent;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+import java.util.Map;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * This phase listener is needed because the annotation scanner
+ * relies on the facesContext to be present, we cannot do without it
+ */
+public class RefreshPhaseListener implements PhaseListener
+{
+
+    @Override
+    public void afterPhase(PhaseEvent event)
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    @Override
+    public void beforePhase(PhaseEvent event)
+    {
+        FacesContext context = event.getFacesContext();
+        Map<Object, Object> params = context.getAttributes();
+        if(params.containsKey("ANN_PROCESSED")) return;
+        else params.put("ANN_PROCESSED", Boolean.TRUE);
+        WeavingContext.getInstance().sendWeavingEvent(new RefreshBeginEvent(FacesContext
+                .getCurrentInstance()
+                .getExternalContext().getRequest()));
+
+        WeavingContext.getInstance().getImplementationSPI().refreshManagedBeans();
+        WeavingContext.getInstance().annotationScan();
+    }
+
+    @Override
+    public PhaseId getPhaseId()
+    {
+        return PhaseId.ANY_PHASE;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/StartupServletContextPluginChainLoader.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/StartupServletContextPluginChainLoader.java
new file mode 100644
index 0000000..f619d68
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/StartupServletContextPluginChainLoader.java
@@ -0,0 +1,136 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.jsf.startup;
+
+import org.apache.myfaces.extensions.scripting.core.api.Plugin;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.monitor.ResourceMonitor;
+import org.apache.myfaces.extensions.scripting.jsf.adapters.MyFacesSPI;
+import org.apache.myfaces.webapp.StartupListener;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ServiceLoader;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          serves the startup process
+ *          the chainloader hooks itself into the myfaces init process
+ *          and is responsible for startup of the daemon the
+ *          initial scan and compile
+ */
+
+public class StartupServletContextPluginChainLoader implements StartupListener
+{
+    static final Logger _log = Logger.getLogger(StartupServletContextPluginChainLoader.class.getName());
+    Plugin[] _plugins = new Plugin[]{};
+
+    public StartupServletContextPluginChainLoader()
+    {
+        ServiceLoader<Plugin> pluginLoader
+                = ServiceLoader.load(Plugin.class);
+        List<Plugin> plugins = new LinkedList<Plugin>();
+        for (Plugin plugin : pluginLoader)
+        {
+            plugins.add(plugin);
+        }
+        _plugins = plugins.toArray(new Plugin[plugins.size()]);
+    }
+
+    public void preInit(ServletContextEvent servletContextEvent)
+    {
+        ServletContext servletContext = servletContextEvent.getServletContext();
+        try
+        {
+            startup(servletContext);
+
+            for (Plugin plugin : _plugins)
+            {
+                plugin.preInit(servletContextEvent);
+            }
+        }
+        catch (IOException e)
+        {
+            _log.severe("[EXT-SCRIPTING] Engine startup failed terminating ext-scripting");
+        }
+
+    }
+
+    public static void startup(ServletContext servletContext) throws IOException
+    {
+        if(ResourceMonitor.getInstance() != null && ResourceMonitor.getInstance().isAlive()) return;
+
+        WeavingContext context = WeavingContext.getInstance();
+        _log.info("[EXT-SCRIPTING] Instantiating StartupServletContextPluginChainLoader");
+        context.initEngines();
+        _log.info("[EXT-SCRIPTING] Loading configuration");
+        context.getConfiguration().init(servletContext);
+        _log.info("[EXT-SCRIPTING] Loading Scripting end");
+        _log.info("[EXT-SCRIPTING] initializing startup daemon");
+        ResourceMonitor.init(servletContext);
+        _log.info("[EXT-SCRIPTING] initializing startup daemon end");
+        _log.info("[EXT-SCRIPTING] Initial Scan and compile");
+        //the initial scan should happen synchronsously
+        ResourceMonitor.getInstance().performMonitoringTask();
+        _log.info("[EXT-SCRIPTING] Starting Change Monitor");
+        ResourceMonitor.getInstance().start();
+        _log.info("[EXT-SCRIPTING] Startup done");
+        _log.info("[EXT-SCRIPTING] init the chain loader for class loading");
+        //TODO make this more generic depending on the implementation
+        MyFacesSPI.getInstance().registerClassloadingExtension(servletContext);
+        _log.info("[EXT-SCRIPTING] registering the JSF Implementation");
+        WeavingContext.getInstance().setImplementation(MyFacesSPI.getInstance());
+    }
+
+    public void postInit(ServletContextEvent evt)
+    {
+        //tell the system that the startup phase is done
+        WeavingContext.getInstance().markPostInit();
+        for (Plugin plugin : _plugins)
+        {
+            plugin.postInit(evt);
+        }
+    }
+
+    public void preDestroy(ServletContextEvent evt)
+    {
+        for (Plugin plugin : _plugins)
+        {
+            plugin.preDestroy(evt);
+        }
+    }
+
+    public void postDestroy(ServletContextEvent evt)
+    {
+        //context is destroyed we have to shut down our daemon as well, by giving it
+        //a hint to shutdown
+        ResourceMonitor.getInstance().setRunning(false);
+        for (Plugin plugin : _plugins)
+        {
+            plugin.postDestroy(evt);
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/LICENSE.TXT b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/LICENSE.TXT
new file mode 100644
index 0000000..dd5b3a5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/LICENSE.TXT
@@ -0,0 +1,174 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/NOTICE.TXT b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/NOTICE.TXT
new file mode 100644
index 0000000..a154ae7
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/NOTICE.TXT
@@ -0,0 +1,14 @@
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+------------------------------------------------------------------------
+See the file LICENSE.txt
+See licenses for accompanying products in the "/licenses" subdirectory.
+------------------------------------------------------------------------
+
+This software also includes code from Facelets (https://facelets.dev.java.net/)
+for the purpose of making components and facelet artifacts reloadable from
+other source directories.
+
+This product also includes the ASM bytecode library (http://asm.ow2.org/) for the purpose of
+dependency bytecode scanning.
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/extscripting.taglib.xml b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/extscripting.taglib.xml
new file mode 100644
index 0000000..fd45ab6
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/extscripting.taglib.xml
@@ -0,0 +1,47 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ * 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.
+-->
+<!--
+According to the spec we normally should divide between facelet 1.0 and facelet 2.0
+but since this seems to be a spec errata in the JSF 2.0 rev 0 spec and both implementations
+now pick up facelet 1.0 files as expected we centralize everything and keep everything on 1.2
+jsf level for now.
+Maybe in the long run we will divide both component classes into one for jsf 1.2 and
+one for jsf 2.0 but for now this approach is fine enough.
+-->
+
+<!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "facelet-taglib_1_0.dtd">
+<facelet-taglib>
+    <namespace>http://myfaces.apache.org/ext-scripting</namespace>
+    <tag>
+        <tag-name>compilerOutput</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.extensions.scripting.components.CompilerComponent</component-type>
+            <renderer-type>org.apache.myfaces.extensions.scripting.components.CompilerComponentRenderer</renderer-type>
+        </component>
+    </tag>
+    <tag>
+         <tag-name>taintHistory</tag-name>
+         <component>
+             <component-type>org.apache.myfaces.extensions.scripting.components.TaintHistory</component-type>
+             <renderer-type>org.apache.myfaces.extensions.scripting.components.TaintHistoryRenderer</renderer-type>
+         </component>
+     </tag>
+</facelet-taglib>
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/faces-config.xml b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..d7a2dd0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,103 @@
+<?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.
+    -->
+
+    <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>
+    <lifecycle>
+        <phase-listener>org.apache.myfaces.extensions.scripting.jsf.startup.RefreshPhaseListener
+        </phase-listener>
+    </lifecycle>
+
+    <!--
+    <application>
+        <resource-handler>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.jsf.components.CompilerComponent
+        </component-class>
+    </component>
+
+    <component>
+        <component-type>org.apache.myfaces.extensions.scripting.components.TaintHistory</component-type>
+        <component-class>org.apache.myfaces.extensions.scripting.jsf.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.jsf.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.jsf.components.TaintHistoryRenderer</renderer-class>
+        </renderer>
+    </render-kit>
+
+</faces-config>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/licenses/asm-license.txt b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/licenses/asm-license.txt
new file mode 100644
index 0000000..7676ba5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/licenses/asm-license.txt
@@ -0,0 +1,29 @@
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/licenses/facelets-license.txt b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/licenses/facelets-license.txt
new file mode 100644
index 0000000..959625a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/licenses/facelets-license.txt
@@ -0,0 +1,70 @@
+Apache License, Version 2.0
+
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+   1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+   2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+   3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+   4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/services/org.apache.myfaces.webapp.StartupListener b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/services/org.apache.myfaces.webapp.StartupListener
new file mode 100644
index 0000000..877c286
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/resources/META-INF/services/org.apache.myfaces.webapp.StartupListener
@@ -0,0 +1,19 @@
+#####################################################################################
+# 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.
+#####################################################################################
+org.apache.myfaces.extensions.scripting.jsf.startup.StartupServletContextPluginChainLoader
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/scala/org/apache/myfaces/extensions/scripting/core/engine/compiler/CompilationResultReporter.scala b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/scala/org/apache/myfaces/extensions/scripting/core/engine/compiler/CompilationResultReporter.scala
new file mode 100644
index 0000000..48c9858
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/scala/org/apache/myfaces/extensions/scripting/core/engine/compiler/CompilationResultReporter.scala
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler
+
+import scala.tools.nsc.Settings
+
+import scala.tools.nsc.util._
+import tools.nsc.reporters.AbstractReporter
+import java.io.{ BufferedReader, IOException, PrintWriter }
+import org.apache.myfaces.extensions.scripting.core.engine.api.{CompilationMessage, CompilationResult}
+
+/**
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * transforms the compile results from the scala compiler
+ * to our own neutral compilation result facade
+ */
+
+class CompilationResultReporter(val settings: Settings)  extends AbstractReporter
+{
+  //TODO add summary with info etc...
+  //for now this suffices to catch the errors
+  val result = new CompilationResult("");
+
+
+
+  /**Whether a short file name should be displayed before errors */
+  var shortname: Boolean = false
+
+  /**maximal number of error messages to be printed */
+  val ERROR_LIMIT = 100
+
+  private def label(severity: Severity): String = severity match
+  {
+    case ERROR => "error"
+    case WARNING => "warning"
+    case INFO => "info"
+    case _ => ""
+  }
+
+  def display(pos: Position, msg: String, severity: Severity)
+  {
+    val theLabel = label(severity)
+    severity match {
+      case ERROR => result.registerError(new CompilationMessage(pos.line.longValue(),
+        "Column: "+ pos.column +" "+msg));
+      case WARNING => result.registerWarning(new CompilationMessage(pos.line.longValue(),"Column: "+ pos.column +" "+ msg));
+      case INFO => ;
+    }
+  }
+
+  def displayPrompt(): Unit = {}
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/scala/org/apache/myfaces/extensions/scripting/core/engine/compiler/ScalaCompiler.scala b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/scala/org/apache/myfaces/extensions/scripting/core/engine/compiler/ScalaCompiler.scala
new file mode 100644
index 0000000..3f4b6e2
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/main/scala/org/apache/myfaces/extensions/scripting/core/engine/compiler/ScalaCompiler.scala
@@ -0,0 +1,99 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.engine.compiler
+
+import java.io.File
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext
+import scala.tools.nsc.{Global, Settings}
+import scala.collection.JavaConversions._
+
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils
+
+/**
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+class ScalaCompiler extends org.apache.myfaces.extensions.scripting.core.engine.api.Compiler
+{
+  def error(message: String): Unit =
+  {
+    println("[EXT-SCRIPTING] Error in scala compile:" + message)
+  }
+
+  /**
+   * fetches a list of jars from a given dir and appends it to the given classpath
+   *
+   * @param libDir the library directory
+   * @param _cp
+   * @param classesDir
+   * @return
+   */
+  def fetchJarPath(libDir: String, _cp: String, classesDir: String): String =
+  {
+    var cp: String = _cp
+    val libs = FileUtils.fetchSourceFiles(new File(libDir), "*.jar")
+    val finalPath = new StringBuilder
+    finalPath.append(cp)
+    finalPath.append(File.pathSeparator)
+    finalPath.append(classesDir)
+    for (singleLib: File <- libs)
+    {
+      finalPath.append(File.pathSeparator)
+      finalPath.append(singleLib.getAbsolutePath)
+    }
+    cp = finalPath.toString()
+    cp
+  }
+
+  def compile(sourcePath: File, targetPath: File, classLoader: ClassLoader): CompilationResult =
+  {
+    val context = WeavingContext.getInstance()
+    val configuration = context.getConfiguration()
+    targetPath.mkdirs();
+    val sourceFiles = FileUtils.fetchSourceFiles(sourcePath, "*.scala")
+    var sourceFileNames = List[String]()
+    for (sourceFile:File <- sourceFiles)
+    {
+      sourceFileNames = sourceFileNames ::: List(sourceFile.getAbsolutePath())
+    }
+    val settings = new Settings(error)
+    settings.outdir.value = configuration.getCompileTarget.getAbsolutePath
+    settings.deprecation.value = true // enable detailed deprecation warnings
+    settings.unchecked.value = true // enable detailed unchecked warnings
+    var cp: String = configuration.getSystemClasspath();
+
+    if(!cp.contains("scala")) { //probably a war container
+      val classesDir = asScalaBuffer[String]  (configuration.getClassesPaths())
+      val jarDirs    = asScalaBuffer[String]  (configuration.getJarPaths())
+      cp += classesDir.reduceLeft[String]((a1:String,  a2:String) => a1+File.pathSeparator+a2)
+      cp += jarDirs.reduceLeft[String]((a1:String,  a2:String) => a1+File.pathSeparator+a2)
+    }
+
+    settings.classpath.value = cp
+    val reporter = new CompilationResultReporter(settings)
+
+    val compiler = new Global(settings, reporter)
+    (new compiler.Run).compile(sourceFileNames)
+
+    reporter.result
+  }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/context/InitialFullScanTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/context/InitialFullScanTest.java
new file mode 100644
index 0000000..e878019
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/context/InitialFullScanTest.java
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.context;
+
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.engine.FactoryEngines;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Enumeration;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class InitialFullScanTest
+{
+    FactoryEngines factory = null;
+        
+        
+        @Before
+        public void init() throws Exception {
+            factory = FactoryEngines.getInstance();
+            factory.init();
+        }
+    
+        @Test
+        public void testInitialFullScan() {
+            try
+            {
+                ScriptingEngine javaEngine = factory.getEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+                ScriptingEngine groovyEngine = factory.getEngine(ScriptingConst.ENGINE_TYPE_JSF_GROOVY);
+                ScriptingEngine scalaEngine = factory.getEngine(ScriptingConst.ENGINE_TYPE_JSF_SCALA);
+
+                ClassLoader loader = this.getClass().getClassLoader();
+                String canonicalPackageName = this.getClass().getPackage().getName().replaceAll("\\.", FileUtils.getFileSeparatorForRegex());                Enumeration<URL> enumeration = loader.getResources(canonicalPackageName);
+                javaEngine.getSourcePaths().clear();
+                groovyEngine.getSourcePaths().clear();
+                //TODO source not binary dirs
+                while(enumeration.hasMoreElements()) {
+                    URL currentDir = enumeration.nextElement();
+                    String currentDirStr = currentDir.getFile();
+                    currentDirStr = currentDirStr.replaceAll("%5c", FileUtils.getFileSeparatorForRegex());
+                    currentDirStr = currentDirStr.replaceAll("target/test\\-classes",
+                            "src/main/java");
+                    currentDirStr = currentDirStr.replaceAll("target/classes",
+                                                "src/main/java");
+                    currentDirStr = currentDirStr.replaceAll("context", "api");
+                    javaEngine.getSourcePaths().add(currentDirStr);
+                    groovyEngine.getSourcePaths().add(currentDirStr);
+                    scalaEngine.getSourcePaths().add(currentDirStr);
+                }
+                //we now scan for the files
+                WeavingContext.getInstance().fullScan();
+                assertTrue("watched resources must have java files", javaEngine.getWatchedResources().size() > 0);
+                javaEngine.getSourcePaths().clear();;
+                groovyEngine.getSourcePaths().clear();
+                scalaEngine.getSourcePaths().clear();
+            }
+            catch (IOException e)
+            {
+                fail(e.getMessage());
+            }
+
+        }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/context/TaintHistoryTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/context/TaintHistoryTest.java
new file mode 100644
index 0000000..5223791
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/context/TaintHistoryTest.java
@@ -0,0 +1,174 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.context;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+import org.apache.myfaces.extensions.scripting.jsf.components.TaintHistory;
+import org.apache.myfaces.extensions.scripting.jsf.components.TaintHistoryRenderer;
+import org.apache.myfaces.extensions.scripting.core.support.ContextUtils;
+import org.apache.myfaces.renderkit.html.HtmlFormRenderer;
+import org.apache.myfaces.test.base.AbstractJsfTestCase;
+import org.apache.myfaces.test.mock.MockRenderKitFactory;
+import org.apache.myfaces.test.mock.MockResponseWriter;
+import org.junit.Ignore;
+
+import javax.faces.component.html.HtmlForm;
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.io.StringWriter;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Taint history test, which is the first JSF related test
+ *          we try to test here a simple mechanism, the taint history under
+ *          JSF Testing conditions.
+ */
+
+public class TaintHistoryTest extends AbstractJsfTestCase
+{
+
+    ServletContext context;
+    private TaintHistory _taintHistory;
+    private TaintHistoryRenderer _taintHistoryRenderer;
+    private HtmlForm _form;
+    private MockResponseWriter _writer;
+    private static final String VAL_FILTER = "bla";
+    private static final String NO_TAINT_HISTORY_FOUND = "no taint history found";
+    private static final String BOOGA_JAVA = "booga.java";
+    private static final String TAINT_HISTORY_FOUND = "taint history found";
+    private static final String ATTR_NO_ENTRIES = "noEntries";
+    private static final String ATTR_FILTER = "filter";
+
+    public TaintHistoryTest()
+    {
+        super(TaintHistoryTest.class.getName());
+    }
+
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        context = ContextUtils.startupSystem();
+        _writer = new MockResponseWriter(new StringWriter(), null, null);
+
+        facesContext.setResponseWriter(_writer);
+        _taintHistory = new TaintHistory();
+        _form = new HtmlForm();
+        _taintHistory.setParent(_form);
+
+        facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
+        facesContext.getRenderKit().addRenderer(
+                _taintHistory.getFamily(),
+                _taintHistory.getRendererType(),
+                new TaintHistoryRenderer());
+        facesContext.getRenderKit().addRenderer(
+                _form.getFamily(),
+                _form.getRendererType(),
+                new HtmlFormRenderer());
+    }
+
+    @Override
+    protected void tearDown() throws Exception
+    {
+        super.tearDown();
+        ContextUtils.stopSystem();
+    }
+
+    public void testBooga() {
+        assertTrue(true);
+    }
+
+    public void testTaintHistory() throws Exception {
+            ClassResource historyEntry = new ClassResource();
+            historyEntry.setAClass(this.getClass());
+            //historyEntry.getRefreshAttribute().requestRefresh();
+            //historyEntry.getRefreshAttribute().executedRefresh();
+            historyEntry.setScriptingEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+            historyEntry.setFile(new File(BOOGA_JAVA));
+           // historyEntry.getRefreshAttribute().requestRefresh();
+            //todo set source file
+            historyEntry.setTainted(true);
+
+            //WeavingContext.getInstance().addTaintLogEntry(historyEntry);
+            //WeavingContext.getRefreshContext().addTaintLogEntry(historyEntry);
+
+            _taintHistory.encodeAll(facesContext);
+            facesContext.renderResponse();
+            assertFalse(TAINT_HISTORY_FOUND, _writer.getWriter().toString().contains(NO_TAINT_HISTORY_FOUND));
+
+            assertTrue(_writer.getWriter().toString().contains(BOOGA_JAVA));
+        }
+
+        public void testSaveRestore() {
+            _taintHistory.setFilter(VAL_FILTER);
+            _taintHistory.setNoEntries(10);
+            Object state = _taintHistory.saveState(facesContext);
+            _taintHistory.setFilter("");
+            _taintHistory.setNoEntries(0);
+            _taintHistory.restoreState(facesContext, state);
+
+            assertTrue(_taintHistory.getFilter().equals(VAL_FILTER));
+
+            assertTrue(_taintHistory.getNoEntries().equals(10));
+
+        }
+
+        public void testNoEntries() throws Exception {
+            int noEntries = 10;
+            for (int cnt = 0; cnt < 100; cnt++) {
+                ClassResource historyEntry = new ClassResource();
+                historyEntry.setAClass(this.getClass());
+                //historyEntry.getRefreshAttribute().executedRefresh();
+                historyEntry.setScriptingEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+                if(cnt < 10)
+                    historyEntry.setFile(new File("0"+cnt + "_"+BOOGA_JAVA));
+                else
+                    historyEntry.setFile(new File(cnt + "_"+BOOGA_JAVA));
+                //historyEntry.getRefreshAttribute().requestRefresh();
+                //historyEntry.setTaintedOnce(true);
+                WeavingContext.getInstance().addTaintLogEntry(historyEntry);
+            }
+
+            _taintHistory.setNoEntries(10);
+            _taintHistory.encodeAll(facesContext);
+            facesContext.renderResponse();
+
+            assertTrue(_writer.getWriter().toString().contains("99_"+BOOGA_JAVA));
+            assertFalse(_writer.getWriter().toString().contains("89_"+BOOGA_JAVA));
+            assertFalse(_writer.getWriter().toString().contains("00_"+BOOGA_JAVA));
+        }
+
+        public void testElAttributes() {
+           assertTrue(_taintHistory.getFilter() == null);
+           assertTrue(_taintHistory.getNoEntries().equals(TaintHistory.DEFAULT_NO_ENTRIES));
+           _taintHistory.setNoEntries(null);
+
+           _taintHistory.getAttributes().put(ATTR_NO_ENTRIES, 20);
+           _taintHistory.getAttributes().put(ATTR_FILTER, VAL_FILTER);
+
+           assertTrue(_taintHistory.getNoEntries() == 20);
+           assertTrue(_taintHistory.getFilter().equals(VAL_FILTER));
+        }
+
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/context/TaintTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/context/TaintTest.java
new file mode 100644
index 0000000..f6e90b0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/context/TaintTest.java
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.context;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.engine.FactoryEngines;
+import org.apache.myfaces.extensions.scripting.core.support.ContextUtils;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.IOException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@Ignore
+public class TaintTest
+{
+    FactoryEngines factory = null;
+
+    public TaintTest(FactoryEngines factory)
+    {
+        this.factory = factory;
+
+    }
+
+    public void init() throws IOException
+    {
+        ContextUtils.startupSystem();
+    }
+
+    @Test
+    public void taintTest()
+    {
+        //we sleep 1000 to let the system play catchup
+        try
+        {
+            Thread.sleep(1000);
+        }
+        catch (InterruptedException e)
+        {
+
+        }
+        WeavingContext.getInstance().forName("Test");
+        WeavingContext.getInstance().forName("TestJava");
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/EngineFactoryTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/EngineFactoryTest.java
new file mode 100644
index 0000000..e2e6b0e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/EngineFactoryTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * Testcase for the engine factory to test for a correct
+ */
+
+public class EngineFactoryTest
+{
+    FactoryEngines factory = null;
+    
+    
+    @Before
+    public void init() throws Exception {
+        factory = FactoryEngines.getInstance();
+        factory.init();
+    }
+
+    @Test
+    public void testInit() {
+        assertTrue("Java Engine found",factory.getEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA) != null);
+        assertTrue("Groovy Engine found",factory.getEngine(ScriptingConst.ENGINE_TYPE_JSF_GROOVY) != null);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/CompilationExceptionTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/CompilationExceptionTest.java
new file mode 100644
index 0000000..cff74d8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/CompilationExceptionTest.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+import org.junit.Test;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationException;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * dummy test for the class to have class level coverage
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class CompilationExceptionTest {
+    private static final String ERR_MSG = "BlaMessage";
+
+    @Test
+    public void testCompilationException() {
+        CompilationException ex = new CompilationException(ERR_MSG);
+
+        assertTrue(ex.getMessage().equals(ERR_MSG));
+
+        ex = new CompilationException(ERR_MSG, new NullPointerException(ERR_MSG));
+        assertTrue(ex.getMessage().equals(ERR_MSG));
+        assertTrue(ex.getCause() instanceof NullPointerException);
+
+        ex = new CompilationException(new NullPointerException(ERR_MSG));
+        assertTrue(ex.getCause() instanceof NullPointerException);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/CompilationResultTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/CompilationResultTest.java
new file mode 100644
index 0000000..6c85e41
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/CompilationResultTest.java
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationMessage;
+import org.junit.Before;
+import org.junit.Test;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+
+import static junit.framework.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class CompilationResultTest {
+    CompilationResult result = null;
+    private static final String BOOGA = "booga";
+
+    @Before
+    public void init() {
+        result = new CompilationResult(BOOGA);
+    }
+
+    @Test
+    public void testGetCompilerOutput() throws Exception {
+        assertTrue(result.getCompilerOutput().equals(BOOGA));
+    }
+
+    @Test
+    public void testHasErrors() throws Exception {
+        assertFalse(result.hasErrors());
+        result.getErrors().add(new CompilationMessage(1, BOOGA));
+        assertTrue(result.hasErrors());
+    }
+
+    @Test
+    public void testRegisterError() throws Exception {
+        assertFalse(result.hasErrors());
+        result.registerError(new CompilationMessage(1, BOOGA));
+        assertTrue(result.hasErrors());
+    }
+
+    @Test
+    public void testGetErrors() throws Exception {
+        assertTrue(result.getErrors().isEmpty());
+        result.registerError(new CompilationMessage(1, BOOGA));
+        result.registerError(null);
+        assertFalse(result.getErrors().isEmpty());
+        assertTrue(result.getErrors().size() == 1);
+        result.registerError(new CompilationMessage(1, BOOGA));
+        result.registerError(null);
+        assertTrue(result.getErrors().size() == 2);
+
+    }
+
+    @Test
+    public void testRegisterWarning() throws Exception {
+        assertTrue(result.getWarnings().isEmpty());
+        result.registerWarning(new CompilationMessage(1, BOOGA));
+        result.registerWarning(null);
+        assertFalse(result.getWarnings().isEmpty());
+        assertTrue(result.getWarnings().size() == 1);
+        result.registerWarning(new CompilationMessage(1, BOOGA));
+
+        assertFalse(result.getWarnings().isEmpty());
+        assertTrue(result.getWarnings().size() == 2);
+        assertTrue(result.getErrors().isEmpty());
+    }
+   
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/DynamicJavaSourceCodeObject.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/DynamicJavaSourceCodeObject.java
new file mode 100644
index 0000000..cc63f23
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/DynamicJavaSourceCodeObject.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+import javax.tools.SimpleJavaFileObject;
+import java.io.IOException;
+import java.net.URI;
+
+/**
+ * Creates a dynamic source code file object
+ *
+ * This is an example of how we can prepare a dynamic java source code for compilation.
+ * This class reads the java code from a string and prepares a JavaFileObject
+ *
+ */
+class DynamicJavaSourceCodeObject extends SimpleJavaFileObject
+{
+    private String qualifiedName ;
+    private String sourceCode ;
+
+    /**
+     * Converts the name to an URI, as that is the format expected by JavaFileObject
+     *
+     *
+     * @param fully qualified name given to the class file
+     * @param code the source code string
+     */
+    protected DynamicJavaSourceCodeObject(String name, String code) {
+        super(URI.create("string:///" + name.replaceAll("\\.", "/") + Kind.SOURCE.extension), Kind.SOURCE);
+        this.qualifiedName = name ;
+        this.sourceCode = code ;
+    }
+
+    @Override
+    public CharSequence getCharContent(boolean ignoreEncodingErrors)
+            throws IOException
+    {
+        return sourceCode ;
+    }
+
+    public String getQualifiedName() {
+        return qualifiedName;
+    }
+
+    public void setQualifiedName(String qualifiedName) {
+        this.qualifiedName = qualifiedName;
+    }
+
+    public String getSourceCode() {
+        return sourceCode;
+    }
+
+    public void setSourceCode(String sourceCode) {
+        this.sourceCode = sourceCode;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompilerTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompilerTest.java
new file mode 100644
index 0000000..58eda6b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompilerTest.java
@@ -0,0 +1,161 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+import org.apache.commons.io.FilenameUtils;
+import org.junit.Test;
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.engine.FactoryEngines;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class GroovyCompilerTest
+{
+    private static final String PROBE1 = "../../src/test/resources/compiler/TestProbe1Groovy.groovy";
+    private static final String PROBE2 = "../../src/test/resources/compiler/TestProbe2Groovy.groovy";
+    private static final String RESOURCES = "../../src/test/resources/";
+
+    File probe1;
+    File probe2;
+    File root;
+
+    GroovyCompiler compiler = new GroovyCompiler();
+    private static final String RESULT_HAS_NO_ERRORS = "result has no errors";
+    private static final String TARGET_DIR_EXISTS = "targetDir exists files are compiled into the targetDir";
+    private static final String CLASSFILE1_IS_COMPILED = "Classfile1 is compiled into the targetDir";
+    private static final String CLASSFILE1_IS_COMPILED1 = "Classfile1 is compiled into the target";
+    private static final String CLASSFILE2_IS_COMPILED = "Classfile2 is compiled into the target";
+
+    public GroovyCompilerTest()
+    {
+        try
+        {
+            FactoryEngines.getInstance().init();
+        }
+        catch (IOException e)
+        {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+        //we use a location relative to our current root one to reach the sources
+        //because the test also has to be performed outside of maven
+        //and the ide cannot cope with resource paths for now
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+
+        String currentPath = null;
+
+        try
+        {
+            currentPath = URLDecoder.decode(loader.getResource("./").getPath(),
+                    Charset.defaultCharset().toString());
+        }
+        catch (UnsupportedEncodingException e)
+        {
+            fail(e.getMessage());
+        }
+        String sourcePath1 = currentPath + PROBE1;
+        String sourcePath2 = currentPath + PROBE2;
+        String rootPath = currentPath + RESOURCES;
+
+        sourcePath1 = FilenameUtils.normalize(sourcePath1);
+        sourcePath2 = FilenameUtils.normalize(sourcePath2);
+        rootPath = FilenameUtils.normalize(rootPath);
+
+        probe1 = new File(sourcePath1);
+        probe2 = new File(sourcePath2);
+        root = new File(rootPath);
+
+        WeavingContext.getInstance().setConfiguration(new Configuration());
+        WeavingContext.getInstance().getConfiguration().addSourceDir(ScriptingConst.ENGINE_TYPE_JSF_GROOVY, root.getAbsolutePath());
+    }
+
+    @Test
+    public void testFullCompileWhitelist()
+    {
+        File targetDir = null;
+
+        File target = WeavingContext.getInstance().getConfiguration().getCompileTarget();
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        target.mkdirs();
+        target.deleteOnExit();
+
+        WeavingContext.getInstance().getConfiguration().addWhitelistPackage("compiler.myPackage");
+
+        CompilationResult result = compiler.compile(root, target, loader);
+
+        assertTrue(RESULT_HAS_NO_ERRORS, !result.hasErrors());
+
+        assertTrue("target exists files are compiled into the target", target != null);
+        File classFile1 = new File(target.getAbsolutePath() + "/compiler/TestProbe1Groovy.class");
+        File classFile2 = new File(target.getAbsolutePath() + "/compiler/TestProbe2Groovy.class");
+        File classFile3 = new File(target.getAbsolutePath() + "/compiler/myPackage/WhiteListedProbeGroovy.class");
+
+        assertTrue(CLASSFILE1_IS_COMPILED1, !classFile1.exists());
+        assertTrue(CLASSFILE2_IS_COMPILED, !classFile2.exists());
+        assertTrue(CLASSFILE2_IS_COMPILED, classFile3.exists());
+        classFile3.delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().mkdirs();
+
+    }
+
+    @Test
+    public void testFullCompile()
+    {
+        File targetDir = null;
+
+        File target = WeavingContext.getInstance().getConfiguration().getCompileTarget();
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        target.mkdirs();
+        target.deleteOnExit();
+
+        CompilationResult result = compiler.compile(root, target, loader);
+
+        assertTrue(RESULT_HAS_NO_ERRORS, !result.hasErrors());
+
+        assertTrue(TARGET_DIR_EXISTS, target != null);
+        File classFile1 = new File(target.getAbsolutePath() + "/compiler/TestProbe1Groovy.class");
+        File classFile2 = new File(target.getAbsolutePath() + "/compiler/TestProbe2Groovy.class");
+
+        assertTrue(CLASSFILE1_IS_COMPILED1, classFile1.exists());
+        assertTrue(CLASSFILE2_IS_COMPILED, classFile2.exists());
+        classFile1.delete();
+        classFile2.delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().mkdirs();
+
+
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JavaCompilerTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JavaCompilerTest.java
new file mode 100644
index 0000000..1f967a8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JavaCompilerTest.java
@@ -0,0 +1,226 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+import org.apache.commons.io.FilenameUtils;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.FactoryEngines;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticCollector;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+import java.util.Arrays;
+import java.util.Locale;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class JavaCompilerTest
+{
+    private static final String PROBE1 = "../../src/test/resources/compiler/TestProbe1.java";
+    private static final String PROBE2 = "../../src/test/resources/compiler/TestProbe2.java";
+    private static final String RESOURCES = "../../src/test/resources/";
+
+    File probe1;
+    File probe2;
+    File root;
+
+    private static final String RESULT_HAS_NO_ERRORS = "result has no errors";
+    private static final String TARGET_DIR_EXISTS = "targetDir exists files are compiled into the targetDir";
+    private static final String CLASSFILE1_IS_COMPILED = "Classfile1 is compiled into the targetDir";
+    private static final String CLASSFILE1_IS_COMPILED1 = "Classfile1 is compiled into the target";
+    private static final String CLASSFILE2_IS_COMPILED = "Classfile2 is compiled into the target";
+
+    public JavaCompilerTest()
+    {
+        try
+        {
+            FactoryEngines.getInstance().init();
+        }
+        catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        //we use a location relative to our current root one to reach the sources
+        //because the test also has to be performed outside of maven
+        //and the ide cannot cope with resource paths for now
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+
+        String currentPath = null;
+        try
+        {
+            currentPath = URLDecoder.decode(loader.getResource("./").getPath(), Charset.defaultCharset().toString());
+        }
+        catch (UnsupportedEncodingException e)
+        {
+            fail(e.getMessage());
+        }
+        String sourcePath1 = currentPath + PROBE1;
+        String sourcePath2 = currentPath + PROBE2;
+        String rootPath = currentPath + RESOURCES;
+
+        sourcePath1 = FilenameUtils.normalize(sourcePath1);
+        sourcePath2 = FilenameUtils.normalize(sourcePath2);
+        rootPath = FilenameUtils.normalize(rootPath);
+
+        probe1 = new File(sourcePath1);
+        probe2 = new File(sourcePath2);
+        root = new File(rootPath);
+
+        WeavingContext.getInstance().setConfiguration(new Configuration());
+        WeavingContext.getInstance().getConfiguration().addSourceDir(ScriptingConst.ENGINE_TYPE_JSF_JAVA,
+                root.getAbsolutePath());
+
+    }
+
+    @Test
+    public void testInMemoryCompile() {
+        String sourceCode =
+                  "class DynamicCompilationHelloWorld{" +
+                          "public static void main (String args[]){" +
+                          "System.out.println (\"Hello, dynamic compilation world!\");" +
+                          "}" +
+                          "}";
+          /*Creating dynamic java source code file object*/
+          SimpleJavaFileObject fileObject = new DynamicJavaSourceCodeObject("DynamicCompilationHelloWorld", sourceCode);
+          JavaFileObject javaFileObjects[] = new JavaFileObject[]{fileObject};
+
+          /* Prepare a list of compilation units (java source code file objects) to input to compilation task*/
+          Iterable<? extends JavaFileObject> compilationUnits = Arrays.asList(javaFileObjects);
+
+          /*Prepare any compilation options to be used during compilation*/
+          //In this example, we are asking the compiler to place the output files under bin folder.
+
+          String[] compileOptions = new String[]{"-d", FileUtils.getTempDir().getAbsolutePath()};
+          Iterable<String> compilationOptions = Arrays.asList(compileOptions);
+
+          /*Instantiating the java compiler*/
+          JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+
+          /**
+           * Retrieving the standard file manager from compiler object, which is used to provide
+           * basic building block for customizing how a compiler reads and writes to files.
+           *
+           * The same file manager can be reopened for another compiler task.
+           * Thus we reduce the overhead of scanning through file system and jar files each time
+           */
+          StandardJavaFileManager stdFileManager = compiler.getStandardFileManager(null, Locale.getDefault(), null);
+          /*Create a diagnostic controller, which holds the compilation problems*/
+          DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
+          /*Create a compilation task from compiler by passing in the required input objects prepared above*/
+          JavaCompiler.CompilationTask compilerTask = compiler.getTask(null, stdFileManager, diagnostics, compilationOptions, null, compilationUnits);
+
+          //Perform the compilation by calling the call method on compilerTask object.
+          boolean status = compilerTask.call();
+
+          if (!status)
+          {//If compilation error occurs
+              /*Iterate through each compilation problem and print it*/
+              for (Diagnostic diagnostic : diagnostics.getDiagnostics())
+              {
+                  System.out.format("Error on line %d in %s", diagnostic.getLineNumber(), diagnostic);
+              }
+          }
+    }
+
+    @Test
+    public void testFullCompileWhitelist()
+    {
+        JSR199Compiler compiler = new JSR199Compiler();
+
+        File targetDir = null;
+
+        File target = WeavingContext.getInstance().getConfiguration().getCompileTarget();
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        target.mkdirs();
+        target.deleteOnExit();
+
+        WeavingContext.getInstance().getConfiguration().addWhitelistPackage("compiler.myPackage");
+
+        CompilationResult result = null;
+
+        result = compiler.compile(root, target, loader);
+
+        assertTrue(RESULT_HAS_NO_ERRORS, !result.hasErrors());
+
+        assertTrue("target exists files are compiled into the target", target != null);
+        File classFile1 = new File(target.getAbsolutePath() + "/compiler/TestProbe1.class");
+        File classFile2 = new File(target.getAbsolutePath() + "/compiler/TestProbe2.class");
+        File classFile3 = new File(target.getAbsolutePath() + "/compiler/myPackage/WhiteListedProbe.class");
+
+        assertTrue(CLASSFILE1_IS_COMPILED1, !classFile1.exists());
+        assertTrue(CLASSFILE2_IS_COMPILED, !classFile2.exists());
+        assertTrue(CLASSFILE2_IS_COMPILED, classFile3.exists());
+        classFile3.delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().mkdirs();
+    }
+
+    @Test
+    public void testFullCompile()
+    {
+        JSR199Compiler compiler = new JSR199Compiler();
+        File targetDir = null;
+
+        File target = FileUtils.getTempDir();
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+
+        target.mkdirs();
+        target.deleteOnExit();
+
+        CompilationResult result = null;
+        result = compiler.compile(root, target, loader);
+
+        assertTrue(RESULT_HAS_NO_ERRORS, !result.hasErrors());
+        System.out.println(result.getCompilerOutput());
+        assertTrue(TARGET_DIR_EXISTS, target != null);
+        File classFile1 = new File(target.getAbsolutePath() + "/compiler/TestProbe1.class");
+        File classFile2 = new File(target.getAbsolutePath() + "/compiler/TestProbe2.class");
+
+        assertTrue(CLASSFILE1_IS_COMPILED1, classFile1.exists());
+        assertTrue(CLASSFILE2_IS_COMPILED, classFile2.exists());
+        classFile1.delete();
+        classFile2.delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().mkdirs();
+        //testFullCompileWhitelist();
+    }
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/ScalaCompilerTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/ScalaCompilerTest.java
new file mode 100644
index 0000000..a71dea0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/ScalaCompilerTest.java
@@ -0,0 +1,135 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.FactoryEngines;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+import org.apache.myfaces.extensions.scripting.core.engine.compiler.ScalaCompiler;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class ScalaCompilerTest
+{
+    private static final String PROBE1 = "../../src/test/resources/compiler/TestProbe1Scala.scala";
+    private static final String PROBE2 = "../../src/test/resources/compiler/TestProbe2Scala.scala";
+    private static final String RESOURCES = "../../src/test/resources/";
+
+    File probe1;
+    File probe2;
+    File root;
+
+    private static final String RESULT_HAS_NO_ERRORS = "result has no errors";
+    private static final String TARGET_DIR_EXISTS = "targetDir exists files are compiled into the targetDir";
+    private static final String CLASSFILE1_IS_COMPILED = "Classfile1 is compiled into the targetDir";
+    private static final String CLASSFILE1_IS_COMPILED1 = "Classfile1 is compiled into the target";
+    private static final String CLASSFILE2_IS_COMPILED = "Classfile2 is compiled into the target";
+
+    public ScalaCompilerTest()
+    {
+        try
+        {
+            FactoryEngines.getInstance().init();
+        }
+        catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        //we use a location relative to our current root one to reach the sources
+        //because the test also has to be performed outside of maven
+        //and the ide cannot cope with resource paths for now
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+
+        String currentPath = null;
+
+        try
+        {
+            currentPath = URLDecoder.decode(loader.getResource("./").getPath(), Charset.defaultCharset().toString());
+        }
+        catch (UnsupportedEncodingException e)
+        {
+            fail(e.getMessage());
+        }
+
+        String sourcePath1 = currentPath + PROBE1;
+        String sourcePath2 = currentPath + PROBE2;
+        String rootPath = currentPath + RESOURCES;
+
+        sourcePath1 = FilenameUtils.normalize(sourcePath1);
+        sourcePath2 = FilenameUtils.normalize(sourcePath2);
+        rootPath = FilenameUtils.normalize(rootPath);
+
+        probe1 = new File(sourcePath1);
+        probe2 = new File(sourcePath2);
+        root = new File(rootPath);
+
+        WeavingContext.getInstance().setConfiguration(new Configuration());
+        WeavingContext.getInstance().getConfiguration().addSourceDir(ScriptingConst.ENGINE_TYPE_JSF_SCALA,
+                root.getAbsolutePath());
+
+    }
+
+    @Test
+    public void testFullCompile()
+    {
+        ScalaCompiler compiler = new ScalaCompiler();
+        File targetDir = null;
+
+        File target = FileUtils.getTempDir();
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+
+        target.mkdirs();
+        target.deleteOnExit();
+
+        CompilationResult result = compiler.compile(root, target, loader);
+
+        assertTrue(RESULT_HAS_NO_ERRORS, !result.hasErrors());
+
+        assertTrue(TARGET_DIR_EXISTS, target != null);
+        File classFile1 = new File(target.getAbsolutePath() + "/compiler/TestProbe1Scala.class");
+        File classFile2 = new File(target.getAbsolutePath() + "/compiler/TestProbe2Scala.class");
+
+        assertTrue(CLASSFILE1_IS_COMPILED1, classFile1.exists());
+        assertTrue(CLASSFILE2_IS_COMPILED, classFile2.exists());
+        classFile1.delete();
+        classFile2.delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().delete();
+        WeavingContext.getInstance().getConfiguration().getCompileTarget().mkdirs();
+
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/probes/MethodReloadingProbe.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/probes/MethodReloadingProbe.java
new file mode 100644
index 0000000..e74801b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/probes/MethodReloadingProbe.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.probes;
+
+/**
+ * Interface which will allow the proxying of our probe
+ * in reloading handlers
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface MethodReloadingProbe {
+
+    /**
+     * testmethod 1 goes through
+     */
+    public void testMethod1();
+
+    /**
+     * this one throws an exception
+     */
+    public void testMethod2();
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/probes/Probe.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/probes/Probe.java
new file mode 100644
index 0000000..8cee277
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/probes/Probe.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.probes;
+
+import org.junit.Ignore;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          testprobe for our reflectutils
+ */
+
+@Ignore
+public class Probe implements MethodReloadingProbe
+{
+
+    public Probe() {
+    }
+
+    public Probe(String hello, String world) {
+        
+    }
+
+    public void testMethod1() {
+
+    }
+
+    public void testMethod2() {
+        throw new NullPointerException("for test");
+    }
+
+    public boolean testMethod3(String param1) {
+        return true;
+    }
+
+    public static boolean testMethod4(String param1, String param2) {
+        return true;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/probes/Probe2.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/probes/Probe2.java
new file mode 100644
index 0000000..e9d2d2b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/probes/Probe2.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.probes;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class Probe2 {
+
+    public Probe2(String[] test) {
+
+    }
+
+    public static Boolean myHello(String xxx) {
+        return Boolean.TRUE;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/AbstractGeneratorTestCase.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/AbstractGeneratorTestCase.java
new file mode 100644
index 0000000..3c82d1f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/AbstractGeneratorTestCase.java
@@ -0,0 +1,201 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.extensions.scripting.core.support;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+
+/**
+ * <p>Base class for test cases that generate Java source files.</p>
+ */
+public abstract class AbstractGeneratorTestCase extends TestCase {
+
+    /**
+     * The temporary test directory where test cases store generated Java source files, etc.
+     */
+    private File testDirectory;
+
+    // ------------------------------------------ Test lifecycle methods
+
+    /**
+     * <p>Creates a temporary directory that can be used to store
+     * generated source files and compiled class files within it.</p>
+     */
+    @Override
+    public void setUp() throws Exception {
+        // Create the test directory within the directory that the class file of this test case is located in
+        testDirectory =
+                new File(URLDecoder.decode(getClass().getResource(".").toURI().getPath(), Charset.defaultCharset().toString()), "test");
+        if (!testDirectory.mkdirs() && !testDirectory.exists()) {
+            throw new IllegalStateException(
+                    "Couldn't setup the test case for the test case '" + getClass().getName()
+                            + "'. It wasn't possible to create a temporary test folder.");
+        }
+    }
+
+    /**
+     * <p>Deletes the temporary directory including all subdirectories
+     * and files within it.</p>
+     */
+    @Override
+    protected void tearDown() throws Exception {
+        deleteDirectory(testDirectory);
+
+        if (!testDirectory.delete()) {
+            System.err.println("Couldn't delete the temporary test directory '" + testDirectory.getAbsolutePath() + "'.");
+        }
+    }
+
+    // ------------------------------------------ Protected methods
+
+    /**
+     * <p>Writes the given file content to the specified file. Use this method in order to
+     * persist dynamically generated Java code. Note that this method assumes that the given
+     * file name is a relative path to the test directory.</p>
+     *
+     * @param fileName    the Java source file that you want to save
+     * @param fileContent the content that you want to save, i.e. the Java code
+     * @throws java.io.IOException if an I/O-error occurs
+     */
+    protected void writeFile(String fileName, String[] fileContent) throws IOException {
+        writeFile(new File(testDirectory, fileName), fileContent);
+    }
+
+    /**
+     * <p>Writes the given file content to the specified file. Use this method in order to
+     * persist dynamically generated Java code.</p>
+     *
+     * @param file        the Java source file that you want to save
+     * @param fileContent the content that you want to save, i.e. the Java code
+     * @throws java.io.IOException if an I/O-error occurs
+     */
+    protected void writeFile(File file, String[] fileContent) throws IOException {
+        if (!file.getParentFile().exists() && !file.getParentFile().mkdirs() && !!file.createNewFile()) {
+            throw new IllegalStateException("Couldn't create the file '" + file.getAbsolutePath() + "'.");
+        }
+
+        PrintWriter writer = new PrintWriter(new FileOutputStream(file));
+        for (String line : fileContent) {
+            writer.println(line);
+        }
+
+        writer.flush();
+        writer.close();
+
+        // Wait a little bit so that the system updates the timestamps
+        try {
+            Thread.sleep(100);
+        }
+        catch (InterruptedException ex) {
+            Thread.currentThread().interrupt();
+        }
+    }
+
+    /*protected CompilationResult compileFile(String sourcePath, String targetPath, String fileName,
+                                             String[] fileContent)
+            throws IOException, CompilationException
+    {
+        return compileFile(new JSR199Compiler(),
+                new File(buildAbsolutePath(sourcePath)), new File(buildAbsolutePath(targetPath)), fileName,
+            fileContent);
+    }
+
+    protected CompilationResult compileFile(String sourcePath, String targetPath, String fileName, String[] fileContent, ClassLoader classLoader)
+            throws IOException, CompilationException {
+            return compileFile(new JSR199Compiler(),
+              new File(buildAbsolutePath(sourcePath)), new File(buildAbsolutePath(targetPath)), fileName,
+                fileContent, classLoader);
+    }
+
+    protected CompilationResult compileFile(Compiler compiler, String sourcePath, String targetPath,
+                                             String fileName, String[] fileContent)
+            throws IOException, CompilationException {
+            return compileFile(compiler,
+                new File(buildAbsolutePath(sourcePath)), new File(buildAbsolutePath(targetPath)), fileName,
+                fileContent);
+    }
+
+    protected CompilationResult compileFile(Compiler compiler, File sourcePath, File targetPath, String fileName, String[] fileContent)
+            throws IOException, CompilationException {
+        return compileFile(compiler, sourcePath, targetPath, fileName, fileContent, getClass().getClassLoader());
+    }
+
+    protected CompilationResult compileFile(Compiler compiler, File sourcePath, File targetPath, String fileName, String[] fileContent, ClassLoader classLoader)
+            throws IOException, CompilationException {
+        writeFile(new File(sourcePath, fileName), fileContent);
+
+        CompilationResult result = compiler.compile(sourcePath, targetPath, fileName, classLoader);
+        assertFalse("Compilation errors: " + result.getErrors().toString(), result.hasErrors());
+
+        return result;
+    }  */
+
+    /**
+     * <p>Concatenates the given relative path and the path of the test directory. In doing so
+     * an absolute path will be created that you can use to access the according file.</p>
+     *
+     * @param relativePath the relative path of the file that you want to access
+     * @return the absolute path of the file that you want to access
+     */
+    protected String buildAbsolutePath(String relativePath) {
+        return buildAbsoluteFile(relativePath).getAbsolutePath();
+    }
+
+    /**
+     * <p>Concatenates the given relative path and the path of the test directory. In doing so
+     * an absolute file will be created that you can use to access the according file.</p>
+     *
+     * @param relativePath the relative path of the file that you want to access
+     * @return the absolute File object of the file that you want to access
+     */
+    protected File buildAbsoluteFile(String relativePath) {
+        File file = new File(testDirectory, relativePath);
+        if (!file.exists() && !file.mkdirs()) {
+            throw new IllegalStateException("Couldn't create the directory '" + file.getAbsolutePath() + "'.");
+        }
+
+        return file;
+    }
+
+    // ------------------------------------------ Private utility methods
+
+    /**
+     * <p>Deletes all subdirectories and files within the given directory.</p>
+     *
+     * @param directory the directory you want to delete
+     */
+    public static void deleteDirectory(File directory) {
+        for (File file : directory.listFiles()) {
+            if (file.isDirectory()) {
+                deleteDirectory(file);
+            }
+
+            if (!file.delete()) {
+                System.err.println("Couldn't delete the file or directory '" + file.getAbsolutePath() + "'.");
+            }
+        }
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/Consts.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/Consts.java
new file mode 100644
index 0000000..c47a1c0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/Consts.java
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.support;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.*;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class Consts {
+    public static final String PROBE2 = "org.apache.myfaces.extensions.scripting.core.classIdentifier.Probe2";
+    public static String JAVA_FILE_ENDING = ".java";
+    public static final int[] ARTIFACT_TYPES = {
+            ARTIFACT_TYPE_UNKNOWN,
+            ARTIFACT_TYPE_MANAGEDBEAN,
+            ARTIFACT_TYPE_MANAGEDPROPERTY,
+            ARTIFACT_TYPE_RENDERKIT,
+            ARTIFACT_TYPE_VIEWHANDLER,
+            ARTIFACT_TYPE_RENDERER,
+            ARTIFACT_TYPE_COMPONENT,
+            ARTIFACT_TYPE_VALIDATOR,
+            ARTIFACT_TYPE_BEHAVIOR,
+            ARTIFACT_TYPE_APPLICATION,
+            ARTIFACT_TYPE_ELCONTEXTLISTENER,
+            ARTIFACT_TYPE_ACTIONLISTENER,
+            ARTIFACT_TYPE_VALUECHANGELISTENER,
+            ARTIFACT_TYPE_CONVERTER,
+            ARTIFACT_TYPE_LIFECYCLE,
+            ARTIFACT_TYPE_PHASELISTENER,
+            ARTIFACT_TYPE_FACESCONTEXT,
+            ARTIFACT_TYPE_NAVIGATIONHANDLER,
+            ARTIFACT_TYPE_RESPONSEWRITER,
+            ARTIFACT_TYPE_RESPONSESTREAM,
+            ARTIFACT_TYPE_RESOURCEHANDLER,
+            ARTIFACT_TYPE_CLIENTBEHAVIORRENDERER,
+            ARTIFACT_TYPE_SYSTEMEVENTLISTENER,
+    };
+    public static final String JAVA_LANG = "java.lang";
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/ContextUtils.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/ContextUtils.java
new file mode 100644
index 0000000..0726dd0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/ContextUtils.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.support;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.monitor.ResourceMonitor;
+import org.apache.myfaces.extensions.scripting.jsf.adapters.MyFacesSPI;
+
+import java.io.IOException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ContextUtils
+{
+
+        public static void stopSystem() {
+            //I know we should not
+           ResourceMonitor.getInstance().stopIt();
+        }
+
+    /**
+         * A startup routine shared by many tests
+         * to do the basic weaving initialization
+         *
+         * @return the mockup servlet context
+         */
+        public static MockServletContext startupSystem() {
+            MockServletContext context = new org.apache.myfaces.extensions.scripting.core.support.MockServletContext();
+
+            WeavingContext wcontext = WeavingContext.getInstance();
+            try
+            {
+                wcontext.initEngines();
+                wcontext.getConfiguration().init(context);
+                ResourceMonitor.init(context);
+
+                ResourceMonitor.getInstance().performMonitoringTask();
+                ResourceMonitor.getInstance().start();
+
+                WeavingContext.getInstance().setImplementation(MyFacesSPI.getInstance());
+            }
+            catch (IOException e)
+            {
+                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+            }
+
+
+            //WeavingContextInitializer.initWeavingContext(context);
+            return context;
+        }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/LoggingHandler.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/LoggingHandler.java
new file mode 100644
index 0000000..0f0a066
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/LoggingHandler.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.support;
+
+import java.util.logging.Handler;
+import java.util.logging.LogRecord;
+
+/**
+ * A logging handler which can capture our internal logging output
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class LoggingHandler extends Handler {
+    StringBuilder _output = new StringBuilder();
+
+    @Override
+    public void publish(LogRecord record) {
+        _output.append(record.getMessage());
+    }
+
+    public StringBuilder getOutput() {
+        return _output;
+    }
+
+    public void setOutput(StringBuilder output) {
+        _output = output;
+    }
+
+    @Override
+    public void flush() {
+
+    }
+
+    @Override
+    public void close() throws SecurityException {
+
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/MockServletContext.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/MockServletContext.java
new file mode 100644
index 0000000..330d8ba
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/MockServletContext.java
@@ -0,0 +1,118 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.support;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.jsf.startup.StartupServletContextPluginChainLoader;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Field;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Basic unit testing servlet context mock
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class MockServletContext extends org.apache.myfaces.test.mock.MockServletContext
+{
+
+    Map<String, Object> _attributes = new HashMap<String, Object>();
+    Map<String, String> _initParameters = new HashMap<String, String>();
+    String _resourceRoot = "../../src/test/resources/webapp";
+
+    public MockServletContext()
+    {
+        setResourceRoot(_resourceRoot);
+        addInitParameter(ScriptingConst.INIT_PARAM_MYFACES_PLUGIN, StartupServletContextPluginChainLoader.class.getName());
+        //TODO we reroute the init params to
+        //our logical groovy and java dirs relative
+        //to our classpath
+        //ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        //URL rootDir = loader.getResource("/");
+        //String sRootDir = rootDir.getPath();
+        //String resourceDir = sRootDir+File.separator+"webapp";
+        String resourceDir = getResourceDir();
+
+        String javaDir = resourceDir    + File.separator + "WEB-INF" + File.separator + "java";
+        String groovyDir = resourceDir  + File.separator + "WEB-INF" + File.separator + "groovy";
+        String scalaDir = resourceDir   + File.separator + "WEB-INF" + File.separator + "scala";
+
+        addInitParameter(ScriptingConst.INIT_PARAM_CUSTOM_JAVA_LOADER_PATHS, javaDir);
+        addInitParameter(ScriptingConst.INIT_PARAM_CUSTOM_SCALA_LOADER_PATHS, scalaDir);
+        addInitParameter(ScriptingConst.INIT_PARAM_CUSTOM_GROOVY_LOADER_PATHS, groovyDir);
+        addInitParameter(ScriptingConst.INIT_PARAM_RESOURCE_PATH, resourceDir);
+
+    }
+
+    private String getResourceDir()
+    {
+        //private field access
+        Field f = null;
+        String resourceDir = null;
+        try
+        {
+            f = org.apache.myfaces.test.mock.MockServletContext.class.getDeclaredField("documentRoot");
+            f.setAccessible(true);
+            File docRoot = (File) f.get(this);
+            resourceDir = docRoot.getAbsolutePath();
+        }
+        catch (NoSuchFieldException e)
+        {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+        catch (IllegalAccessException e)
+        {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+        return resourceDir;
+    }
+
+    public MockServletContext(String resourceRoot)
+    {
+        setResourceRoot(resourceRoot);
+        addInitParameter(ScriptingConst.INIT_PARAM_MYFACES_PLUGIN, StartupServletContextPluginChainLoader.class.getName());
+    }
+
+    public void setResourceRoot(String newRoot)
+    {
+        _resourceRoot = newRoot;
+        try
+        {
+            super.setDocumentRoot(new File(FilenameUtils.normalize(URLDecoder.decode(Thread.currentThread()
+                    .getContextClassLoader()
+                    .getResource("./")
+                    .getPath(), Charset.defaultCharset().toString()) +
+                    _resourceRoot)));
+        }
+        catch (UnsupportedEncodingException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/PathUtils.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/PathUtils.java
new file mode 100644
index 0000000..d4506bc
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/support/PathUtils.java
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.support;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+
+/**
+ * Supportive utils to access the source
+ * probes directly
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class PathUtils {
+
+    String _currentPath;
+    String _resourceRoot;
+
+    public PathUtils() {
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        //we use a location relative to our current root one to reach the sources
+        //because the test also has to be performed outside of maven
+        //and the ide cannot cope with resource paths for now
+        try
+        {
+            _currentPath = URLDecoder.decode(loader.getResource("./").getPath(), Charset.defaultCharset().toString());
+        }
+        catch (UnsupportedEncodingException e)
+        {
+            throw new RuntimeException(e);
+        }
+        _resourceRoot = _currentPath + "../../src/test/resources";
+    }
+
+    /**
+     * Resource root dir getter
+     *
+     * @return the resource root dir (from our source package)
+     */
+    public String getResourceRoot() {
+        return _resourceRoot;
+    }
+
+    public String getResource(String in) {
+        if (in.startsWith("//") || in.startsWith("\\")) {
+            in = in.substring(1);
+        }
+        return _resourceRoot + File.separator + in;
+    }
+
+    /**
+     * Simulates the Unix touch statement on a relative pathed source file
+     *
+     * @param relativeSourceFile the relative path to the resource file
+     */
+    public void touch(String relativeSourceFile) {
+        File resource = new File(getResource(relativeSourceFile));
+        touch(resource);
+    }
+
+    /**
+     * Unix touch on a file object
+     *
+     * @param resource the file object to be touched
+     */
+    public void touch(File resource) {
+        if (resource.exists()) {
+            resource.setLastModified(System.currentTimeMillis());
+        }
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/utilstest/FileUtilsTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/utilstest/FileUtilsTest.java
new file mode 100644
index 0000000..43bd943
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/utilstest/FileUtilsTest.java
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.utilstest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+import org.apache.myfaces.extensions.scripting.core.support.PathUtils;
+
+import java.io.File;
+import java.util.List;
+
+import static junit.framework.Assert.fail;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test cases for our FileUtils
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class FileUtilsTest {
+    PathUtils pathUtils = new PathUtils();
+
+    @Before
+    public void init() {
+
+    }
+
+    @Test
+    public void testForRegexp() {
+        String fileSep = FileUtils.getFileSeparatorForRegex();
+        assertTrue("must be double backslash instead of single one", (File.separator.equals("\\")) ? fileSep.equals("\\\\") : fileSep.equals(File.separator));
+    }
+
+    @Test
+    public void testGetFileSeparator() {
+        String fileSeparator = FileUtils.getFileSeparator();
+        assertTrue(fileSeparator.equals(File.separator));
+    }
+
+    @Test
+    public void testGetTempDir() {
+        File tempDir = FileUtils.getTempDir();
+        assertTrue(tempDir != null);
+        assertTrue(tempDir.exists());
+    }
+
+    @Test
+    public void testFileStrategy() {
+        List<File> sourceFiles = FileUtils.fetchSourceFiles(new File(pathUtils.getResource("compiler/")), ".java");
+        assertTrue("wildcarding is needed", sourceFiles.size() == 0);
+
+        sourceFiles = FileUtils.fetchSourceFiles(new File(pathUtils.getResource("compiler/")), "java");
+         assertTrue("wildcarding is needed", sourceFiles.size() == 0);
+
+
+        sourceFiles = FileUtils.fetchSourceFiles(new File(pathUtils.getResource("compiler/")), "*.java");
+        assertTrue("source files must have been found", sourceFiles.size() > 2);
+        //check also for subdirs
+        for(File sourceFile: sourceFiles) {
+            if(sourceFile.getAbsolutePath().contains("myPackage")) {
+                return;
+            }
+        }
+        fail("source file must also be in myPackage");
+    }
+
+    @Test
+    public void testDirStrategy() {
+        StringBuilder result = FileUtils.fetchSourcePaths(new File(pathUtils.getResource("compilerx/")), "");
+        assertTrue("invalid dir should result in empty results", result.toString().trim().length() == 0); 
+
+        result = FileUtils.fetchSourcePaths(new File(pathUtils.getResource("compiler/")), "");
+        assertTrue("myPackage should be found", result.toString().trim().contains("myPackage"));
+
+
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/utilstest/ReflectUtilTest.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/utilstest/ReflectUtilTest.java
new file mode 100644
index 0000000..e1bcb40
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/utilstest/ReflectUtilTest.java
@@ -0,0 +1,165 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.utilstest;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.apache.myfaces.extensions.scripting.core.common.util.Cast;
+import org.apache.myfaces.extensions.scripting.core.common.util.Null;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import org.apache.myfaces.extensions.scripting.core.probes.Probe;
+
+import java.lang.reflect.Method;
+import java.util.Collection;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * Testcase for our reflect utils
+ * which we rely heavily upon
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ReflectUtilTest {
+    private static final String HELLO_WORLD = "Hello World";
+    private static final String JAVA_LANG_STRING = "java.lang.String";
+    private static final String MSG_INSTANTIATED = "String must be instantiated";
+    private static final String MSG_PROBE_INSTANTIATED = "Probe must be instantiated";
+    private static final String MSG_INIT_FAIL = "init failed expected";
+
+    @Before
+    public void setUp() throws Exception {
+    }
+
+    @After
+    public void tearDown() throws Exception {
+    }
+
+    @Test
+    public void testInstantiate() throws Exception {
+        String retVal = (String) ReflectUtil.instantiate(JAVA_LANG_STRING);
+        assertTrue(MSG_INSTANTIATED, retVal != null);
+
+        retVal = (String) ReflectUtil.instantiate(JAVA_LANG_STRING, HELLO_WORLD);
+        assertTrue(MSG_INSTANTIATED, retVal != null && retVal.equals(HELLO_WORLD));
+
+        Object myHello = HELLO_WORLD;
+        Object probe = ReflectUtil.instantiate(Probe.class, new Cast(String.class, myHello), HELLO_WORLD);
+        assertTrue(MSG_PROBE_INSTANTIATED, probe != null);
+
+        try {
+            ReflectUtil.instantiate(Probe.class, new Cast(Integer.class, myHello), HELLO_WORLD);
+            fail();
+        } catch (RuntimeException ex) {
+            assertTrue(MSG_INIT_FAIL, true);
+        }
+        probe = ReflectUtil.instantiate(Probe.class, new Null(String.class), new Null(String.class));
+        assertTrue(MSG_PROBE_INSTANTIATED, probe != null);
+
+        try {
+            ReflectUtil.instantiate(Probe.class, new Null(Integer.class), new Null(String.class));
+            fail();
+        } catch (RuntimeException ex) {
+            assertTrue(MSG_INIT_FAIL, true);
+        }
+
+        //TODO (1.1) test fails, but is not used so we can live with it  
+        //probe = ReflectUtil.instantiate(Probe2.class,new Array(String.class, HELLO_WORLD, HELLO_WORLD));
+        //assertTrue("Probe must be instantiated", probe != null);
+    }
+
+    @Test
+    public void testNewObject() throws Exception {
+        String retVal = (String) ReflectUtil.newObject(String.class);
+        assertTrue(MSG_INSTANTIATED, retVal != null);
+    }
+
+    @Test
+    public void testExecuteStaticMethod() throws Exception {
+        Boolean retVal = (Boolean) ReflectUtil.executeStaticMethod(Boolean.class, "valueOf", "true");
+        assertTrue("retval must be true", retVal);
+
+        try {
+            ReflectUtil.executeStaticMethod(Boolean.class, "xx_valueOf", "true");
+            fail();
+        } catch (RuntimeException ex) {
+            assertTrue("Exception must be thrown", true);
+        }
+
+    }
+
+    @Test
+    public void testFastExecuteStaticMethod() throws Exception {
+        Boolean retVal = (Boolean) ReflectUtil.fastExecuteStaticMethod(Boolean.class, "valueOf", "true");
+        assertTrue("retval must be true", retVal);
+    }
+
+    @Test
+    public void testGetAllMethods() throws Exception {
+        Collection<Method> retVal = ReflectUtil.getAllMethods(Boolean.class, "valueOf", 1);
+        assertTrue(retVal.size() == 2);/*String and boolean*/
+        retVal = ReflectUtil.getAllMethods(Object.class, "toString", 0);
+        assertTrue(retVal.size() == 1);/*String and boolean*/
+    }
+
+    @Test
+    public void testExecuteMethod() throws Exception {
+
+        Boolean probe = true;
+        Boolean retVal = (Boolean) ReflectUtil.executeMethod(probe, "valueOf", "true");
+        assertTrue(retVal);
+        String sRetVal = (String) ReflectUtil.executeMethod(probe, "toString");
+        assertTrue(sRetVal.equals("true"));
+
+        Object hashVal = ReflectUtil.executeMethod(new Probe(), "hashCode");
+        assertTrue(hashVal != null);
+
+        try {
+            ReflectUtil.executeMethod(new Probe(), "xx_hashCode");
+            fail();
+        } catch (RuntimeException ex) {
+            assertTrue("calling must faile with an RE", true);
+        }
+    }
+
+    @Test
+    public void testFastExecuteMethod() throws Exception {
+
+        Boolean probe = true;
+        Boolean retVal = (Boolean) ReflectUtil.fastExecuteMethod(probe, "valueOf", "true");
+        assertTrue(retVal);
+        String sRetVal = (String) ReflectUtil.fastExecuteMethod(probe, "toString");
+        assertTrue(sRetVal.equals("true"));
+
+        Object hashVal = ReflectUtil.fastExecuteMethod(new Probe(), "hashCode");
+        assertTrue(hashVal != null);
+
+    }
+
+    @Test
+    public void testCast() {
+        assertTrue("Cast testing", ReflectUtil.cast(String.class, HELLO_WORLD) instanceof Cast);
+        assertTrue("Cast testing", ReflectUtil.nullCast(String.class) instanceof Null);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/brokenwebapp/WEB-INF/web.xml b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/brokenwebapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b747c9f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/brokenwebapp/WEB-INF/web.xml
@@ -0,0 +1,110 @@
+<?xml version="1.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.
+-->
+<web-app version="2.5" 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-app_2_5.xsd">
+
+
+
+    
+    <!--
+    <context-param>
+        <description>a comma separated whitelist of root packages which are compiled those and nothing else
+            will be compiled during all compile stages, all other files stay permanently as they are
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.PGK_WHITELIST</param-name>
+        <param-value>org.apache.myfaces.groovyloader.blog</param-value>
+    </context-param>
+    -->
+    
+
+    <!--
+     <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>D:/dev/work/ideaprojects/threads/extscript/examples/myfaces20-example/src/main/webapp/WEB-INF/groovy</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>D:/dev/work/ideaprojects/threads/extscript/examples/myfaces20-example/src/main/webapp/WEB-INF/java</param-value>
+    </context-param>
+
+
+    -->
+
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>State saving method: "client" or "server" (= default)
+            See JSF Specification 2.5.3
+        </description>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>
+            /WEB-INF/facelets/groovy-taglib.xml;/WEB-INF/facelets/tomahawk.taglib.xml
+        </param-value>
+    </context-param>
+
+    <!-- Listener, to allow Jetty serving MyFaces apps -->
+    <listener>
+        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+
+    <!-- Welcome files -->
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java
new file mode 100644
index 0000000..10dda06
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package compiler;
+
+/**
+ * a simple testprobe to check if the compiler api works
+ */
+
+public class TestProbe1 {
+
+    private String testAttr;
+
+    public String getTestAttr() {
+        return testAttr;
+    }
+
+    public void setTestAttr(String testAttr) {
+        this.testAttr = testAttr;
+    }
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1Groovy.groovy b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1Groovy.groovy
new file mode 100644
index 0000000..f7c27ea
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1Groovy.groovy
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+package compiler;
+
+/**
+ * a simple testprobe to check if the compiler api works
+ */
+
+public class TestProbe1Groovy {
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1Scala.scala b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1Scala.scala
new file mode 100644
index 0000000..39a6286
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1Scala.scala
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package compiler
+
+/**
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+class TestProbe1Scala
+{
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2.java
new file mode 100644
index 0000000..5c6da6b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2.java
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+package compiler;
+
+/**
+ * a simple testprobe to check if the compiler api works
+ */
+
+public class TestProbe2 {
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2Groovy.groovy b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2Groovy.groovy
new file mode 100644
index 0000000..4ad7797
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2Groovy.groovy
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package compiler;
+
+/**
+ * a simple testprobe to check if the compiler api works
+ */
+
+public class TestProbe2Groovy {
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2Scala.scala b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2Scala.scala
new file mode 100644
index 0000000..6ac5e7a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2Scala.scala
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package compiler
+
+/**
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+class TestProbe2Scala
+{
+
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/myPackage/WhiteListedProbe.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/myPackage/WhiteListedProbe.java
new file mode 100644
index 0000000..94db93a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/myPackage/WhiteListedProbe.java
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+package compiler.myPackage;
+
+/**
+ * White listed probe for the compiler api
+ */
+public class WhiteListedProbe {
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/myPackage/WhiteListedProbeGroovy.groovy b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/myPackage/WhiteListedProbeGroovy.groovy
new file mode 100644
index 0000000..0965f5a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/compiler/myPackage/WhiteListedProbeGroovy.groovy
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+package compiler.myPackage;
+
+/**
+ * White listed probe for the compiler api
+ */
+public class WhiteListedProbeGroovy {
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/groovy/Test1.groovy b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/groovy/Test1.groovy
new file mode 100644
index 0000000..488e902
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/groovy/Test1.groovy
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+class Test1 {
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/groovy/dummy.txt b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/groovy/dummy.txt
new file mode 100644
index 0000000..7220975
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/groovy/dummy.txt
@@ -0,0 +1,18 @@
+/*
+ * 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.
+ */
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/java/Test2.java b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/java/Test2.java
new file mode 100644
index 0000000..58d5cfd
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/java/Test2.java
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class Test2
+{
+}
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/java/dummy.txt b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/java/dummy.txt
new file mode 100644
index 0000000..7220975
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/java/dummy.txt
@@ -0,0 +1,18 @@
+/*
+ * 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.
+ */
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/web.xml b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..da941cb
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/extscript-core/src/test/resources/webapp/WEB-INF/web.xml
@@ -0,0 +1,155 @@
+<?xml version="1.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.
+-->
+<web-app version="2.5" 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-app_2_5.xsd">
+
+
+    <description>MyProject web.xml</description>
+    <context-param>
+        <description>
+            Initializes the plugins for our groovy handlers
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy
+        </param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>resource paths for our custom JSF2 resource resolver</description>
+        <param-name>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/extscript-examples/myfaces20-example/src/main/webapp
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>a redirecting Facelet resource resolver which allows to pick up templates and resources from our
+            source dir
+        </description>
+        <param-name>facelets.RESOURCE_RESOLVER</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</param-value>
+    </context-param>
+    
+    <!--
+    <context-param>
+        <description>a comma separated whitelist of root packages which are compiled those and nothing else
+            will be compiled during all compile stages, all other files stay permanently as they are
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.PGK_WHITELIST</param-name>
+        <param-value>org.apache.myfaces.groovyloader.blog</param-value>
+    </context-param>
+    -->
+    
+
+    <!--
+     <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>D:/dev/work/ideaprojects/threads/extscript/examples/myfaces20-example/src/main/webapp/WEB-INF/groovy</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>D:/dev/work/ideaprojects/threads/extscript/examples/myfaces20-example/src/main/webapp/WEB-INF/java</param-value>
+    </context-param>
+
+
+    -->
+
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>State saving method: "client" or "server" (= default)
+            See JSF Specification 2.5.3
+        </description>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>
+            /WEB-INF/facelets/groovy-taglib.xml;/WEB-INF/facelets/tomahawk.taglib.xml
+        </param-value>
+    </context-param>
+
+    <!-- Listener, to allow Jetty serving MyFaces apps -->
+    <listener>
+        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+
+    <!-- Welcome files -->
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/extscript-root-1.0.4/extscript-core-root/pom.xml b/extscript-root-1.0.4/extscript-core-root/pom.xml
new file mode 100644
index 0000000..a884639
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-core-root/pom.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>extscript-core-root</artifactId>
+    <packaging>pom</packaging>
+    <name>MyFaces Extension Scripting Core Engine</name>
+    <version>1.0.4</version>
+
+    <description>
+         MyFaces Extension Scripting Core Meta Project
+    </description>
+
+    <parent>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-root</artifactId>
+        <version>1.0.4</version>
+    </parent>
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-core-root</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-core-root</developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-core-root</url>
+    </scm>
+
+    <modules>
+        <module>extscript-core</module>
+        <module>extscript-cdi</module>
+        <!--
+        <module>extscript-myfaces12-extensions</module>
+        <module>extscript-myfaces2-extensions</module>
+        <module>extscript-core-java6</module>
+        -->
+    </modules>
+</project>	
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/pom.xml b/extscript-root-1.0.4/extscript-examples/blog-example/pom.xml
new file mode 100644
index 0000000..99f03c4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/pom.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <artifactId>extscript-examples</artifactId>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <version>1.0.4</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.myfaces.extensions.scripting</groupId>
+    <artifactId>blog-example</artifactId>
+    <packaging>war</packaging>
+    <name>A simple blogging project using myfaces 2.0</name>
+    <version>1.0.4</version>
+    <url>http://www.apache.org</url>
+
+    <scm>
+        <connection>
+            scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-example
+        </connection>
+        <developerConnection>
+            scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-example
+        </developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-example</url>
+    </scm>
+
+    <repositories>
+        <repository>
+            <id>jboss</id>
+            <url>http://repository.jboss.com/maven2/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+
+    </repositories>
+
+    <build>
+        <plugins>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+
+
+        </plugins>
+    </build>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-api</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-impl</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.scripting</groupId>
+            <artifactId>extscript-core</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.apache.myfaces.tomahawk</groupId>
+            <artifactId>tomahawk</artifactId>
+            <version>1.1.6</version>
+            <scope>compile</scope>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jstl</artifactId>
+                    <groupId>javax.servlet</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/LICENSE.TXT b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/LICENSE.TXT
new file mode 100644
index 0000000..dd5b3a5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/LICENSE.TXT
@@ -0,0 +1,174 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/NOTICE.TXT b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/NOTICE.TXT
new file mode 100644
index 0000000..2158524
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/NOTICE.TXT
@@ -0,0 +1,17 @@
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+------------------------------------------------------------------------
+See the file LICENSE.txt
+See licenses for accompanying products in the "/licenses" subdirectory.
+------------------------------------------------------------------------
+
+This software also includes code from Facelets (https://facelets.dev.java.net/)
+for the purpose of making components and facelet artifacts reloadable from
+other source directories.
+
+This product also includes the ASM bytecode library (http://asm.ow2.org/) for the purpose of
+dependency bytecode scanning.
+
+This product also includes the Groovy runtime http://groovy.codehaus.org/ library (ASL2 license) in binary form as well as
+the Scala http://www.scala-lang.org/ runtime in binary form.
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/licenses/asm-license.txt b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/licenses/asm-license.txt
new file mode 100644
index 0000000..7676ba5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/licenses/asm-license.txt
@@ -0,0 +1,29 @@
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/licenses/facelets-license.txt b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/licenses/facelets-license.txt
new file mode 100644
index 0000000..959625a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/licenses/facelets-license.txt
@@ -0,0 +1,70 @@
+Apache License, Version 2.0
+
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+   1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+   2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+   3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+   4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/licenses/scala-license.txt b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/licenses/scala-license.txt
new file mode 100644
index 0000000..7863fb0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/resources/META-INF/licenses/scala-license.txt
@@ -0,0 +1,35 @@
+SCALA LICENSE
+
+Copyright (c) 2002-2012 EPFL, Lausanne, unless otherwise specified.
+All rights reserved.
+
+This software was developed by the Programming Methods Laboratory of the
+Swiss Federal Institute of Technology (EPFL), Lausanne, Switzerland.
+
+Permission to use, copy, modify, and distribute this software in source
+or binary form for any purpose with or without fee is hereby granted,
+provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+   3. Neither the name of the EPFL nor the names of its contributors
+      may be used to endorse or promote products derived from this
+      software without specific prior written permission.
+
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/faces-config.xml b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..8641883
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,29 @@
+<?xml version="1.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.
+-->
+<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">
+    <managed-bean>
+        <managed-bean-name>javaBlogView</managed-bean-name>
+        <managed-bean-class>blog.Blog</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+</faces-config>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/Blog.groovy b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/Blog.groovy
new file mode 100644
index 0000000..711840f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/Blog.groovy
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+package groovyblog
+
+import java.util.logging.Logger
+import javax.faces.bean.ManagedBean
+import javax.faces.bean.RequestScoped
+
+@ManagedBean(name = "blogView")
+@RequestScoped
+public class Blog {
+  //bug application and session scoped beans  are not refreshed structurally yet
+
+  Logger log = Logger.getLogger(Blog.class.getName())
+
+  String title = "Hello to the myfaces 2.0  Groovy dynamic blogging"
+  String title1 = "You can alter the code for this small blogging application on the fly, you even can add new classes on the fly and Grooy will pick it up"
+
+  String firstName = "aaa"
+  String lastName = ""
+  String topic = ""
+
+  String content = ""
+
+  public String addEntry() {
+    log.info("adding entry");
+
+
+    def service = JSFUtil.resolveVariable("blogService")
+
+    if (service == null) {
+      log.severe("service not found")
+    } else {
+      log.info("service found")
+
+    }
+
+    BlogEntry entry = new BlogEntry()
+    //we now map it in the verbose way, the lean way would be to do direct introspection attribute mapping
+
+    entry.firstName = firstName
+    entry.lastName = lastName
+    entry.topic = topic
+    entry.content = content
+
+
+
+    service.addEntry(entry)
+
+    //we stay on the same page
+    return null;
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/BlogEntry.groovy b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/BlogEntry.groovy
new file mode 100644
index 0000000..8ac627d
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/BlogEntry.groovy
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package groovyblog;
+
+/**
+ * The entry class 
+ */
+public class BlogEntry
+{
+
+    String firstName = ""
+    String lastName = ""
+    String topic = ""
+    String content = ""
+
+    public String getTopic()
+    {
+        return topic;
+    }
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/BlogService.groovy b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/BlogService.groovy
new file mode 100644
index 0000000..ca16215
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/BlogService.groovy
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package groovyblog
+
+import java.util.logging.Logger
+import javax.faces.bean.ApplicationScoped
+import javax.faces.bean.ManagedBean
+
+@ManagedBean(name = "blogService")
+@ApplicationScoped
+public class BlogService {
+  List blogEntries = new ArrayList()
+
+  public java.util.List getBlogEntries() {
+    return blogEntries
+  }
+
+  public void addEntry2(BlogEntry entry) {
+    Logger log = Logger.getLogger(BlogService.class.getName())
+    log.info("Adding entry 2, topic:" + entry.topic)
+
+    blogEntries.add(entry)
+
+    log.info("blogentries size " + blogEntries.size())
+  }
+
+  public void addEntry(BlogEntry entry) {
+    
+    Logger log = Logger.getLogger(BlogService.class.getName())
+    log.info("Adding entry, topic: " + entry.topic)
+    //entry.topic = "bla bla2"
+    blogEntries.add(entry)
+
+    log.info("blogentries size" + blogEntries.size())
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/BlogService2.groovy b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/BlogService2.groovy
new file mode 100644
index 0000000..a2ffcc8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/BlogService2.groovy
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package groovyblog
+
+import java.util.logging.Logger
+import javax.faces.bean.ManagedBean
+import javax.faces.bean.ApplicationScoped
+
+
+
+
+public class BlogService2 {
+  List blogEntries = new ArrayList()
+
+  
+  public java.util.List getBlogEntries() {
+    return blogEntries
+  }
+
+  public void addEntry(def entry) {
+    Logger log = Logger.getLogger(BlogService.class.getName())
+    log.info("Adding entry, topic: " + entry.topic)
+    entry.topic = "topic from blogservice 2"
+    blogEntries.add(entry)
+
+    log.info("blogentries size" + blogEntries.size())
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/JSFUtil.groovy b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/JSFUtil.groovy
new file mode 100644
index 0000000..e799ddc
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy/groovyblog/JSFUtil.groovy
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package groovyblog;
+
+
+import java.util.logging.Logger
+import javax.faces.context.FacesContext
+
+/**
+ * Utils class to keep the code clean and mean
+ */
+public class JSFUtil {
+
+  public static Object resolveVariable(String beanName) {
+    Logger log = Logger.getLogger(JSFUtil.class.getName())
+    log.info("ElResolver Instance:" + FacesContext.getCurrentInstance().getELContext().getELResolver().toString())
+    return FacesContext.getCurrentInstance().getELContext().getELResolver().getValue(FacesContext.getCurrentInstance().getELContext(), null, beanName)
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BaseInterface.java b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BaseInterface.java
new file mode 100644
index 0000000..88fe252
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BaseInterface.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package blog;
+
+/**
+ * Base interface to test inheritance detection
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public interface BaseInterface {
+}
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/Blog.java b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/Blog.java
new file mode 100644
index 0000000..3a40a38
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/Blog.java
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+package blog;
+
+import java.util.logging.Logger;
+
+import static blog.JSFUtilJava.resolveVariable;
+
+/**
+ * Our Blog View controller
+ * (note we have a dummy annotation here for testing purposes)
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@DependencyTestAnnotation
+public class Blog {
+
+    
+    String title = "<h3>Hello to the MyFaces Dynamic Blogging Example</h3>";
+    String title1 = "You can alter the code for this small blogging application on the fly, " +
+            "you even can add new classes on the fly and Java will pick it up";
+
+    String firstName = "";
+    String lastName = "";
+    String topic = "";
+
+    String content = "";
+
+    private Logger getLog() {
+        return Logger.getLogger(this.getClass().getName());
+    }
+
+    public String addEntry() {
+        getLog().info("adding entry");
+        
+        /*important we have an indirection over an interface here*/
+        BlogServiceInterface service = (BlogServiceInterface) resolveVariable("javaBlogService");
+
+        if (service == null) {
+            getLog().severe("service not found");
+        } else {
+            getLog().fine("service found");
+        }
+
+        BlogEntry entry = new BlogEntry();
+        //we now map it in the verbose way, the lean way would be to do direct introspection attribute mapping
+
+        entry.setFirstName(firstName);
+        entry.setLastName(lastName);
+        entry.setTopic(topic);
+        
+        entry.setContent(content);
+
+        if (service != null) {
+            /*convenience method to call a method on an object dynamically
+            * executeMethod and cast are static imports which encapsulates the
+            * ugly stuff the java introspection provides and reduce
+            * the loc down to sane levels
+            *
+            * note the behavior in case of calling errors
+            * is changed from the default managed behavior
+            * to an unmanaged behavior. This is mostly
+            * the same behavior you get from scripting engines!
+            * 
+            */
+
+            //include for presentation 3
+            //entry.setTopic(debuggingTest());
+              
+            service.addEntry(entry);
+        }
+
+        //we stay on the same page
+        return null;
+    }
+
+    //include for presentation 3
+    /*public String debuggingTest() {
+        return "Debugging Topic set via dynamic code";
+    }*/
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getTitle1() {
+        return title1;
+    }
+
+    public void setTitle1(String title1) {
+        this.title1 = title1;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+  
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BlogEntry.java b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BlogEntry.java
new file mode 100644
index 0000000..4603a25
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BlogEntry.java
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+package blog;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+/**
+ * Domain object for our mini blogging example
+ * Holds the entered blogging data
+ */
+
+public class BlogEntry {
+
+
+    String firstName = "";
+    String lastName = "";
+    String topic = "";
+    String content = "";
+    
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BlogService.java b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BlogService.java
new file mode 100644
index 0000000..a17115e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BlogService.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+package blog;
+
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Application scoped bean (defined in the faces-config for testing purposes)
+ * which stores the blog entries
+ */
+@ManagedBean(name="javaBlogService")
+@ApplicationScoped
+public class BlogService implements BlogServiceInterface {
+
+    List<Object> blogEntries = Collections.synchronizedList(new LinkedList<Object>());
+
+
+    /**
+     * Add an entry to our blogging list
+     * Note: we have a testing annotation,
+     * which does nothing, it is there for testing
+     * purposes only
+     *
+     * @param entry the entry to be added
+     */
+    @DependencyTestAnnotation
+    public void addEntry(BlogEntry entry) {
+       if (entry != null) {
+            blogEntries.add(entry);
+        }
+    }
+
+    public List<Object> getBlogEntries() {
+        return blogEntries;
+    }
+
+    public void setBlogEntries(List<Object> blogEntries) {
+        this.blogEntries = blogEntries;
+    }
+
+    
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BlogServiceInterface.java b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BlogServiceInterface.java
new file mode 100644
index 0000000..5208d6f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/BlogServiceInterface.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package blog;
+
+/**
+ * Test for indirect dependency over interfaces
+ */
+public interface BlogServiceInterface extends BaseInterface {
+
+    public void addEntry(BlogEntry entry);
+    
+}
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/DependencyTestAnnotation.java b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/DependencyTestAnnotation.java
new file mode 100644
index 0000000..127d4cb
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/DependencyTestAnnotation.java
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+package blog;
+
+import java.lang.annotation.*;
+
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DependencyTestAnnotation {
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/JSFUtilJava.java b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/JSFUtilJava.java
new file mode 100644
index 0000000..614a6ac
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/java/blog/JSFUtilJava.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+package blog;
+
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.faces.context.FacesContext;
+
+
+/**
+ * @author werpu2
+ * @date: 01.09.2009
+ * <p/>
+ * A helper for JSF and introspection related tasks
+ */
+public class JSFUtilJava {
+
+    public JSFUtilJava() {
+    }
+
+    /**
+     * resolves a variable in the current facesContext
+     *
+     * @param beanName
+     * @return
+     */
+    public static Object resolveVariable(String beanName) {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+
+        ELContext elContext = facesContext.getELContext();
+        ELResolver elResolver =elContext.getELResolver();
+
+        return elResolver.getValue(elContext, null, beanName);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/scala/scalaBlog/TestBean.scala b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/scala/scalaBlog/TestBean.scala
new file mode 100644
index 0000000..fca9903
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/scala/scalaBlog/TestBean.scala
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package scalaBlog
+
+import beans.BeanProperty
+import javax.faces.bean.{ApplicationScoped, ManagedBean}
+
+@ManagedBean(name="scalaTestBean")
+@ApplicationScoped
+class TestBean {
+   @BeanProperty
+   var title = "A Simple Blogging Example"
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/web.xml b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..6e4322d
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,137 @@
+<?xml version="1.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.
+-->
+<web-app 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-app_3_0.xsd"
+         version="3.0">
+
+    <description>Webproject.xml</description>
+
+    <context-param>
+        <description>
+            Initializes the plugins for our groovy handlers
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.startup.StartupServletContextPluginChainLoader
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <!--
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extscript_trunk/extscript-examples/blog-example/src/main/webapp/WEB-INF/groovy
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.scala.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extscript_trunk/extscript-examples/blog-example/src/main/webapp/WEB-INF/scala
+        </param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extscript_trunk/extscript-examples/blog-example/src/main/webapp/WEB-INF/java
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>resource paths for our custom JSF2 resource resolver</description>
+        <param-name>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extscript_trunk/extscript-examples/blog-example/src/main/webapp
+        </param-value>
+    </context-param>
+    -->
+
+    <context-param>
+        <description>State saving method: "client" or "server" (= default)
+            See JSF Specification 2.5.3
+        </description>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>a redirecting Facelet resource resolver which allows to pick up templates and resources from our
+            source dir
+        </description>
+        <param-name>facelets.RESOURCE_RESOLVER</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</param-value>
+    </context-param>
+
+    <!--
+    Note, this servlet filter is vital without it Ext-Scripting will not work,
+    if you do not set it you will get an appropriate warning in the command line
+    -->
+    <!-- Listener, to allow Jetty serving MyFaces apps -->
+    <listener>
+        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.xhtml</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+
+    <!-- Welcome files -->
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/blog.xhtml b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/blog.xhtml
new file mode 100644
index 0000000..3ec2548
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/blog.xhtml
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:t="http://myfaces.apache.org/tomahawk"
+      xmlns:grv="http://myfaces.apache.org/groovy"
+        xmlns:c="http://java.sun.com/jsp/jstl/core">
+<head>
+    <title>Hello World</title>
+</head>
+<body>
+<ui:composition template="/template.xhtml">
+    <ui:define name="body">
+        <h1>
+            <ui:insert name="title">Ext-Scripting Groovy Blog Example</ui:insert>
+        </h1>
+
+        <h:panelGroup styleClass="stdBoxBig" style="color:black;">
+            <h1>#{scalaTestBean.title}</h1>
+            <h2>In this example you can blog simply by entering text in the fields below and send submit</h2>
+
+            <p>You can change the blogging artifacts on the fly, all the sources can be found under
+                <b>WEB-INF/java/org/apache/myfaces/javaloader/groovy/</b> in your deployment directory</p>
+
+        </h:panelGroup>
+        <h:form id="form">
+            <div class="left" style="margin-top: 3px;">
+                <h:panelGrid id="grid" columns="1" styleClass="stdBox">
+                    <h:outputText id="title1" styleClass="title" value="#{blogView.title}"/>
+                    <h:outputText id="title11" styleClass="title1" value="#{blogView.title1}"/>
+
+                    <hr/>
+
+                    <h:panelGrid columns="2" columnClasses="label, input">
+                        <h:outputText value="First Name"/>
+                        <h:inputText value="#{blogView.firstName}"/>
+                        <h:outputText value="Last Name"/>
+                        <h:inputText value="#{blogView.lastName}"/>
+                        <h:outputText value="Topic of entry"/>
+                        <h:inputText value="#{blogView.topic}"/>
+                    </h:panelGrid>
+                    <h:panelGrid columns="2" columnClasses="label, input">
+                        <h:outputText styleClass="label" value="Content"/>
+                        <h:inputText value="#{blogView.content}"/>
+                    </h:panelGrid>
+                    <hr/>
+                    <h:commandButton styleClass="btn" action="#{blogView.addEntry}" value="Add Blog Entry">
+                        <f:ajax execute="@form" render="content" />
+                    </h:commandButton>
+                </h:panelGrid>
+            </div>
+            <h:panelGrid id="content" columns="1" styleClass="right">
+                <ui:repeat value="#{blogService.blogEntries}" var="item">
+                    <h:panelGrid columns="1" styleClass="messageBox">
+                        <h:panelGroup styleClass="topic">
+                            <h:outputLabel styleClass="label" value="Topic"/>
+                            <h:outputText value="#{item.topic}"/>
+                        </h:panelGroup>
+                        <h:panelGroup styleClass="content">
+                            <h:outputLabel styleClass="label" value="Content"/>
+                            <h:outputFormat escape="false" value="#{item.content}"/>
+                        </h:panelGroup>
+                    </h:panelGrid>
+                    <br/>
+                </ui:repeat>
+            </h:panelGrid>
+        </h:form>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/index.jsp b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/index.jsp
new file mode 100644
index 0000000..d953fe0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/index.jsp
@@ -0,0 +1,22 @@
+<!--
+ * 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.
+-->
+<%@ page session="false" %>
+<%
+    response.sendRedirect("javablog.jsf");
+%>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/javablog.xhtml b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/javablog.xhtml
new file mode 100644
index 0000000..e3efbd8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/javablog.xhtml
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+<h:head>
+    <title>Hello World</title>
+</h:head>
+
+<body>
+<ui:composition template="/template.xhtml">
+
+    <ui:define name="body">
+        <h:outputScript name="jsf.js" library="javax.faces"
+                        target="head"/>
+
+        <h1>
+            <ui:insert name="title">
+                Ext-Scripting Javablog Example
+
+            </ui:insert>
+        </h1>
+        <h:panelGroup  styleClass="stdBoxBig" style="color:black;">
+            <h2>In this example you can blog simply by entering text in the fields below and send submit</h2>
+
+            <p>You can change the blogging artifacts on the fly, all the sources can be found under
+                <b>WEB-INF/java/org/apache/myfaces/javaloader/blog/</b> in your deployment directory</p>
+
+        </h:panelGroup>
+
+        <h:form id="form">
+            <div class="left" style="margin-top: 3px;">
+
+
+                <h:panelGrid id="grid" columns="1" styleClass="stdBox">
+
+                    <h:outputFormat id="title1" escape="false" styleClass="title" value="#{javaBlogView.title}"/>
+                    <h:outputFormat id="title11" escape="false" styleClass="title1" value="#{javaBlogView.title1}"/>
+                    <hr/>
+                    <h:panelGrid columns="2" columnClasses="label, input">
+                        <h:outputText value="First Name"/>
+                        <h:inputText value="#{javaBlogView.firstName}"/>
+                        <h:outputText value="Last Name"/>
+                        <h:inputText value="#{javaBlogView.lastName}"/>
+                        <h:outputText value="Topic of entry"/>
+                        <h:inputText value="#{javaBlogView.topic}"/>
+                    </h:panelGrid>
+                    <h:panelGrid columns="2" columnClasses="label, input">
+                        <h:outputText styleClass="label" value="Content"/>
+                        <h:inputTextarea value="#{javaBlogView.content}"/>
+                    </h:panelGrid>
+                    <hr/>
+                    <h:commandButton styleClass="btn" action="#{javaBlogView.addEntry}" value="Add Blog Entry">
+                        <f:ajax execute="@form" render="content"/>
+                    </h:commandButton>
+                </h:panelGrid>
+            </div>
+            <h:panelGrid id="content" columns="1" styleClass="right">
+                <ui:repeat value="#{javaBlogService.blogEntries}" var="item">
+                    <h:panelGrid columns="1" styleClass="messageBox">
+                        <h:panelGroup styleClass="topic">
+                            <h:outputLabel styleClass="label" value="Topic"/>
+                            <h:outputText value="#{item.topic}"/>
+                        </h:panelGroup>
+                        <h:panelGroup styleClass="content">
+                            <h:outputLabel styleClass="label" value="Content"/>
+                            <h:outputFormat escape="false" value="#{item.content}"/>
+                        </h:panelGroup>
+                    </h:panelGrid>
+                </ui:repeat>
+            </h:panelGrid>
+        </h:form>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/greet/greet.xhtml b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/greet/greet.xhtml
new file mode 100644
index 0000000..0a0f0db
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/greet/greet.xhtml
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+    <title>My First Composite Component</title>
+</head>
+<body>
+
+<composite:interface>
+    <composite:attribute name="who"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:outputText value="Hello composite change, #{cc.attrs.who}!"/>
+</composite:implementation>
+
+</body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/greet/greet2.xhtml b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/greet/greet2.xhtml
new file mode 100644
index 0000000..7b60d47
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/greet/greet2.xhtml
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+    <title>My First Composite Component</title>
+</head>
+<body>
+
+<composite:interface>
+    <composite:attribute name="who"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:outputText value="Hello  composite  greet2, #{cc.attrs.who}!"/>
+</composite:implementation>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/gradient1.jpg b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/gradient1.jpg
new file mode 100644
index 0000000..6987743
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/gradient1.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/gradient2.png b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/gradient2.png
new file mode 100644
index 0000000..d10bdcc
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/gradient2.png
Binary files differ
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/license.txt b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/license.txt
new file mode 100644
index 0000000..507e05e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/license.txt
@@ -0,0 +1,6 @@
+sig07-009_mac.jpg is from the nasa public domain image archive.
+
+http://www.nasaimages.org/luna/servlet/detail/nasaNAS~12~12~64153~168545:Multiwavelength-M81?qvq=q:galaxy+or+constellation+or+hubble+or+spitzer;lc:NVA2~35~35,NVA2~32~32,NVA2~31~31,NVA2~19~19,nasaNAS~16~16,nasaNAS~2~2,NSVS~3~3,nasaNAS~9~9,NVA2~4~4,NVA2~15~15,NVA2~24~24,NVA2~29~29,nasaNAS~12~12,nasaNAS~8~8,nasaNAS~7~7,NVA2~22~22,nasaNAS~10~10,NVA2~13~13,NVA2~18~18,NVA2~27~27,NVA2~9~9,NVA2~1~1,nasaNAS~6~6,NVA2~25~25,NVA2~20~20,nasaNAS~13~13,nasaNAS~22~22,NVA2~16~16,NVA2~8~8,nasaNAS~5~5,nasaNAS~4~4,NVA2~28~28,NVA2~14~14,nasaNAS~20~20,NVA2~17~17,NVA2~30~30,NVA2~21~21,NVA2~26~26,NVA2~23~23,NVA2~44~44,NVA2~42~42,NVA2~38~38,NVA2~45~45,NVA2~39~39,NVA2~43~43,NVA2~41~41,NVA2~37~37,NVA2~49~49,NVA2~53~53,NVA2~51~51,NVA2~56~56,NVA2~47~47,NVA2~54~54,NVA2~33~33,NVA2~36~36,NVA2~34~34,NVA2~57~57,NVA2~52~52,NVA2~48~48,NVA2~50~50,NVA2~46~46,NVA2~55~55&mi=0&trs=8854
+
+license
+http://www.nasa.gov/audience/formedia/features/MP_Photo_Guidelines.html
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/sig07-009_mac.jpg b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/sig07-009_mac.jpg
new file mode 100644
index 0000000..42f8ca6
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/img/sig07-009_mac.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/styles/compilerWindow.css b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/styles/compilerWindow.css
new file mode 100644
index 0000000..e175fef
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/styles/compilerWindow.css
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+div#menu {
+    display: none;
+}
+
+div.centerDiv {
+    width: auto;
+}
+
+div.errorBox {
+    width: auto;
+}
+
+div.errorBox .line {
+    width: auto;
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/styles/main.css b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/styles/main.css
new file mode 100644
index 0000000..ee71381
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/resources/styles/main.css
@@ -0,0 +1,286 @@
+/*
+ * 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.
+ */
+body {
+    background-color: white;
+}
+
+div.centerDiv {
+    margin-left: auto;
+    margin-right: auto;
+    width: 900px;
+}
+
+div.centerDiv form {
+    position: relative;
+}
+
+h1 {
+    color: #9999ff;
+    text-align: center;
+}
+
+div#backGroundFloat {
+    position: fixed;
+    z-index: -1;
+    background-color: black;
+    left: 0px;
+    top: 0px;
+    width: 100%;
+    height: 100%;
+    background-image: url("../resources/img/sig07-009_mac.jpg");
+    background-repeat: no-repeat;
+    overflow: hidden;
+}
+
+#hello {
+    background-color: yellow;
+}
+
+.stdBox, .stdBoxBig, .messageBox {
+    display: block;
+    width: 400px;
+    border: 1px solid white;
+    -moz-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    padding: 5px;
+    border-radius: 8px;
+    background-repeat: repeat-x;
+    margin-bottom: 5px;
+    min-height: 120px;
+
+}
+
+.stdBoxBig {
+    width: 800px;
+}
+
+.stdBox, .stdBoxBig {
+    background-color: white;
+    background-image: url("../resources/img/gradient1.jpg");
+}
+
+.messageBox {
+    background-image: url("../resources/img/gradient2.png");
+}
+
+/*=================================================
+Standard Menu
+===================================================*/
+div#menu {
+    background-color: white;
+    opacity: 0.9;
+    position: absolute;
+    left: 0px;
+    top: 0px;
+    width: 100%;
+    padding: 5px;
+    font-weight: bold;
+
+}
+
+div#menu a {
+    color: blue;
+    margin-right: 10px;
+}
+
+div#menu a:hover {
+    color: red;
+}
+
+/*==================================================
+    Basic CSS information for our
+    taint history component
+    we do not use the compound
+    css for error and history
+    for readability reasons
+    although we have  load
+    of duplication here
+====================================================*/
+
+div.historyBox {
+    width: 820px;
+    heigh: 200px;
+
+    display: block;
+    overflow: auto;
+    border: 1px solid white;
+    color: #dedddd;
+    opacity: 0.92;
+
+    -moz-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    border-radius: 5px;
+
+    padding: 5px;
+    margin-left: 10px;
+
+    background-image: url("../resources/img/gradient2.png");
+    background-repeat: repeat-x;
+}
+
+div.historyBox .line {
+    display: table;
+    width: 780px;
+
+    border: 1px dashed black;
+    background-color: #ccccff;
+    color: black;
+    padding: 5px;
+    margin-top: 10px;
+    margin-left: auto;
+    margin-right: auto;
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+
+    border-radius: 5px;
+}
+
+div.historyBox .line .timestamp {
+    width: 120px;
+    float: left;
+    color: red;
+}
+
+div.historyBox .line .changedFile {
+    width: 650px;
+    overflow: hidden;
+    display: block;
+    float: left;
+}
+
+/*==================================================
+    Basic CSS information for our compiler
+    output component
+====================================================*/
+
+div.errorsLabel {
+    font-size: large;
+    padding-top: 5px;
+    padding-bottom: 10px;
+    padding-left: 5px;
+}
+
+div.warningsLabel {
+    font-size: large;
+    padding-top: 5px;
+    padding-bottom: 10px;
+    padding-left: 5px;
+    width: 100%;
+    margin-top: 10px;
+    border-top: 1px solid black;
+}
+
+div.errorBox {
+    width: 820px;
+    heigh: 200px;
+
+    display: block;
+    overflow: auto;
+    border: 1px solid white;
+    color: #dedddd;
+    opacity: 0.92;
+
+    -moz-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    border-radius: 5px;
+
+    padding: 5px;
+    margin-left: 10px;
+
+    background-image: url("../resources/img/gradient2.png");
+    background-repeat: repeat-x;
+}
+
+div.errorBox .line {
+    display: table;
+    width: 780px;
+
+    border: 1px dashed black;
+    background-color: #ccccff;
+    color: black;
+    padding: 5px;
+    margin-top: 10px;
+    margin-left: auto;
+    margin-right: auto;
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+
+    border-radius: 5px;
+}
+
+div.errorBox .line .lineNo {
+    width: 40px;
+    float: left;
+    color: red;
+}
+
+div.errorBox .line .lineNo {
+    width: 30px;
+    float: left;
+    padding-left: 5px;
+    font-weight: bold;
+    font-size: large;
+}
+
+div.errorBox .line .message {
+    width: 738px;
+    display: block;
+    float: left;
+}
+
+.left {
+    position: absolute;
+    left: 10px;
+    top: 20px;
+}
+
+.right {
+    position: absolute;
+    left: 430px;
+    top: 20px;
+}
+
+.label {
+    font-weight: bold;
+    color: black;
+    width: 150px;
+    padding-right: 5px;
+}
+
+.input input, .input textArea {
+    width: 200px;
+}
+
+input, textArea {
+    border: 1px solid black;
+}
+
+input:focus, textArea:focus {
+    background-color: yellow;
+}
+
+input.btn {
+    width: 100px;
+    margin-left: 263px;
+}
+
+
+.celltop {
+    vertical-align:top;
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/template.xhtml b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/template.xhtml
new file mode 100644
index 0000000..7d988ed
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/template.xhtml
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:exs="http://myfaces.apache.org/ext-scripting"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title>Myfaces Example Facelets</title>
+    <link type="text/css" rel="stylesheet" href="#{resource['styles:main.css']}"/>
+    <ui:insert name="additionalHeadIncludes">
+    </ui:insert>    
+</h:head>
+
+<h:body>
+    <div id="menu">
+        <h:panelGroup>
+            <h:outputLink value="./blog.jsf">Groovy Blogging Example</h:outputLink>
+            <h:outputLink value="./javablog.jsf">Java Blogging Example</h:outputLink>
+        </h:panelGroup>
+    </div>
+
+    <div id="backGroundFloat">
+    </div>
+    <div class="centerDiv">
+        <h:panelGroup>
+            <h3>
+                <h:outputFormat value="Compiler Output" escape="false"/>
+            </h3>
+            <exs:compilerOutput errorsLabel="Errors:" warningsLabel="Warnings:" scriptingLanguage=""/>
+        </h:panelGroup>
+        <h:panelGroup>
+            <h3>
+                <h:outputFormat value="Change History" escape="false"/>
+            </h3>
+            <exs:taintHistory noEntries="5"/>
+        </h:panelGroup>
+
+        <p>
+            <ui:insert name="body">Hello World Example!</ui:insert>
+        </p>
+    </div>
+</h:body>
+
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/template2.xhtml b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/template2.xhtml
new file mode 100644
index 0000000..61d42e5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/blog-example/src/main/webapp/template2.xhtml
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:grv="http://myfaces.apache.org/groovy"
+      xmlns:h="http://java.sun.com/jsf/html">
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Myfaces Example Facelets</title>
+
+    <link type="text/css" rel="stylesheet" href="#{resource['styles:main.css']}"/>
+</head>
+
+<body>
+
+<h:panelGroup>
+    <h3>
+        <h:outputFormat value="Compiler Output" escape="false"/>
+    </h3>
+    <grv:compilerOutput errorsLabel="Errors:" warningsLabel="Warnings:" scriptingLanguage=""/>
+</h:panelGroup>
+
+
+<h1>
+    <ui:insert name="title">Component Testcase</ui:insert>
+</h1>
+
+
+<p>
+    <ui:insert name="body">Hello World Example!</ui:insert>
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/pom.xml b/extscript-root-1.0.4/extscript-examples/cdi-example/pom.xml
new file mode 100644
index 0000000..f68651a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/pom.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <artifactId>extscript-examples</artifactId>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <version>1.0.4</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.myfaces.extensions.scripting</groupId>
+    <artifactId>myfaces21-extscript-cdi</artifactId>
+    <packaging>war</packaging>
+    <name>A simple project for MyFaces 2.1 and Ext-Scripting 1.0 and CDI</name>
+    <version>1.0.4</version>
+    <url>http://www.apache.org</url>
+
+    <scm>
+        <connection>
+            scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld
+        </connection>
+        <developerConnection>
+            scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld
+        </developerConnection>
+        <url>
+            http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld
+        </url>
+    </scm>
+
+
+    <build>
+        <plugins>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+
+
+        </plugins>
+    </build>
+
+    <dependencies>
+        <!--
+             optional Groovy include,
+             if we leave it out, Groovy support is disabled
+             and only java support will work
+         -->
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-all</artifactId>
+            <version>${groovy.version}</version>
+        </dependency>
+
+        <!--
+             Note this is the only dependency we need
+             for ext-scripting, the include is a so called
+             meta bundle, which includes the entire
+             ext-scripting core+java6 support + myfaces 2 support
+         -->
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-api</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-impl</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.scripting</groupId>
+            <artifactId>extscript-myfaces20-bundle</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.scripting</groupId>
+            <artifactId>extscript-cdi</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+
+        <!-- openwebbeans -->
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-impl</artifactId>
+            <version>${openwebbeans.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-jsf</artifactId>
+            <version>${openwebbeans.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-web</artifactId>
+            <version>${openwebbeans.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-resource</artifactId>
+            <version>${openwebbeans.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-spi</artifactId>
+            <version>${openwebbeans.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jcdi_1.0_spec</artifactId>
+            <version>1.0</version>
+
+        </dependency>
+
+        <!-- javax.inject jsr 330 -->
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-atinject_1.0_spec</artifactId>
+            <version>1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-interceptor_1.1_spec</artifactId>
+            <version>1.0</version>
+            <!--scope>runtime</scope -->
+        </dependency>
+
+        <!-- apache compatible jta spec replacement jar -->
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jta_1.1_spec</artifactId>
+            <version>1.1.1</version>
+            <scope>compile</scope>
+        </dependency>
+
+    </dependencies>
+</project>
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/LICENSE.TXT b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/LICENSE.TXT
new file mode 100644
index 0000000..dd5b3a5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/LICENSE.TXT
@@ -0,0 +1,174 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/NOTICE.TXT b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/NOTICE.TXT
new file mode 100644
index 0000000..2158524
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/NOTICE.TXT
@@ -0,0 +1,17 @@
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+------------------------------------------------------------------------
+See the file LICENSE.txt
+See licenses for accompanying products in the "/licenses" subdirectory.
+------------------------------------------------------------------------
+
+This software also includes code from Facelets (https://facelets.dev.java.net/)
+for the purpose of making components and facelet artifacts reloadable from
+other source directories.
+
+This product also includes the ASM bytecode library (http://asm.ow2.org/) for the purpose of
+dependency bytecode scanning.
+
+This product also includes the Groovy runtime http://groovy.codehaus.org/ library (ASL2 license) in binary form as well as
+the Scala http://www.scala-lang.org/ runtime in binary form.
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/beans.xml b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..4070730
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<beans 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/beans_1_0.xsd">
+</beans>
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/licenses/asm-license.txt b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/licenses/asm-license.txt
new file mode 100644
index 0000000..7676ba5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/licenses/asm-license.txt
@@ -0,0 +1,29 @@
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/licenses/facelets-license.txt b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/licenses/facelets-license.txt
new file mode 100644
index 0000000..959625a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/licenses/facelets-license.txt
@@ -0,0 +1,70 @@
+Apache License, Version 2.0
+
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+   1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+   2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+   3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+   4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/licenses/scala-license.txt b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/licenses/scala-license.txt
new file mode 100644
index 0000000..7863fb0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/resources/META-INF/licenses/scala-license.txt
@@ -0,0 +1,35 @@
+SCALA LICENSE
+
+Copyright (c) 2002-2012 EPFL, Lausanne, unless otherwise specified.
+All rights reserved.
+
+This software was developed by the Programming Methods Laboratory of the
+Swiss Federal Institute of Technology (EPFL), Lausanne, Switzerland.
+
+Permission to use, copy, modify, and distribute this software in source
+or binary form for any purpose with or without fee is hereby granted,
+provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+   3. Neither the name of the EPFL nor the names of its contributors
+      may be used to endorse or promote products derived from this
+      software without specific prior written permission.
+
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/faces-config.xml b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..5cd83af
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,24 @@
+<?xml version="1.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.
+-->
+<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">
+</faces-config>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/glassfish-web.xml b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..b798472
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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 glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/java/JavaHello.java b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/java/JavaHello.java
new file mode 100644
index 0000000..72cc656
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/java/JavaHello.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+
+
+import javax.inject.Named;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * Hello world CDI Java Bean for testing purposes
+ */
+@Named
+public class JavaHello
+{
+    String helloWorld = "Hello world from Java Bean";
+
+    public String getHelloWorld()
+    {
+        return helloWorld;
+    }
+
+    public void setHelloWorld(String helloWorld)
+    {
+        this.helloWorld = helloWorld;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/sun-web.xml b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..0094f2b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/sun-web.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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 sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 Servlet 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
+<sun-web-app error-url="">
+  <context-root>/testenterpriseweb2</context-root>
+  <class-loader delegate="false"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+  <property name="useMyFaces" value="true"/>
+  <property name="useBundledJsf" value="true"/>
+</sun-web-app>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/web.xml b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..55bcdcc
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,148 @@
+<?xml version="1.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.
+-->
+<web-app version="2.5" 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-app_2_5.xsd">
+
+
+    <description>Webproject.xml</description>
+
+
+    <!--
+    Note this entry is vital it plugs the ext-scripting system into
+    a myfaces extension point
+    -->
+    <context-param>
+        <description>
+            Initializes the plugins for our groovy handlers
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.startup.StartupServletContextPluginChainLoader
+        </param-value>
+    </context-param>
+
+
+    <!--
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/development/workspace/extensions-scripting3/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy
+        </param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/development/workspace/extensions-scripting3/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>resource paths for our custom JSF2 resource resolver</description>
+        <param-name>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/development/workspace/extensions-scripting3/extscript-examples/myfaces20-example/src/main/webapp
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>a redirecting Facelet resource resolver which allows to pick up templates and resources from our
+            source dir
+        </description>
+        <param-name>facelets.RESOURCE_RESOLVER</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</param-value>
+    </context-param>
+    -->
+    <!--
+    <context-param>
+        <description>a comma separated whitelist of root packages which are compiled those and nothing else
+            will be compiled during all compile stages, all other files stay permanently as they are
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.PGK_WHITELIST</param-name>
+        <param-value>org.apache.myfaces.groovyloader.blog</param-value>
+    </context-param>
+    -->
+
+
+
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>State saving method: "client" or "server" (= default)
+            See JSF Specification 2.5.3
+        </description>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+
+    <!--
+    Note, this servlet filter is vital without it Ext-Scripting will not work,
+    if you do not set it you will get an appropriate warning in the command line
+    -->
+    <listener>
+        <listener-class>org.apache.webbeans.servlet.WebBeansConfigurationListener</listener-class>
+    </listener>
+
+
+    <!-- Listener, to allow Jetty serving MyFaces apps -->
+    <listener>
+        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+
+    <!-- Welcome files -->
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/helloWorld.xhtml b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/helloWorld.xhtml
new file mode 100644
index 0000000..14855b0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/cdi-example/src/main/webapp/helloWorld.xhtml
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+        >
+<h:head>
+    <title>Hello World</title>
+</h:head>
+<h:body>
+
+    <h:outputText value="#{javaHello.helloWorld}" />
+
+</h:body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/pom.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/pom.xml
new file mode 100644
index 0000000..27170ef
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/pom.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <artifactId>extscript-examples</artifactId>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <version>1.0.4</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.myfaces.extensions.scripting</groupId>
+    <artifactId>myfaces20-example</artifactId>
+    <packaging>war</packaging>
+    <name>A custom project using myfaces 2.0</name>
+    <version>1.0.4</version>
+    <url>http://www.apache.org</url>
+
+    <scm>
+        <connection>
+            scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-example
+        </connection>
+        <developerConnection>
+            scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-example
+        </developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-example</url>
+    </scm>
+
+    <repositories>
+        <repository>
+            <id>jboss</id>
+            <url>http://repository.jboss.com/maven2/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+
+    </repositories>
+
+    <build>
+        <plugins>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+
+
+        </plugins>
+    </build>
+
+    <dependencies>
+        <!--
+             optional Groovy include,
+             if we leave it out, Groovy support is disabled
+             and only java support will work
+         -->
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-all</artifactId>
+            <version>${groovy.version}</version>
+        </dependency>
+
+        <!--
+             Note this is the only dependency we need
+             for ext-scripting, the include is a so called
+             meta bundle, which includes the entire
+             ext-scripting core+java6 support + myfaces 2 support
+         -->
+        <!--
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.scripting</groupId>
+            <artifactId>extscript-myfaces20-bundle</artifactId>
+            <version>1.0.3-SNAPSHOT</version>
+        </dependency>
+        -->
+       <dependency>
+           <groupId>org.apache.myfaces.extensions.scripting</groupId>
+           <artifactId>extscript-core</artifactId>
+           <version>1.0.4</version>
+       </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-api</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-impl</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+
+        <dependency>
+            <groupId>javax.portlet</groupId>
+            <artifactId>portlet-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+
+        <!-- bean validation dependencies -->
+        <!--
+             note, this is a purely optional 
+             dependency part and is only needed
+             if you want to run bean validation
+             and/or MyFaces ext-val
+         -->
+
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.validator</groupId>
+            <artifactId>myfaces-extval-core</artifactId>
+            <version>${extval.version}</version>
+        </dependency>
+       <!--
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.validator.validation-modules</groupId>
+            <artifactId>myfaces-extval-property-validation</artifactId>
+            <version>${extval.version}</version>
+        </dependency>
+        -->
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.validator.validation-modules</groupId>
+            <artifactId>myfaces-extval-bean-validation</artifactId>
+            <version>${extval.version}</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <version>4.0.0.GA</version>
+        </dependency>
+
+        <!-- Hibernate annotations needs sl4j as dependency -->
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.4.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>1.4.2</version>
+        </dependency>
+
+        <!-- bean validation end -->
+        <dependency>
+            <groupId>org.apache.myfaces.tomahawk</groupId>
+            <artifactId>tomahawk</artifactId>
+            <version>1.1.6</version>
+            <scope>compile</scope>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jstl</artifactId>
+                    <groupId>javax.servlet</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/conf/dev/web.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/conf/dev/web.xml
new file mode 100644
index 0000000..d3ced7c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/conf/dev/web.xml
@@ -0,0 +1,162 @@
+<?xml version="1.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.
+-->
+<web-app version="2.5" 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-app_2_5.xsd">
+
+
+    <description>MyProject web.xml</description>
+    <context-param>
+        <description>
+            Initializes the plugins for our groovy handlers
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</param-value>
+    </context-param>
+
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extscript_trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy
+        </param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extscript_trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>resource paths for our custom JSF2 resource resolver</description>
+        <param-name>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extscript_trunk/extscript-examples/myfaces20-example/src/main/webapp
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>a redirecting Facelet resource resolver which allows to pick up templates and resources from our
+            source dir
+        </description>
+        <param-name>facelets.RESOURCE_RESOLVER</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</param-value>
+    </context-param>
+
+    <!--
+    <context-param>
+        <description>a comma separated whitelist of root packages which are compiled those and nothing else
+            will be compiled during all compile stages, all other files stay permanently as they are
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.PGK_WHITELIST</param-name>
+        <param-value>org.apache.myfaces.groovyloader.blog</param-value>
+    </context-param>
+    -->
+
+
+    <!--
+     <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>D:/dev/work/ideaprojects/threads/extscript/examples/myfaces20-example/src/main/webapp/WEB-INF/groovy</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>D:/dev/work/ideaprojects/threads/extscript/examples/myfaces20-example/src/main/webapp/WEB-INF/java</param-value>
+    </context-param>
+
+
+    -->
+
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>State saving method: "client" or "server" (= default)
+            See JSF Specification 2.5.3
+        </description>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>
+            /WEB-INF/facelets/groovy-taglib.xml;/WEB-INF/facelets/tomahawk.taglib.xml
+        </param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/faces-config.xml</param-value>
+    </context-param>
+
+
+
+    <!-- Listener, to allow Jetty serving MyFaces apps -->
+    <listener>
+        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+
+    <!-- Welcome files -->
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/blank/HelloWorldController.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/blank/HelloWorldController.java
new file mode 100644
index 0000000..d3980ad
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/blank/HelloWorldController.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.blank;
+
+/**
+ * A typical simple backing bean, that is backed to <code>helloworld.jsp</code>
+ */
+public class HelloWorldController {
+
+    //properties
+    private String name;
+
+    /**
+     * default empty constructor
+     */
+    public HelloWorldController() {
+    }
+
+    //-------------------getter & setter
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Method that is backed to a submit button of a form.
+     */
+    public String send() {
+        //do real logic, return a string which will be used for the navigation system of JSF
+        return "success";
+    }
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/blank/TestValidator2.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/blank/TestValidator2.java
new file mode 100644
index 0000000..eaa9fd5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/blank/TestValidator2.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.blank;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class TestValidator2 implements Validator {
+  public void validate(FacesContext facesContext, UIComponent uiComponent, Object o) {
+    System.out.println("validating aaaa ");
+  }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/JavascriptProxyFactory.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/JavascriptProxyFactory.java
new file mode 100644
index 0000000..2dd2bdf
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/JavascriptProxyFactory.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.otherEngines;
+
+import org.apache.commons.io.FileUtils;
+
+import javax.script.Invocable;
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
+import javax.script.ScriptException;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * This is only a demonstration application on how to implement
+ * managed beans in other engines using the java scripting api
+ * We do not really support it but feel free to apply the
+ * techniques used here
+ */
+public class JavascriptProxyFactory implements InvocationHandler {
+
+    static ScriptEngine _engine = null;
+
+    static {
+        ScriptEngineManager manager = new ScriptEngineManager();
+        _engine = manager.getEngineByName("JavaScript");
+    }
+
+    static AtomicInteger _instanceIncr = new AtomicInteger(0);
+    String _jsInstance;
+    Object _jsProxy;
+    String _script;
+
+    protected JavascriptProxyFactory(String classDef, String script) throws ScriptException {
+        int currCnt = _instanceIncr.getAndIncrement();
+        _jsInstance = "myVar_" + currCnt;
+
+        this._script = script + " var " + _jsInstance + " = new " + classDef + "();";
+        _engine.eval(this._script);
+        _jsProxy = _engine.get(_jsInstance);
+
+    }
+
+    public static synchronized Object newInstance(Class theInterface, String jsClass, File script) throws ScriptException {
+
+        try {
+            return java.lang.reflect.Proxy.newProxyInstance(theInterface.getClassLoader(), new Class[]{theInterface}, new JavascriptProxyFactory(jsClass, FileUtils.readFileToString(script)));
+        } catch (IOException e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+        return null;
+    }
+
+    @Override
+    public Object invoke(Object proxy, Method method, Object... args) throws Throwable {
+        Invocable inv = (Invocable) _engine;
+        return inv.invokeMethod(_jsProxy, method.getName(), args);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/TestBean.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/TestBean.java
new file mode 100644
index 0000000..085fb56
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/TestBean.java
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.otherEngines;
+
+
+public interface TestBean {
+    public String getHello();
+    public void sayHello(String hello);
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/TestBean.js b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/TestBean.js
new file mode 100644
index 0000000..d4e6208
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/TestBean.js
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/**
+ * A simple hello world class for the embedded javascript engine
+ */
+var TestBean = function() {
+    this._hello = "hello world from javascript";
+}
+
+
+TestBean.prototype.getHello = function() {
+    return this._hello;
+};
+
+
+TestBean.prototype.setHello = function(hello) {
+    this._hello = hello;
+}
+
+
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/TestBeanImpl.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/TestBeanImpl.java
new file mode 100644
index 0000000..abdc2de
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/java/org/apache/myfaces/otherEngines/TestBeanImpl.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.otherEngines;
+
+import javax.faces.FacesException;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.SessionScoped;
+import javax.script.ScriptException;
+import java.io.File;
+
+@ManagedBean(name = "scriptTestBean")
+@RequestScoped
+public class TestBeanImpl implements TestBean {
+
+    TestBean _delegate = null;
+
+
+    public TestBeanImpl() {
+        try {
+            String resourceRoot = this.getClass().getClassLoader().getResource("./").getFile();
+            //dirty and only works if you run it in maven jetty:run but for the demo this is ok
+            String separator = File.separator;
+            if(separator.equals("\\")) {
+                separator = separator+separator;
+            }
+            String resource = resourceRoot+"../../../../src/main/java/"+"org.apache.myfaces.otherEngines".replaceAll("\\.", separator)+"TestBean.js";
+            _delegate = (TestBean) JavascriptProxyFactory.newInstance(TestBean.class, "TestBean", new File(resource));
+        } catch (ScriptException e) {
+            throw new FacesException(e);
+        }
+    }
+
+    public String getHello() {
+        return _delegate.getHello();
+    }
+
+    public void sayHello(String hello) {
+        _delegate.sayHello(hello);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/LICENSE.TXT b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/LICENSE.TXT
new file mode 100644
index 0000000..dd5b3a5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/LICENSE.TXT
@@ -0,0 +1,174 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/NOTICE.TXT b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/NOTICE.TXT
new file mode 100644
index 0000000..2158524
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/NOTICE.TXT
@@ -0,0 +1,17 @@
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+------------------------------------------------------------------------
+See the file LICENSE.txt
+See licenses for accompanying products in the "/licenses" subdirectory.
+------------------------------------------------------------------------
+
+This software also includes code from Facelets (https://facelets.dev.java.net/)
+for the purpose of making components and facelet artifacts reloadable from
+other source directories.
+
+This product also includes the ASM bytecode library (http://asm.ow2.org/) for the purpose of
+dependency bytecode scanning.
+
+This product also includes the Groovy runtime http://groovy.codehaus.org/ library (ASL2 license) in binary form as well as
+the Scala http://www.scala-lang.org/ runtime in binary form.
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/licenses/asm-license.txt b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/licenses/asm-license.txt
new file mode 100644
index 0000000..7676ba5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/licenses/asm-license.txt
@@ -0,0 +1,29 @@
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/licenses/facelets-license.txt b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/licenses/facelets-license.txt
new file mode 100644
index 0000000..959625a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/licenses/facelets-license.txt
@@ -0,0 +1,70 @@
+Apache License, Version 2.0
+
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+   1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+   2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+   3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+   4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/licenses/scala-license.txt b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/licenses/scala-license.txt
new file mode 100644
index 0000000..7863fb0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/resources/META-INF/licenses/scala-license.txt
@@ -0,0 +1,35 @@
+SCALA LICENSE
+
+Copyright (c) 2002-2012 EPFL, Lausanne, unless otherwise specified.
+All rights reserved.
+
+This software was developed by the Programming Methods Laboratory of the
+Swiss Federal Institute of Technology (EPFL), Lausanne, Switzerland.
+
+Permission to use, copy, modify, and distribute this software in source
+or binary form for any purpose with or without fee is hereby granted,
+provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+   3. Neither the name of the EPFL nor the names of its contributors
+      may be used to endorse or promote products derived from this
+      software without specific prior written permission.
+
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/META-INF/context.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/META-INF/context.xml
new file mode 100644
index 0000000..d2dc8f8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/META-INF/context.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<Context antiJARLocking="true" path="/myfaces20-example-1.0-SNAPSHOT"/>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/TestJavascriptBean.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/TestJavascriptBean.xhtml
new file mode 100644
index 0000000..91ca978
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/TestJavascriptBean.xhtml
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:grv="http://myfaces.apache.org/groovy">
+<head>
+    <title>Hello World</title>
+</head>
+<body>
+<ui:composition template="/template.xhtml">
+    <ui:define name="body">
+        <!-- also we need to add some values here -->
+        <div class="centerDiv">
+            <h:form>
+                <h:panelGroup styleClass="stdBoxBig">
+                    <h:outputFormat value="#{scriptTestBean.hello}"/>
+                </h:panelGroup>
+            </h:form>
+        </div>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/groovy-taglib.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/groovy-taglib.xml
new file mode 100644
index 0000000..0324c9f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/groovy-taglib.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<facelet-taglib 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-facelettaglibrary_2_0.xsd"
+                version="2.0">
+    <!-- author: werner.punz@irian.at -->
+
+    <namespace>http://myfaces.apache.org/groovy</namespace>
+    <tag>
+        <tag-name>groovyvalidator</tag-name>
+        <validator>
+
+            <validator-id>org.apache.myfaces.groovyloader.test.TestValidator</validator-id>
+           
+        </validator>
+    </tag>
+    <tag>
+        <tag-name>groovyconverter</tag-name>
+        <converter>
+            <converter-id>org.apache.myfaces.groovyloader.test.TestConverter</converter-id>
+        </converter>
+    </tag>
+    <tag>
+        <tag-name>testcomponent</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.groovyloader.test.TestComponent</component-type>
+            <renderer-type>org.apache.myfaces.groovyloader.test.Test</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>compilerOutput</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.extensions.scripting.components.CompilerComponent</component-type>
+            <renderer-type>org.apache.myfaces.extensions.scripting.components.CompilerComponentRenderer</renderer-type>
+        </component>
+    </tag>
+
+    <tag>
+        <tag-name>testcomponent2</tag-name>
+        <component>
+            <component-type>at.irian.JavaTestComponent</component-type>
+            <renderer-type>at.irian.JavaTestRenderer</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>testcomponent3</tag-name>
+        <component>
+            <component-type>at.irian.JavaTestComponent</component-type>
+            <renderer-type>at.irian.JavaTestRenderer</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>testValidator1</tag-name>
+        <validator>
+            <validator-id>at.irian.CustomValidator</validator-id>
+        </validator>
+    </tag>
+    <tag>
+        <tag-name>testConverter1</tag-name>
+        <converter>
+            <converter-id>at.irian.CustomConverter</converter-id>
+        </converter>
+    </tag>
+
+
+    <tag>
+        <tag-name>tagHandlertest</tag-name>
+        <component>
+            <component-type>javax.faces.Input</component-type>
+            <renderer-type>javax.faces.Text</renderer-type>
+            <handler-class>org.apache.myfaces.javaloader.componentTest.MyComponentTag</handler-class>
+        </component>
+    </tag>
+
+</facelet-taglib>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/tomahawk.taglib.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/tomahawk.taglib.xml
new file mode 100644
index 0000000..299cdda
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/facelets/tomahawk.taglib.xml
@@ -0,0 +1,478 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<facelet-taglib 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-facelettaglibrary_2_0.xsd"
+                version="2.0">
+    <!-- author: thomas.jachmann@mindmatters.de -->
+    <namespace>http://myfaces.apache.org/tomahawk</namespace>
+    <tag>
+        <tag-name>commandButton</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCommandButton</component-type>
+            <renderer-type>org.apache.myfaces.Button</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>commandLink</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCommandLink</component-type>
+            <renderer-type>org.apache.myfaces.Link</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>dataTable</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlDataTable</component-type>
+            <renderer-type>org.apache.myfaces.Table</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputHidden</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputHidden</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputSecret</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputSecret</component-type>
+            <renderer-type>org.apache.myfaces.Secret</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputText</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputText</component-type>
+            <renderer-type>org.apache.myfaces.Text</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputTextHelp</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputTextHelp</component-type>
+            <renderer-type>org.apache.myfaces.TextHelp</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputTextarea</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputTextarea</component-type>
+            <renderer-type>org.apache.myfaces.Textarea</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>graphicImage</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlGraphicImage</component-type>
+            <renderer-type>org.apache.myfaces.Image</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>message</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlMessage</component-type>
+            <renderer-type>org.apache.myfaces.Message</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>messages</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlMessages</component-type>
+            <renderer-type>org.apache.myfaces.Messages</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>outputLabel</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlOutputLabel</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>outputText</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlOutputText</component-type>
+            <renderer-type>org.apache.myfaces.Text</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelGrid</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelGrid</component-type>
+            <renderer-type>org.apache.myfaces.Grid</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelGroup</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelGroup</component-type>
+            <renderer-type>org.apache.myfaces.Group</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneMenu</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectOneMenu</component-type>
+            <renderer-type>org.apache.myfaces.Menu</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectManyMenu</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectManyMenu</component-type>
+            <renderer-type>org.apache.myfaces.Menu</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneRadio</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectOneRadio</component-type>
+            <renderer-type>org.apache.myfaces.Radio</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectBooleanCheckbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectBooleanCheckbox</component-type>
+            <renderer-type>org.apache.myfaces.Checkbox</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectManyCheckbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectManyCheckbox</component-type>
+            <renderer-type>org.apache.myfaces.Checkbox</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneListbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectOneListbox</component-type>
+            <renderer-type>org.apache.myfaces.Listbox</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectManyListbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectManyListbox</component-type>
+            <renderer-type>org.apache.myfaces.Listbox</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputCalendar</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputCalendar</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>jsValueChangeListener</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.JsValueChangeListener</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>jsValueSet</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlJsValueSet</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>checkbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCheckbox</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>commandNavigation</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCommandNavigation</component-type>
+            <renderer-type>org.apache.myfaces.Navigation</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>commandNavigation2</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCommandNavigationItem</component-type>
+            <renderer-type>org.apache.myfaces.NavigationMenu</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>commandSortHeader</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCommandSortHeader</component-type>
+            <renderer-type>org.apache.myfaces.SortHeader</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>dataList</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlDataList</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>dataScroller</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlDataScroller</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputDate</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputDate</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputFileUpload</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputFileUpload</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputHtml</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.InputHtml</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>navigationMenuItem</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.NavigationMenuItem</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>navigationMenuItems</tag-name>
+        <component>
+            <component-type>javax.faces.SelectItems</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>jscookMenu</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.JSCookMenu</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelLayout</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelLayout</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelNavigation</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelNavigation</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelNavigation2</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelNavigationMenu</component-type>
+            <renderer-type>org.apache.myfaces.NavigationMenu</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelTab</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelTab</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelTabbedPane</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelTabbedPane</component-type>
+        </component>
+    </tag>
+    <!-- deactivated since there's no component! tag>
+        <tag-name>tabChangeListener</tag-name>
+        <component>
+        <component-type></component-type>
+        </component>
+        </tag-->
+    <tag>
+        <tag-name>collapsiblePanel</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCollapsiblePanel</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneCountry</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.SelectOneCountry</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneLanguage</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.SelectOneLanguage</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>stylesheet</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.Stylesheet</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>div</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.Div</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>htmlTag</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTag</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>radio</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlRadio</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>tree</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTree</component-type>
+            <renderer-type>org.apache.myfaces.HtmlTree</renderer-type>
+        </component>
+    </tag>
+    <!-- deactivated since there's no component! tag>
+        <tag-name>treeSelectionListener</tag-name>
+        <component>
+        <component-type></component-type>
+        </component>
+        </tag-->
+    <!-- deactivated since there's no component! tag>
+        <tag-name>iconProvider</tag-name>
+        <component>
+        <component-type></component-type>
+        </component>
+        </tag-->
+    <tag>
+        <tag-name>treeColumn</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTreeColumn</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>treeCheckbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTreeCheckbox</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>tree2</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTree2</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelStack</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelStack</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>popup</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPopup</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>newspaperTable</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlNewspaperTable</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>aliasBean</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.AliasBean</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>aliasBeansScope</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.AliasBeansScope</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>buffer</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.Buffer</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>saveState</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.SaveState</component-type>
+        </component>
+    </tag>
+    <!-- deactivated since there's no component! tag>
+        <tag-name>updateActionListener</tag-name>
+        <component>
+        <component-type></component-type>
+        </component>
+        </tag-->
+    <tag>
+        <tag-name>validateCreditCard</tag-name>
+        <validator>
+            <validator-id>org.apache.myfaces.validator.CreditCard</validator-id>
+        </validator>
+    </tag>
+    <tag>
+        <tag-name>validateEmail</tag-name>
+        <validator>
+            <validator-id>org.apache.myfaces.validator.Email</validator-id>
+        </validator>
+    </tag>
+    <tag>
+        <tag-name>validateEqual</tag-name>
+        <validator>
+            <validator-id>org.apache.myfaces.validator.Equal</validator-id>
+        </validator>
+    </tag>
+    <tag>
+        <tag-name>swapImage</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSwapImage</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>columns</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlColumns</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>column</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlColumn</component-type>
+        </component>
+    </tag>
+    <!-- additional validators (note: not in tld, so no code completion) -->
+    <tag>
+        <tag-name>validateRegExpr</tag-name>
+        <validator>
+            <validator-id>org.apache.myfaces.validator.RegExpr</validator-id>
+        </validator>
+    </tag>
+</facelet-taglib>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/faces-config.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..7d438df
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,133 @@
+<?xml version="1.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.
+-->
+<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">
+
+
+    <!-- managed beans of the simple hello world app -->
+    <managed-bean>
+        <managed-bean-name>helloWorld</managed-bean-name>
+        <managed-bean-class>org.apache.myfaces.blank.HelloWorldController</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+
+
+    <managed-bean>
+        <managed-bean-name>testbean</managed-bean-name>
+        <managed-bean-class>org.apache.myfaces.groovyloader.test.TestBean</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean>
+        <managed-bean-name>javatestbean</managed-bean-name>
+        <managed-bean-class>org.apache.myfaces.javaloader.test.TestBean2</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+
+
+    <managed-bean>
+        <managed-bean-name>javaBlogView</managed-bean-name>
+        <managed-bean-class>org.apache.myfaces.javaloader.blog.Blog</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+   <!--
+    <managed-bean>
+        <managed-bean-name>javaBlogService</managed-bean-name>
+        <managed-bean-class>org.apache.myfaces.javaloader.blog.BlogService</managed-bean-class>
+        <managed-bean-scope>application</managed-bean-scope>
+    </managed-bean>
+    -->
+    <application>
+        <navigation-handler>
+            org.apache.myfaces.groovyloader.test.TestNavigationHandler
+        </navigation-handler>
+    </application>
+
+
+    <lifecycle>
+        <phase-listener>
+            org.apache.myfaces.groovyloader.test.TestPhaseListener
+        </phase-listener>
+    </lifecycle>
+
+    <!-- navigation rules for helloWorld.jsp -->
+    <navigation-rule>
+        <from-view-id>/helloWorld.*</from-view-id>
+        <navigation-case>
+            <from-outcome>success</from-outcome>
+            <to-view-id>/page2.jsf</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <!-- navigation rules for page2.jsp -->
+    <navigation-rule>
+        <from-view-id>/page2.*</from-view-id>
+        <navigation-case>
+            <from-outcome>back</from-outcome>
+            <to-view-id>/helloWorld.jsf</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <validator>
+        <validator-id>org.apache.myfaces.groovyloader.test.TestValidator</validator-id>
+        <validator-class>org.apache.myfaces.groovyloader.test.TestValidator</validator-class>
+    </validator>
+    <converter>
+        <converter-id>org.apache.myfaces.groovyloader.test.TestConverter</converter-id>
+        <converter-class>org.apache.myfaces.groovyloader.test.TestConverter</converter-class>
+    </converter>
+
+    <component>
+        <component-type>org.apache.myfaces.groovyloader.test.TestComponent</component-type>
+        <component-class>org.apache.myfaces.groovyloader.test.TestComponent</component-class>
+    </component>
+
+    <render-kit>
+        <renderer>
+            <component-family>javax.faces.Input</component-family>
+            <renderer-type>org.apache.myfaces.groovyloader.test.Test</renderer-type>
+            <renderer-class>org.apache.myfaces.groovyloader.test.TestRenderer</renderer-class>
+        </renderer>
+    </render-kit>
+    <application>
+        <!-- disable an Ext-Val warning which is triggered falsely by the latest version -->
+        <!--
+        <system-event-listener>
+
+            <system-event-listener-class>
+                org.apache.myfaces.extensions.scripting.startup.SuppressExtValWarningStartupListener
+            </system-event-listener-class>
+
+            <system-event-class>javax.faces.event.PostConstructApplicationEvent</system-event-class>
+        </system-event-listener>
+        -->
+        <system-event-listener>
+            <system-event-listener-class>org.apache.myfaces.javaloader.eventTest.TestListener
+            </system-event-listener-class>
+            <system-event-class>javax.faces.event.PreRenderViewEvent</system-event-class>
+        </system-event-listener>
+
+        <resource-handler>org.apache.myfaces.javaloader.test.TestResourceHandler</resource-handler>
+
+
+    </application>
+</faces-config>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/glassfish-web.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..b798472
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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 glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/Blog.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/Blog.groovy
new file mode 100644
index 0000000..7f481e1
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/Blog.groovy
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.blog
+
+import java.util.logging.Logger
+import javax.faces.bean.ManagedBean
+import javax.faces.bean.RequestScoped
+
+@ManagedBean(name = "blogView")
+@RequestScoped
+public class Blog {
+  //bug application and session scoped beans  are not refreshed structurally yet
+
+  Logger log = Logger.getLogger(Blog.class.getName())
+
+  String title = "Hello to the myfaces 2.0  Groovy dynamic blogging"
+  String title1 = "You can alter the code for this small blogging application on the fly, you even can add new classes on the fly and Grooy will pick it up"
+
+  String firstName = ""
+  String lastName = ""
+  String topic = ""
+
+  String content = ""
+
+  public String addEntry() {
+    log.info("adding entry");
+
+
+    def service = JSFUtil.resolveVariable("blogService")
+
+    if (service == null) {
+      log.severe("service not found")
+    } else {
+      log.info("service found")
+
+    }
+
+    BlogEntry entry = new BlogEntry()
+    //we now map it in the verbose way, the lean way would be to do direct introspection attribute mapping
+
+    entry.firstName = firstName
+    entry.lastName = lastName
+    entry.topic = topic
+    entry.content = content
+
+
+
+    service.addEntry(entry)
+
+    //we stay on the same page
+    return null;
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogEntry.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogEntry.groovy
new file mode 100644
index 0000000..0ac183c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogEntry.groovy
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.blog;
+
+/**
+ * The entry class 
+ */
+public class BlogEntry { 
+
+  String firstName = ""
+  String lastName = ""
+  String topic = ""
+  String content = ""
+
+  public String getTopic() {
+    return topic;
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService.groovy
new file mode 100644
index 0000000..259f8a2
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService.groovy
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.blog
+
+import java.util.logging.Logger
+import javax.faces.bean.ApplicationScoped
+import javax.faces.bean.ManagedBean
+
+@ManagedBean(name = "blogService")
+@ApplicationScoped
+public class BlogService {
+  List blogEntries = new ArrayList()
+
+  public java.util.List getBlogEntries() {
+    return blogEntries
+  }
+
+  public void addEntry2(BlogEntry entry) {
+    Logger log = Logger.getLogger(BlogService.class.getName())
+    log.info("Adding entry 2, topic:" + entry.topic)
+
+    blogEntries.add(entry)
+
+    log.info("blogentries size" + blogEntries.size())
+  }
+
+  public void addEntry(BlogEntry entry) {
+    
+    Logger log = Logger.getLogger(BlogService.class.getName())
+    log.info("Adding entry, topic: " + entry.topic)
+    //entry.topic = "bla bla2"
+    blogEntries.add(entry)
+
+    log.info("blogentries size" + blogEntries.size())
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService2.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService2.groovy
new file mode 100644
index 0000000..675b9d9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService2.groovy
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.blog
+
+import java.util.logging.Logger
+import javax.faces.bean.ManagedBean
+import javax.faces.bean.ApplicationScoped
+
+
+
+
+public class BlogService2 {
+  List blogEntries = new ArrayList()
+
+  
+  public java.util.List getBlogEntries() {
+    return blogEntries
+  }
+
+  public void addEntry(def entry) {
+    Logger log = Logger.getLogger(BlogService.class.getName())
+    log.info("------Adding entry, topic: " + entry.topic)
+    entry.topic = "topic from blogservice 2"
+    blogEntries.add(entry)
+
+    log.info("blogentries size" + blogEntries.size())
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/JSFUtil.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/JSFUtil.groovy
new file mode 100644
index 0000000..aa89e5b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/JSFUtil.groovy
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.blog;
+
+
+import java.util.logging.Logger
+import javax.faces.context.FacesContext
+
+/**
+ * Utils class to keep the code clean and mean
+ */
+public class JSFUtil {
+
+  public static Object resolveVariable(String beanName) {
+    Logger log = Logger.getLogger(JSFUtil.class.getName())
+    log.info("ElResolver Instance:" + FacesContext.getCurrentInstance().getELContext().getELResolver().toString())
+    return FacesContext.getCurrentInstance().getELContext().getELResolver().getValue(FacesContext.getCurrentInstance().getELContext(), null, beanName)
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestActionListener.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestActionListener.groovy
new file mode 100644
index 0000000..1bba701
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestActionListener.groovy
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+
+import javax.faces.event.ActionListener
+import javax.faces.event.ActionEvent
+
+/**
+ * @author Werner Punz
+ */
+class TestActionListener implements ActionListener {
+
+  public void processAction(ActionEvent event) {
+    println "processing action from actionlistener"
+  }
+
+}
+
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestBean.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestBean.groovy
new file mode 100644
index 0000000..306e1c9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestBean.groovy
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+/**
+ * @author Werner Punz
+ */
+
+class TestBean {
+  String helloworld = "hallo ist - die bean"
+
+  //note you can add new atrtributes
+  //no setter or getter is needed
+  //and with a single request you will get the
+  //attribute be used in your page
+  //give it a try
+
+  //String newAttribute = "This is a new attribute"
+  //uncomment this and add a control to the page displaying it
+
+  public String getHelloworld() {
+    return helloworld
+  }
+
+
+  public String doit() {
+    print "doit called"
+    return null
+  }
+
+
+  public String getXxx() {
+    " Simple text you can change me on the fly"
+  }
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestComponent.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestComponent.groovy
new file mode 100644
index 0000000..e4c4e3e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestComponent.groovy
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+
+import javax.faces.component.UIInput
+import javax.faces.context.FacesContext
+import javax.faces.el.ValueBinding
+
+/**
+ * @author Werner Punz
+ */
+public class TestComponent extends UIInput {
+
+  private static final String DEFAULT_RENDERER_TYPE2 = "org.apache.myfaces.groovyloader.test.Test";
+
+  String _testattr = "component text";
+  def _testattr_changed = true;
+  def testattr_changed = true;
+
+
+  public TestComponent() {
+    super()
+    setRendererType(DEFAULT_RENDERER_TYPE2)
+  }
+
+  public Object saveState(FacesContext context) {
+    def values = []
+    values[0] = super.saveState(context)
+    values[1] = testattr
+    return values.toArray()
+  }
+
+  public void restoreState(FacesContext context, Object state) {
+    super.restoreState(context, state[0]);
+    _testattr = state[1]
+  }
+
+  public void setTestattr(String attr) {
+    _testattr = attr
+  }
+
+  public String getTestattr() {
+    if (_testattr != null)
+      return _testattr
+
+    ValueBinding vb = getValueBinding("testattr")
+    String v = vb != null ? (String) vb.getValue(getFacesContext()) : null
+    return v != null ? v : ""
+
+  }
+
+
+  public String getFamily() {
+    return "javax.faces.Input";
+  }
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestConverter.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestConverter.groovy
new file mode 100644
index 0000000..9791cda
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestConverter.groovy
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+
+import javax.faces.convert.Converter
+import javax.faces.context.FacesContext
+import javax.faces.component.UIComponent
+
+/**
+ * @author Werner Punz
+ */
+class TestConverter implements Converter {
+
+  public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String s) {
+    print "converting $s"
+    return s;
+  }
+
+  public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object o) {
+    print "converting back  aa"
+    return ((String) o);
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestNavigationHandler.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestNavigationHandler.groovy
new file mode 100644
index 0000000..555c5e4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestNavigationHandler.groovy
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+
+import javax.faces.application.NavigationHandler
+import javax.faces.context.FacesContext
+
+/**
+ * @author Werner Punz
+ */
+class TestNavigationHandler extends NavigationHandler {
+  NavigationHandler _delegate = null;
+
+  public TestNavigationHandler() {
+    super();
+
+  }
+
+  public TestNavigationHandler(NavigationHandler delegate) {
+    super();
+    _delegate = delegate
+  }
+
+
+
+  public void handleNavigation(FacesContext facesContext, String s, String s1) {
+    // if(delegate != null)
+    _delegate.handleNavigation(facesContext, s, s1)
+    print " handle navigation"
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestPhaseListener.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestPhaseListener.groovy
new file mode 100644
index 0000000..51131b3
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestPhaseListener.groovy
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+
+import javax.faces.event.PhaseListener
+import javax.faces.event.PhaseEvent
+import javax.faces.event.PhaseId
+
+/**
+ * @author Werner Punz
+ */
+class TestPhaseListener implements PhaseListener {
+
+  public void afterPhase(PhaseEvent event) {
+    if (event.getPhaseId() == PhaseId.RENDER_RESPONSE)
+      println "restoring a view bbb bbb" + event.getPhaseId()
+
+  }
+
+  public void beforePhase(PhaseEvent event) {
+  }
+
+  public PhaseId getPhaseId() {
+    return PhaseId.ANY_PHASE;
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestRenderer.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestRenderer.groovy
new file mode 100644
index 0000000..f47adcb
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestRenderer.groovy
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+
+import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlTextRendererBase
+import javax.faces.context.FacesContext
+import javax.faces.component.UIComponent
+import javax.faces.context.ResponseWriter;
+
+/**
+ * @author Werner Punz
+ */ 
+public class TestRenderer extends HtmlTextRendererBase {
+
+  public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) {
+
+    //uncomment for demo 1
+    
+    //facesContext.responseWriter.write(myNewString())
+
+
+    facesContext.responseWriter.write """
+            <h1>Hello from a groovy JSF components renderer</h1>
+
+            <p> you can find my sources under WEB-INF/groovy/...</p>
+
+            <p> you can edit the artefacts is running</p>
+            <p> I will pick up the changes after you have hit the reload button </p>
+
+            One note however, <br /> you cannot change components with a simple page
+            refresh,<br /> this works only for renderers
+
+            <p> you have to rebuild the component tree</p>
+
+            <p> Once you are done you can move your sources over and have them compiled into
+            java classes to gain more speed </p>
+
+            <p> You can prototype every jsf artefact that way, managed beans, renderers, validators,
+            phase listeners </p>
+
+            Test for attribute: $uiComponent.testattr
+        """
+
+    super.encodeBegin(facesContext, uiComponent);    //To change body of overridden methods use File | Settings | File Templates.
+  }
+
+  public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) {
+    print super.toString()
+    super.encodeEnd(facesContext, uiComponent);    //To change body of overridden methods use File | Settings | File Templates.
+    facesContext.getResponseWriter().write """\
+            encode end here
+        """
+  }
+
+
+  //uncomment for demo 1
+ /*def myNewString() {
+    return """\
+    <h1 style="color: yellow;"> Hello world from the groovy renderer </h1>
+    """
+  }*/
+  
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestResourceHandler.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestResourceHandler.groovy
new file mode 100644
index 0000000..1d6e519
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestResourceHandler.groovy
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+
+import javax.faces.application.ResourceHandler
+
+import javax.faces.context.FacesContext
+import javax.faces.application.Resource
+/**
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class TestResourceHandler extends ResourceHandler {
+
+    ResourceHandler _delegate
+
+    public TestResourceHandler(delegate) {
+        _delegate = delegate;
+    }
+
+    public TestResourceHandler() {
+        super();    //To change body of overridden methods use File | Settings | File Templates.
+    }
+
+    public Resource createResource(String resourceName) {
+        return _delegate.createResource(resourceName)
+    }
+
+    public Resource createResource(String resourceName, String libraryName) {
+        return _delegate.createResource(resourceName, libraryName)
+    }
+
+    public Resource createResource(String resourceName, String libraryName, String contentType) {
+        return _delegate.createResource(resourceName, libraryName, contentType)
+    }
+
+    public String getRendererTypeForResourceName(String resourceName) {
+        return _delegate.getRendererTypeForResourceName(resourceName)
+    }
+
+    public void handleResourceRequest(FacesContext context) throws IOException {
+        System.out.println("cggsfdlkghfsdkjlghkjfgds")
+        _delegate.handleResourceRequest(context)
+    }
+
+    public boolean isResourceRequest(FacesContext context) {
+        return _delegate.isResourceRequest(context)
+    }
+
+    public boolean libraryExists(String libraryName) {
+        return _delegate.libraryExists(libraryName)
+
+    }
+
+    public ResourceHandler getDelegate() {
+        return _delegate
+    }
+
+    public void setDelegate(ResourceHandler delegate) {
+        _delegate = delegate
+    }
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestValidator.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestValidator.groovy
new file mode 100644
index 0000000..a15a4c4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestValidator.groovy
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+
+import javax.faces.validator.Validator
+import javax.faces.context.FacesContext
+import javax.faces.component.UIComponent
+
+/**
+ * @author Werner Punz
+ */
+class TestValidator implements Validator {
+
+  public void validate(FacesContext facesContext, UIComponent uiComponent, Object o) {
+    println "validating submitted value"
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestViewHandler.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestViewHandler.groovy
new file mode 100644
index 0000000..40b1039
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/test/TestViewHandler.groovy
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.groovyloader.test
+
+import javax.faces.application.ViewHandler
+import javax.faces.context.FacesContext
+import javax.faces.component.UIViewRoot
+
+/**
+ * @author Werner Punz
+ */
+class TestViewHandler extends ViewHandler {
+  //setters and getters are added implicitely
+  ViewHandler delegate;
+
+  /**
+   * needed for reloading
+   */
+  public TestViewHandler() {
+    super();
+  }
+
+  public TestViewHandler(ViewHandler delegate) {
+    super();
+    this.delegate = delegate;
+  }
+
+
+  public Locale calculateLocale(FacesContext facesContext) {
+    return delegate.calculateLocale(facesContext);
+  }
+
+  public String calculateRenderKitId(FacesContext facesContext) {
+    return delegate.calculateRenderKitId(facesContext);
+  }
+
+  public UIViewRoot createView(FacesContext facesContext, String s) {
+    return delegate.createView(facesContext, s);
+  }
+
+  public String getActionURL(FacesContext facesContext, String s) {
+    return delegate.getActionURL(facesContext, s);
+  }
+
+  public String getResourceURL(FacesContext facesContext, String s) {
+    return delegate.getResourceURL(facesContext, s);
+  }
+
+  public void renderView(FacesContext facesContext, UIViewRoot uiViewRoot) {
+    println "hello world from our view handler2 RENDERVIEW"
+
+    delegate.renderView(facesContext, uiViewRoot);
+  }
+
+  public UIViewRoot restoreView(FacesContext facesContext, String s) {
+
+    return delegate.restoreView(facesContext, s);
+  }
+
+  public void writeState(FacesContext facesContext) {
+    delegate.writeState(facesContext);
+  }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/Controller.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/Controller.java
new file mode 100644
index 0000000..1a35e07
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/Controller.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.beanvalidationtesting;
+
+import org.apache.myfaces.extensions.validator.beanval.annotation.BeanValidation;
+import org.apache.myfaces.extensions.validator.beanval.annotation.ModelValidation;
+import org.apache.myfaces.javaloader.beanvalidationtesting.group.Admin;
+import org.apache.myfaces.javaloader.beanvalidationtesting.group.Name;
+import org.apache.myfaces.javaloader.beanvalidationtesting.group.User;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.validation.groups.Default;
+
+
+
+/**
+ * Controller class which is triggered and uses the EXT-VAL validation
+ * the idea is to have full ext-val support in ext-scripting
+ * so that you can edit your constraints and groups on the fly
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+@ManagedBean(name = "validationController")
+@RequestScoped
+public class Controller {
+
+    
+    @BeanValidation.List({
+            @BeanValidation(useGroups = Default.class),
+            @BeanValidation(viewIds = "/beanValidation.xhtml", useGroups = User.class)
+            
+    })
+    private Person person = new Person();
+
+
+
+    public String validateSubmit() {
+        return null;
+    }
+
+
+    public Person getPerson() {
+        return person;
+    }
+
+    public void setPerson(Person person) {
+        this.person = person;
+    }
+
+
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/NameConstraint.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/NameConstraint.java
new file mode 100644
index 0000000..a044368
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/NameConstraint.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.beanvalidationtesting;
+
+/**
+ * @author Gerhard Petracek (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.TYPE;
+
+@Constraint(validatedBy = NameConstraintValidator.class)
+@Target(TYPE)
+@Retention(RUNTIME)
+public @interface NameConstraint
+{
+    String message() default "invalid name";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/NameConstraintValidator.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/NameConstraintValidator.java
new file mode 100644
index 0000000..6fb8344
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/NameConstraintValidator.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.beanvalidationtesting;
+
+/**
+ * @author Gerhard Petracek (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+public class NameConstraintValidator implements
+        ConstraintValidator<NameConstraint, Person>
+{
+    public void initialize(NameConstraint differentName)
+    {
+    }
+
+    public boolean isValid(Person person, ConstraintValidatorContext constraintValidatorContext)
+    {
+        if(person == null || isEmpty(person.getFirstName()) || isEmpty(person.getLastName()))
+        {
+            return true;
+        }
+
+        return !(person.getFirstName().equals(person.getLastName()));
+    }
+
+    private boolean isEmpty(String value)
+    {
+        return value == null || "".equals(value);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/Person.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/Person.java
new file mode 100644
index 0000000..d16a703
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/Person.java
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.beanvalidationtesting;
+
+import org.apache.myfaces.javaloader.beanvalidationtesting.group.Admin;
+import org.apache.myfaces.javaloader.beanvalidationtesting.group.Name;
+import org.apache.myfaces.javaloader.beanvalidationtesting.group.User;
+import org.hibernate.validator.constraints.NotEmpty;
+
+/**
+ * A small testcase of ext-scripting in combination
+ * with ext-val and bean validation
+ *
+ * @author Gerhard Petracek (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+import org.apache.myfaces.extensions.validator.beanval.payload.ViolationSeverity;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+@NameConstraint(groups = Name.class)
+public class Person {
+    @NotNull(payload = ViolationSeverity.Warn.class)
+    private String firstName;
+
+    //demo for bean validation based validation support
+    @NotNull
+    @Size.List({
+            @Size(min = 3, max = 8, groups = User.class),
+            @Size(min = 3, max = 12, groups = Admin.class)
+    })
+    private String lastName;
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/group/Admin.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/group/Admin.java
new file mode 100644
index 0000000..edf24f7
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/group/Admin.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.beanvalidationtesting.group;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public interface Admin
+{
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/group/Name.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/group/Name.java
new file mode 100644
index 0000000..fd7c7d0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/group/Name.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.beanvalidationtesting.group;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public interface Name {
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/group/User.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/group/User.java
new file mode 100644
index 0000000..1f5f395
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/group/User.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.beanvalidationtesting.group;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public interface User {
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BaseInterface.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BaseInterface.java
new file mode 100644
index 0000000..350932f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BaseInterface.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.blog;
+
+/**
+ * Base interface to test inheritance detection
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public interface BaseInterface {
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/Blog.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/Blog.java
new file mode 100644
index 0000000..b7ea47f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/Blog.java
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.blog;
+
+import java.util.logging.Logger;
+
+import static org.apache.myfaces.javaloader.blog.JSFUtilJava.resolveVariable;
+
+/**
+ * Our Blog View controller
+ * (note we have a dummy annotation here for testing purposes)
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@DependencyTestAnnotation
+public class Blog {
+
+    
+    String title = "<h3>Hello to the MyFaces Dynamic Blogging Example</h3>";
+    String title1 = "You can alter the code for this small blogging application on the fly, " +
+            "you even can add new classes on the fly and Java will pick it up";
+
+    String firstName = "";
+    String lastName = "";
+    String topic = "";
+
+    String content = "";
+
+    private Logger getLog() {
+        return Logger.getLogger(this.getClass().getName());
+    }
+
+    public String addEntry() {
+        getLog().info("adding entry");
+        
+        /*important we have an indirection over an interface here*/
+        BlogServiceInterface service = (BlogServiceInterface) resolveVariable("javaBlogService");
+
+        if (service == null) {
+            getLog().severe("service not found");
+        } else {
+            getLog().fine("service found");
+        }
+
+        BlogEntry entry = new BlogEntry();
+        //we now map it in the verbose way, the lean way would be to do direct introspection attribute mapping
+
+        entry.setFirstName(firstName);
+        entry.setLastName(lastName);
+        entry.setTopic(topic);
+        
+        entry.setContent(content);
+
+        if (service != null) {
+            /*convenience method to call a method on an object dynamically
+            * executeMethod and cast are static imports which encapsulates the
+            * ugly stuff the java introspection provides and reduce
+            * the loc down to sane levels
+            *
+            * note the behavior in case of calling errors
+            * is changed from the default managed behavior
+            * to an unmanaged behavior. This is mostly
+            * the same behavior you get from scripting engines!
+            * 
+            */
+
+            //include for presentation 3
+            //entry.setTopic(debuggingTest());
+              
+            service.addEntry(entry);
+        }
+
+        //we stay on the same page
+        return null;
+    }
+
+    //include for presentation 3
+    /*public String debuggingTest() {
+        return "Debugging Topic set via dynamic code";
+    }*/
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getTitle1() {
+        return title1;
+    }
+
+    public void setTitle1(String title1) {
+        this.title1 = title1;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+  
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BlogEntry.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BlogEntry.java
new file mode 100644
index 0000000..c1b34a6
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BlogEntry.java
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.blog;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+/**
+ * Domain object for our mini blogging example
+ * Holds the entered blogging data
+ */
+
+public class BlogEntry {
+
+
+    String firstName = "";
+    String lastName = "";
+    String topic = "";
+    String content = "";
+    
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BlogService.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BlogService.java
new file mode 100644
index 0000000..1442dbb
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BlogService.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.blog;
+
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Application scoped bean (defined in the faces-config for testing purposes)
+ * which stores the blog entries
+ */
+@ManagedBean(name="javaBlogService")
+@ApplicationScoped
+public class BlogService implements BlogServiceInterface {
+
+    List<Object> blogEntries = Collections.synchronizedList(new LinkedList<Object>());
+
+
+    /**
+     * Add an entry to our blogging list
+     * Note: we have a testing annotation,
+     * which does nothing, it is there for testing
+     * purposes only
+     *
+     * @param entry the entry to be added
+     */
+    @DependencyTestAnnotation
+    public void addEntry(BlogEntry entry) {
+       if (entry != null) {
+            blogEntries.add(entry);
+        }
+    }
+
+    public List<Object> getBlogEntries() {
+        return blogEntries;
+    }
+
+    public void setBlogEntries(List<Object> blogEntries) {
+        this.blogEntries = blogEntries;
+    }
+
+    
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BlogServiceInterface.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BlogServiceInterface.java
new file mode 100644
index 0000000..22dbe81
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/BlogServiceInterface.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.blog;
+
+/**
+ * Test for indirect dependency over interfaces
+ */
+public interface BlogServiceInterface extends BaseInterface {
+
+    public void addEntry(BlogEntry entry);
+    
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/DependencyTestAnnotation.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/DependencyTestAnnotation.java
new file mode 100644
index 0000000..af746c9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/DependencyTestAnnotation.java
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.blog;
+
+import java.lang.annotation.*;
+
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DependencyTestAnnotation {
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/JSFUtilJava.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/JSFUtilJava.java
new file mode 100644
index 0000000..0586846
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/blog/JSFUtilJava.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.blog;
+
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.faces.context.FacesContext;
+
+
+/**
+ * @author werpu2
+ * @date: 01.09.2009
+ * <p/>
+ * A helper for JSF and introspection related tasks
+ */
+public class JSFUtilJava {
+
+    public JSFUtilJava() {
+    }
+
+    /**
+     * resolves a variable in the current facesContext
+     *
+     * @param beanName
+     * @return
+     */
+    public static Object resolveVariable(String beanName) {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+
+        ELContext elContext = facesContext.getELContext();
+        ELResolver elResolver =elContext.getELResolver();
+
+        return elResolver.getValue(elContext, null, beanName);
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestComponent.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestComponent.java
new file mode 100644
index 0000000..91d9017
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestComponent.java
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.componentTest;
+
+import org.apache.myfaces.javaloader.other.Markable;
+
+import javax.faces.component.UIInput;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIOutput;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * A simple test component which utilizes the jsf2 annotation API
+ * for and can be reprogrammed on the fly, after a refresh the changes
+ * within the component can be picked up
+ *
+ */
+
+@FacesComponent("at.irian.JavaTestComponent")
+public class JavaTestComponent extends UIInput implements Markable {
+
+    String _testAttr;
+
+    //enum PropertyKeys {
+    //    inc, testAttr, testAttr2, testAttr3, testAttr4
+    //}
+
+    public JavaTestComponent() {
+        setRendererType("at.irian.JavaTestRenderer");
+    }
+
+    public String getMarker() {
+        return "<h4>Component 1 marker</h4>";
+    }
+
+    public void setMarker() {
+
+    }
+
+    public int getInc() {
+        return (Integer) getStateHelper().eval("inc", 1);
+    }
+
+    public void setInc(int inc) {
+        getStateHelper().put("inc", inc);
+    }
+
+    public String getTestAttr() {
+        return (String) getStateHelper().eval("testAttr", "");
+    }
+
+    public void setTestAttr(String testAttr) {
+        getStateHelper().put("testAttr", testAttr);
+    }
+
+    public String getTestAttr2x() {
+        return (String) getStateHelper().eval("testAttr2x", "");
+    }
+
+    public void setTestAttr2x(String testAttr) {
+        getStateHelper().put("testAttr2x", testAttr);
+    }
+
+    public String getTestAttr3() {
+        return (String) getStateHelper().eval("testAttr3x", "");
+    }
+
+    public void setTestAttr3(String testAttr) {
+        getStateHelper().put("testAttr3x", testAttr);
+    }
+
+    /**
+     * Ok guys, lets add a new attribute to the component
+     * which is displayed in our browser page
+     * <p/>
+     * Note we are on jsf 2 level
+     */
+
+    public String getTestAttr4() {
+        return (String) getStateHelper().eval("testAttr4x", "");
+    }
+
+    public void setTestAttr4(String testAttr) {
+        getStateHelper().put("testAttr4x", testAttr);
+    }
+
+    
+
+    public String getMyHello() {
+        return "myHelloworld";
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestComponent2.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestComponent2.java
new file mode 100644
index 0000000..d22bbab
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestComponent2.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.componentTest;
+
+import org.apache.myfaces.javaloader.other.Markable;
+
+import javax.faces.component.UIInput;
+import javax.faces.component.FacesComponent;
+
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * Second component which can act as a drop target for
+ * dragging and dropping the annotations from JavaTestComponent
+ */
+public class JavaTestComponent2 extends UIInput implements Markable {
+
+    public JavaTestComponent2() {
+        setRendererType("at.irian.JavaTestRenderer");
+    }
+
+    public String getMarker() {
+        return "<h1>Component 2 marker</h1>";
+    }
+
+    public void setMarker() {
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestRenderer1.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestRenderer1.java
new file mode 100644
index 0000000..c6ef383
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestRenderer1.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.componentTest;
+
+import org.apache.myfaces.shared.renderkit.html.HtmlTextRendererBase;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.FacesRenderer;
+import java.io.IOException;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Renderer Example with dynamic annotations,
+ *          you can move the annotation from one
+ *          renderer artifact to the other
+ */
+@FacesRenderer(componentFamily = "javax.faces.Input", rendererType = "at.irian.JavaTestRenderer")
+public class JavaTestRenderer1 extends HtmlTextRendererBase {
+
+    static Logger log = Logger.getLogger(JavaTestRenderer1.class.getName());
+
+    private static final String MSG2 = "Hello world from Renderer 1";
+
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        super.encodeBegin(context, component);
+        JavaTestComponent myComponent = (JavaTestComponent) component;
+
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write("<h3>Renderer Demo Java Renderer 1 aaa</h3>");
+        //uncomment for demo 1
+        test(myComponent, writer);
+
+        writer.flush();
+    }
+    
+
+    //uncomment for demo 1
+   
+   private void test(JavaTestComponent myComponent, ResponseWriter writer) throws IOException {
+        writer.write(MSG2);
+        writer.write(myComponent.getMarker());
+        writer.write("<h4 style='color: red;'>TestAttr: " + myComponent.getTestAttr() + " | " + myComponent.getTestAttr3() + "</h4>");
+        writer.write("<h4>" + myComponent.getTestAttr4() + "</h4>");
+    }
+    
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+        log.info("JavaTestRenderer1.encodeEnd");
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestRenderer2.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestRenderer2.java
new file mode 100644
index 0000000..59ba769
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/JavaTestRenderer2.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.componentTest;
+
+import org.apache.myfaces.shared.renderkit.html.HtmlTextareaRendererBase;
+import org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.FacesRenderer;
+import java.io.IOException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          This renderer can act as a drag and drop target for the annotation
+ *          set in JavaTestRenderer1
+ */
+public class JavaTestRenderer2 extends HtmlTextareaRendererBase {
+
+    private static final String MSG = "<h2> Hello world ccc from Renderer 2 </h2>";
+    private static final String MSG2 = "<h3> hello world second var <h3>";
+
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        super.encodeBegin(context, component);
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write(((JavaTestComponent) component).getMyHello());
+        writer.write(MSG2);
+        writer.write((String) ReflectUtil.executeMethod(component, "getMarker"));
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/MyComponentTag.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/MyComponentTag.java
new file mode 100644
index 0000000..2175965
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/componentTest/MyComponentTag.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.componentTest;
+
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.ComponentConfig;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.FaceletContext;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class MyComponentTag extends ComponentHandler {
+
+    static Logger _log = Logger.getLogger(MyComponentTag.class.getName());
+
+    public MyComponentTag(ComponentConfig config) {
+        super(config);
+    }
+
+    public void onComponentCreated(FaceletContext ctx, UIComponent c, UIComponent parent) {
+        _log.info("component create testing");
+        super.onComponentCreated(ctx, c, parent);
+    }
+
+    @Override
+    public void onComponentPopulated(FaceletContext ctx, UIComponent c, UIComponent parent) {
+        super.onComponentPopulated(ctx, c, parent);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/cyclic/Cyclic1.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/cyclic/Cyclic1.java
new file mode 100644
index 0000000..436f5e4
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/cyclic/Cyclic1.java
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.cyclic;
+
+/**
+ * cyclic dependency class test for our class scanner
+ *
+ * This is merely a testcase for the system internal dependency scanner
+ * to prove that cyclic class dependencies can be resolved properly
+ * you can safely ignore this class
+ */
+public class Cyclic1 {
+    Cyclic2 cycl2 = null;
+
+    public Cyclic2 getCycl2() {
+        return cycl2;
+    }
+
+    public void setCycl2(Cyclic2 cycl2) {
+        this.cycl2 = cycl2;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/cyclic/Cyclic2.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/cyclic/Cyclic2.java
new file mode 100644
index 0000000..69368a0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/cyclic/Cyclic2.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.cyclic;
+
+/**
+ * cyclic dependency class test for our class scanner
+ *
+ * This is merely a testcase for the system internal dependency scanner
+ * to prove that cyclic class dependencies can be resolved properly
+ * you can safely ignore this class
+ */
+public class Cyclic2 {
+
+    static Cyclic2 instance = null;
+
+    Cyclic1 cycl1 = null;
+
+    public Cyclic1 getCycl1() {
+        return cycl1;
+    }
+
+    public void setCycl1(Cyclic1 cycl1) {
+        this.cycl1 = cycl1;
+    }
+
+    public static Cyclic2 getInstance() {
+        return instance;
+    }
+
+    public static void setInstance(Cyclic2 instance) {
+        Cyclic2.instance = instance;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/BeanFactory.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/BeanFactory.java
new file mode 100644
index 0000000..ff34b17
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/BeanFactory.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.elResolverTest;
+
+import org.apache.myfaces.javaloader.blog.JSFUtilJava;
+
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import java.util.HashMap;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * A testcase which tried
+ */
+
+@ManagedBean (name="myFactory")
+@ApplicationScoped
+public class BeanFactory extends HashMap {
+
+    public Object getBean() {
+        return new MyBean();    
+    }
+
+    @Override
+    public Object get(Object key) {
+        return JSFUtilJava.resolveVariable("myBean");
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/MyBean.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/MyBean.java
new file mode 100644
index 0000000..361e1af
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/MyBean.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.elResolverTest;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+
+/**
+ * Testcase for intra bean dependency detection
+ * The theory is that if you change something in the referenced bean
+ * secondaryBean also this bean myBean should be reloaded
+ * this mechanism only works if you have some intra code dependencies
+ * if you only have object references than the bean cannot be refreshed for now
+ * due to limitations within the runtime system.
+ *
+ * This limitation will be lifted in the long run
+ * 
+ */
+@ManagedBean(name = "myBean")
+@RequestScoped
+public class MyBean {
+    String test;
+    UIComponent bindingMyTest;
+    String hello = "This is a teststring from the managed bean myBean";
+
+    @ManagedProperty(value = "#{secondaryBean}")
+    Object secondaryBean;
+    
+    public String getTest() {
+        return test;
+    }
+
+    public void setTest(String test) {
+        this.test = test;
+    }
+
+    public UIComponent getBindingMyTest() {
+        return bindingMyTest;
+    }
+
+    public void setBindingMyTest(UIComponent bindingMyTest) {
+        this.bindingMyTest = bindingMyTest;
+    }
+
+    public String getHello() {
+        return hello;
+    }
+
+    public void setHello(String hello) {
+        this.hello = hello;
+    }
+
+
+    
+    public Object getSecondaryBean() {
+        return secondaryBean;
+    }
+
+    public void setSecondaryBean(Object secondaryBean) {
+        //note this pointless cast establises a code level
+        //dependency which can be detected
+        this.secondaryBean = (SecondaryBean) secondaryBean;
+    }
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/Receiver.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/Receiver.java
new file mode 100644
index 0000000..dd7a1ec
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/Receiver.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.elResolverTest;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.SessionScoped;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * Testcase for intra dependency detection, now if you use the bean generated
+ * from the bean factory the Receiver bean will not be refreshed
+ * because we do not have any intra class dependencies
+ * This dependency mismatch will be lifted in the long run but for now
+ * we have to live with it
+ *
+ */
+
+@ManagedBean (name="receiver")
+@SessionScoped
+public class Receiver {
+
+    @ManagedProperty(value = "#{myFactory['booga']}")
+    Object myBean;
+
+    public Object getMyBean() {
+        return myBean;
+    }         
+
+    public void setMyBean(Object myBean) {
+        this.myBean = (MyBean ) myBean;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/SecondaryBean.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/SecondaryBean.java
new file mode 100644
index 0000000..30b3368
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/elResolverTest/SecondaryBean.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.elResolverTest;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+@ManagedBean(name = "secondaryBean")
+@RequestScoped
+public class SecondaryBean {
+    String hello = "This is a teststring from the secondary bean";
+
+    public String getHello() {
+        return hello;
+    }
+
+    public void setHello(String hello) {
+        this.hello = hello;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/eventTest/TestListener.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/eventTest/TestListener.java
new file mode 100644
index 0000000..83dd590
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/eventTest/TestListener.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.eventTest;
+
+import javax.faces.component.UIViewRoot;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * A testcase for dynamic system event listeners which can be changed on the fly
+ */
+
+public class TestListener implements SystemEventListener {
+    static final Logger _log = Logger.getLogger(Logger.class.getName());
+
+    @Override
+    public boolean isListenerForSource(Object source) {
+        return (source instanceof UIViewRoot);  
+    }
+
+    
+    @Override
+    public void processEvent(SystemEvent event) {
+        _log.info("Processing event from a dynamic class: "+event.toString());
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/BaseResourceHandler.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/BaseResourceHandler.java
new file mode 100644
index 0000000..d8910cd
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/BaseResourceHandler.java
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.other;
+
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.Resource;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class BaseResourceHandler extends ResourceHandler {
+
+    ResourceHandler _delegate;
+
+    public BaseResourceHandler() {
+    }
+
+    public BaseResourceHandler(ResourceHandler delegate) {
+        _delegate = delegate;
+    }
+
+    public Resource createResource(String resourceName) {
+        return _delegate.createResource(resourceName);
+    }
+
+    public Resource createResource(String resourceName, String libraryName) {
+        return _delegate.createResource(resourceName, libraryName);
+    }
+
+    public Resource createResource(String resourceName, String libraryName, String contentType) {
+        return _delegate.createResource(resourceName, libraryName, contentType);
+    }
+
+    public String getRendererTypeForResourceName(String resourceName) {
+        return _delegate.getRendererTypeForResourceName(resourceName);
+    }
+
+    public void handleResourceRequest(FacesContext context) throws java.io.IOException {
+        _delegate.handleResourceRequest(context);
+    }
+
+    public boolean isResourceRequest(FacesContext context) {
+        return _delegate.isResourceRequest(context);
+    }
+
+    public boolean libraryExists(String libraryName) {
+        return _delegate.libraryExists(libraryName);
+    }
+
+    public Object getDelegate() {
+        return _delegate;
+    }
+
+    public void setDelegate(Object _delegate) {
+        this._delegate = (ResourceHandler)  _delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/Markable.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/Markable.java
new file mode 100644
index 0000000..0f52a63
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/Markable.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.other;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface Markable {
+
+    public String getMarker();
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/ResourceHandler1.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/ResourceHandler1.java
new file mode 100644
index 0000000..7a36f66
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/ResourceHandler1.java
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.other;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.Resource;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class ResourceHandler1 extends BaseResourceHandler implements Decorated
+{
+    public ResourceHandler1(ResourceHandler delegate) {
+        super(delegate);
+    }
+
+    public ResourceHandler1() {
+    }
+
+    @Override
+    public Resource createResource(String resourceName) {
+        if (resourceName.equals("testResource")) {
+            Resource retVal = new StringResource("hello world from resource handler1, you can change me on the fly, " +
+                    "but you must activate me first in the faces-config.xml file");
+            return retVal;
+        }
+        return super.createResource(resourceName);
+    }
+
+
+    @Override
+    public Object getDelegate() {
+        return super.getDelegate();
+
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/ResourceHandler2.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/ResourceHandler2.java
new file mode 100644
index 0000000..1426ffd
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/ResourceHandler2.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.other;
+
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.Resource;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ResourceHandler2 extends BaseResourceHandler {
+    public ResourceHandler2(ResourceHandler delegate) {
+        super(delegate);
+    }
+
+    @Override
+    public Resource createResource(String resourceName) {
+        if (resourceName.equals("testResource")) {
+            Resource retVal = new StringResource("hello world from resource handler1");
+            return retVal;
+        }
+
+        return super.createResource(resourceName);
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/StringResource.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/StringResource.java
new file mode 100644
index 0000000..c7730de
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/other/StringResource.java
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.other;
+
+import javax.faces.application.Resource;
+import javax.faces.context.FacesContext;
+import java.io.InputStream;
+import java.io.ByteArrayInputStream;
+import java.util.Map;
+import java.net.URL;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class StringResource extends Resource {
+
+    String resourceString = "";
+
+    public StringResource(String resourceString) {
+        this.resourceString = resourceString;
+    }
+
+    @Override
+    public InputStream getInputStream() {
+
+        return new ByteArrayInputStream(resourceString.getBytes());
+    }
+
+    @Override
+    public String getRequestPath() {
+        return null;
+    }
+
+    @Override
+    public Map<String, String> getResponseHeaders() {
+        return null;
+    }
+
+    @Override
+    public URL getURL() {
+        return null;
+    }
+
+    @Override
+    public boolean userAgentNeedsUpdate(FacesContext context) {
+        return false;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/JavaTestBeanReplacement.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/JavaTestBeanReplacement.java
new file mode 100644
index 0000000..6775d03
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/JavaTestBeanReplacement.java
@@ -0,0 +1,108 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.test;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.event.ComponentSystemEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+
+public class JavaTestBeanReplacement {
+
+
+    String sayHello = "<h2>hello world test JavaTestBeanReplacement</h2>";
+    String hello2 = "hello from added attribute JavaTestBeanReplacement";
+    String hello3 = "hello from  added attribute 2 JavaTestBeanReplacement";
+
+
+    @ManagedProperty(value = "#{javatestbean4xxx}")
+    TestBean3 bean3;
+
+    @ManagedProperty(value = "#{javatestbean4}")
+    TestBean4 bean4;
+
+    public void validate(ComponentSystemEvent e) {
+        System.out.println("Validating");
+    }
+
+    public String getSayHello() {
+
+
+       // return bean4.getHello();
+        return sayHello;
+    }
+
+    public String getSayHello2() {
+        return hello2;
+    }
+
+    public void setSayHello(String hello) {
+        this.sayHello = hello;
+        System.out.println("hello world");
+    }
+
+    public void setResource(String param) {
+
+    }
+
+    public String doAction() {
+        return null;
+    }
+
+    public String getResource() throws java.io.IOException {
+        /*  ResourceHandler handler = FacesContext.getCurrentInstance().getApplication().getResourceHandler();
+      Resource resource = handler.createResource("testResource");
+      InputStream istr = resource.getInputStream();
+      BufferedReader rdr = new BufferedReader(new InputStreamReader(istr));
+      StringBuilder strBuf = new StringBuilder();
+      String line = null;
+      try {
+          while ((line = rdr.readLine()) != null) {
+              strBuf.append(line);
+          }
+      } catch (IOException ex) {
+
+      };
+      return strBuf.toString(); */
+        return "hello world";
+    }
+
+    public TestBean3 getBean3() {
+        return bean3;
+    }
+
+    public void setBean3(TestBean3 bean3) {
+        this.bean3 = bean3;
+    }
+
+    public TestBean4 getBean4() {
+        return bean4;
+    }
+
+    public void setBean4(TestBean4 bean4) {
+        this.bean4 = bean4;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java
new file mode 100644
index 0000000..aea5b07
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.test;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.ManagedProperty;
+
+import javax.faces.event.ComponentSystemEvent;
+import javax.el.ELContext;
+
+
+
+@ManagedBean(name = "javatestbean")
+@RequestScoped
+public class TestBean2 {
+
+
+    
+    int cnt = 0;
+    
+    String sayHello = "<h2>hello world test</h2>";
+    String hello2 = "hello from added attribute";
+    String hello3 = "hello from  added attribute 2";
+
+
+    @ManagedProperty(value = "#{javatestbean4xxx}")
+    TestBean3 bean3;
+
+    @ManagedProperty(value = "#{javatestbean4}")
+    TestBean4 bean4;
+
+    public void validate(ComponentSystemEvent e) {
+        System.out.println("Validating");
+    }
+
+    public String getSayHello() {
+      
+      //return "hello from bean2";
+      return bean4.getHello();
+      //return "replacement";
+    }
+
+    public String getSayHello2() {
+        return hello2;
+    }
+
+    public void setSayHello(String hello) {
+        this.sayHello = hello;
+        System.out.println("hello world");
+    }
+
+    public void setResource(String param) {
+
+    }
+
+    public String doAction() {
+        return null;
+    }
+
+    public String getResource() throws java.io.IOException {
+        /*  ResourceHandler handler = FacesContext.getCurrentInstance().getApplication().getResourceHandler();
+      Resource resource = handler.createResource("testResource");
+      InputStream istr = resource.getInputStream();
+      BufferedReader rdr = new BufferedReader(new InputStreamReader(istr));
+      StringBuilder strBuf = new StringBuilder();
+      String line = null;
+      try {
+          while ((line = rdr.readLine()) != null) {
+              strBuf.append(line);
+          }
+      } catch (IOException ex) {
+
+      };
+      return strBuf.toString(); */
+        return "hello world";
+    }
+
+    public TestBean3 getBean3() {
+        return bean3;
+    }
+
+    public void setBean3(TestBean3 bean3) {
+        this.bean3 = bean3;
+    }
+
+    public TestBean4 getBean4() {
+        return bean4;
+    }
+
+    public void setBean4(TestBean4 bean4) {
+        this.bean4 = bean4;
+    }
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean3.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean3.java
new file mode 100644
index 0000000..554beee
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean3.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.test;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.bean.RequestScoped;
+
+@ManagedBean(name = "javatestbean4xxx")
+@RequestScoped
+public class TestBean3 {
+    String sayHello = "hello world";
+    String hello2 = "hello from added attribute";
+    String hello3 = "hello from  added attribute 2";
+
+    private String myText() {
+        return "Hello World from bean3 xxx";
+    }
+
+    public String getSayHello() {
+        return myText();
+    }
+
+    public String getSayHello2() {
+        return hello2;
+    }
+
+    public void setSayHello(String hello) {
+        this.sayHello = hello;
+        System.out.println("hello world");
+    }
+
+    public void setResource(String param) {
+
+    }
+
+    public String getResource() {
+        /*   ResourceHandler handler = FacesContext.getCurrentInstance().getApplication().getResourceHandler();
+        Resource resource = handler.createResource("testResource");
+        InputStream istr = resource.getInputStream();
+        BufferedReader rdr = new BufferedReader(new InputStreamReader(istr));
+        StringBuilder strBuf = new StringBuilder();
+        String line = null;
+        try {
+            while ((line = rdr.readLine()) != null) {
+                strBuf.append(line);
+            }
+        } catch (IOException ex) {
+
+        };
+        return strBuf.toString();
+        */
+        return "hello world";
+    }
+
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean4.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean4.java
new file mode 100644
index 0000000..38956b2
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean4.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.test;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.SessionScoped;
+
+@ManagedBean(name = "javatestbean4")
+@SessionScoped
+public class TestBean4 {
+    
+    private String hello = "Hello world from test Bean 4";
+
+    public String getHello() {
+        return hello;
+    }
+    
+
+    public void setHello(String hello) {
+        this.hello = hello;
+    } 
+}
+ 
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestClass2.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestClass2.java
new file mode 100644
index 0000000..b99fa65
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestClass2.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.test;
+
+public class TestClass2 {
+    public static String hello2 = "hello world from testClass2";
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestResourceHandler.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestResourceHandler.java
new file mode 100644
index 0000000..4713d66
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestResourceHandler.java
@@ -0,0 +1,96 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.test;
+
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.context.FacesContext;
+import java.io.IOException;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class TestResourceHandler extends ResourceHandler {
+
+    ResourceHandler _delegate;
+
+    Logger _logger = Logger.getLogger("TestResourceHandler");
+
+    public TestResourceHandler(ResourceHandler delegate) {
+        //bug in myfaces the resource handlers are attached twice
+        while(delegate instanceof TestResourceHandler) {
+            delegate = ((TestResourceHandler)delegate).getDelegate();
+        }
+        _delegate = delegate;
+    }
+
+    public TestResourceHandler() {
+    }
+
+    @Override
+    public Resource createResource(String resourceName) {
+        return _delegate.createResource(resourceName);
+    }
+
+    @Override
+    public Resource createResource(String resourceName, String libraryName) {
+        return _delegate.createResource(resourceName, libraryName);
+    }
+
+    @Override
+    public Resource createResource(String resourceName, String libraryName, String contentType) {
+        return _delegate.createResource(resourceName, libraryName, contentType);
+    }
+
+    @Override
+    public String getRendererTypeForResourceName(String resourceName) {
+        return _delegate.getRendererTypeForResourceName(resourceName);
+    }
+
+    @Override
+    public void handleResourceRequest(FacesContext context) throws IOException {
+        _delegate.handleResourceRequest(context);
+    }
+
+    @Override
+    public boolean isResourceRequest(FacesContext context) {
+        _logger.info("TestResourceHandler.isResourceRequest");
+
+        return _delegate.isResourceRequest(context);
+    }
+
+    @Override
+    public boolean libraryExists(String libraryName) {
+        return _delegate.libraryExists(libraryName);
+    }
+
+    //we have to expose the internal delegate because we have
+    //to copy it
+    public ResourceHandler getDelegate() {
+        return _delegate;
+    }
+
+    public void setDelegate(ResourceHandler delegate) {
+        _delegate = delegate;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestValidator.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestValidator.java
new file mode 100644
index 0000000..dfa9de7
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestValidator.java
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.test;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class TestValidator {
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/ViewScopedBean.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/ViewScopedBean.java
new file mode 100644
index 0000000..1d28aed
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/ViewScopedBean.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.javaloader.test;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.util.logging.Logger;
+
+/**
+ * Testing case for a view scoped bean 
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+@ManagedBean
+@ViewScoped
+public class ViewScopedBean implements Serializable {
+
+    int cnt = 0;
+    String helloWorld = "hello world from my view scoped bean";
+    transient Logger _logger = Logger.getLogger(ViewScopedBean.class.getName());
+
+    public ViewScopedBean() {
+        cnt = 0;
+        _logger.info("Init bean");
+    }
+
+    public int getCnt() {
+        return cnt;
+    }
+
+    public void setCnt(int cnt) {
+        this.cnt = cnt;
+    }
+
+    public String getHelloWorld() {
+        return helloWorld + (cnt++);
+    }
+
+    public void setHelloWorld(String helloWorld) {
+        this.helloWorld = helloWorld;
+    }
+
+    private void readObject(ObjectInputStream ois) throws Exception {
+        _logger = Logger.getLogger(ViewScopedBean.class.getName());
+        _logger.info("Restoring bean which was savestated");
+        ois.defaultReadObject();
+    }
+
+    public String doAction() {
+        return null;
+    }
+
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter1.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter1.java
new file mode 100644
index 0000000..c588408
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter1.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.validatorConverterTest;
+
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.convert.FacesConverter;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ * 
+ * A simple test converter which can be changed on the fly
+ */
+public class TestConverter1 implements Converter {
+    public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
+        return value;
+    }
+
+    
+    public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
+        return (String)value;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter2.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter2.java
new file mode 100644
index 0000000..6a1106c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter2.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.validatorConverterTest;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.convert.FacesConverter;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@FacesConverter(value = "at.irian.CustomConverter")
+public class TestConverter2 implements Converter {
+    public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
+        return "hello from converter 2";
+    }
+
+    public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
+        return "hello from converter 2";
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestValidator1.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestValidator1.java
new file mode 100644
index 0000000..066e41f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestValidator1.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.validatorConverterTest;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class TestValidator1 implements Validator {
+    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
+        Logger log = Logger.getLogger(TestValidator1.class.getName());
+        log.info("Hello world from TestValidator1");
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestValidator2.java b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestValidator2.java
new file mode 100644
index 0000000..4e338f0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestValidator2.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.myfaces.javaloader.validatorConverterTest;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@FacesValidator(value = "at.irian.CustomValidator")
+public class TestValidator2 implements Validator {
+    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
+
+        if (!((String) value).trim().equals("hello world")) {
+            Logger.getLogger(TestValidator1.class.getName()).severe("validation failed");
+            throw new ValidatorException(new FacesMessage("validation failed from validator 1 please input hello world, original input" + ((String) value), "validation failed from validator 1 please input hello world, original input" + ((String) value)));
+        }
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/sun-web.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..0094f2b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/sun-web.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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 sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 Servlet 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
+<sun-web-app error-url="">
+  <context-root>/testenterpriseweb2</context-root>
+  <class-loader delegate="false"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+  <property name="useMyFaces" value="true"/>
+  <property name="useBundledJsf" value="true"/>
+</sun-web-app>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..530921c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,134 @@
+<?xml version="1.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.
+-->
+<web-app 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-app_3_0.xsd"
+         version="3.0">
+
+
+    <description>MyProject web.xml</description>
+    <context-param>
+        <description>
+            Initializes the plugins for our groovy handlers
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.startup.StartupServletContextPluginChainLoader
+        </param-value>
+    </context-param>
+
+    <!--
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy
+        </param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>resource paths for our custom JSF2 resource resolver</description>
+        <param-name>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/extscript-examples/myfaces20-example/src/main/webapp
+        </param-value>
+    </context-param>
+    -->
+
+    <context-param>
+        <description>a redirecting Facelet resource resolver which allows to pick up templates and resources from our
+            source dir
+        </description>
+        <param-name>facelets.RESOURCE_RESOLVER</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</param-value>
+    </context-param>
+
+
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>State saving method: "client" or "server" (= default)
+            See JSF Specification 2.5.3
+        </description>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>
+            /WEB-INF/facelets/groovy-taglib.xml;/WEB-INF/facelets/tomahawk.taglib.xml
+        </param-value>
+    </context-param>
+    <!--
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/faces-config.xml</param-value>
+    </context-param>
+    -->
+
+    <!-- Listener, to allow Jetty serving MyFaces apps -->
+    <listener>
+        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+
+    <!-- Welcome files -->
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/beanValidation.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/beanValidation.xhtml
new file mode 100644
index 0000000..1d49b5f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/beanValidation.xhtml
@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
+<!--
+ * 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.
+-->
+<head>
+    <title>Hello World</title>
+</head>
+<body>
+
+
+<ui:composition template="/template.xhtml">
+    <ui:define name="body">
+        <h1>
+            <h:outputText
+                    value="A simple bean validation example using Apache MyFaces Ext-Val and the Bean Validation RI"/>
+        </h1>
+
+        <h2>
+            <h:outputText
+                    value="You can edit the corresponding files under /WEB-INF/java/org/apache/myfaces/javaloader/beanvalidationtesting/"/>
+        </h2>
+        <h:form id="form2">
+            <h:panelGrid id="grid" columns="1" styleClass="stdBox">
+                <h:panelGrid columns="3">
+                    <h:outputLabel for="fn" value="First Name"/>
+                    <h:inputText id="fn" label="First Name" value="#{validationController.person.firstName}"/>
+                    <h:message for="fn"/>
+                    <h:outputLabel for="ln" value="Last Name"/>
+                    <h:inputText id="ln" label="Last Name" value="#{validationController.person.lastName}"/>
+                    <h:message for="ln"/>
+                </h:panelGrid>
+
+                <h:commandLink id="link1" action="#{validationController.validateSubmit}">
+                    <h:outputText id="linkText" value="Submit"/>
+                </h:commandLink>
+            </h:panelGrid>
+        </h:form>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/blog.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/blog.xhtml
new file mode 100644
index 0000000..a4d328d
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/blog.xhtml
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:t="http://myfaces.apache.org/tomahawk"
+      xmlns:grv="http://myfaces.apache.org/groovy"
+        xmlns:c="http://java.sun.com/jsp/jstl/core">
+<head>
+    <title>Hello World</title>
+</head>
+<body>
+<ui:composition template="/template.xhtml">
+    <ui:define name="body">
+        <h1>
+            <ui:insert name="title">Ext-Scripting Groovy Blog Example</ui:insert>
+        </h1>
+
+        <h:panelGroup styleClass="stdBoxBig" style="color:black;">
+            <h2>In this example you can blog simply by entering text in the fields below and send submit</h2>
+
+            <p>You can change the blogging artifacts on the fly, all the sources can be found under
+                <b>WEB-INF/java/org/apache/myfaces/javaloader/groovy/</b> in your deployment directory</p>
+
+        </h:panelGroup>
+        <h:form id="form">
+            <div class="left" style="margin-top: 3px;">
+                <h:panelGrid id="grid" columns="1" styleClass="stdBox">
+                    <h:outputText id="title1" styleClass="title" value="#{blogView.title}"/>
+                    <h:outputText id="title11" styleClass="title1" value="#{blogView.title1}"/>
+
+                    <hr/>
+
+                    <h:panelGrid columns="2" columnClasses="label, input">
+                        <h:outputText value="First Name"/>
+                        <h:inputText value="#{blogView.firstName}"/>
+                        <h:outputText value="Last Name"/>
+                        <h:inputText value="#{blogView.lastName}"/>
+                        <h:outputText value="Topic of entry"/>
+                        <h:inputText value="#{blogView.topic}"/>
+                    </h:panelGrid>
+                    <h:panelGrid columns="2" columnClasses="label, input">
+                        <h:outputText styleClass="label" value="Content"/>
+                        <h:inputText value="#{blogView.content}"/>
+                    </h:panelGrid>
+                    <hr/>
+                    <h:commandButton styleClass="btn" action="#{blogView.addEntry}" value="Add Blog Entry">
+                        <f:ajax execute="@form" render="content" />
+                    </h:commandButton>
+                </h:panelGrid>
+            </div>
+            <h:panelGrid id="content" columns="1" styleClass="right">
+                <ui:repeat value="#{blogService.blogEntries}" var="item">
+                    <h:panelGrid columns="1" styleClass="messageBox">
+                        <h:panelGroup styleClass="topic">
+                            <h:outputLabel styleClass="label" value="Topic"/>
+                            <h:outputText value="#{item.topic}"/>
+                        </h:panelGroup>
+                        <h:panelGroup styleClass="content">
+                            <h:outputLabel styleClass="label" value="Content"/>
+                            <h:outputFormat escape="false" value="#{item.content}"/>
+                        </h:panelGroup>
+                    </h:panelGrid>
+                    <br/>
+                </ui:repeat>
+            </h:panelGrid>
+        </h:form>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/compilerWindow.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/compilerWindow.xhtml
new file mode 100644
index 0000000..d687c7c
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/compilerWindow.xhtml
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:grv="http://myfaces.apache.org/groovy">
+<head>
+    <title>Hello World</title>
+</head>
+<body>
+<ui:composition template="/template.xhtml">
+    <ui:define name="additionalHeadIncludes">
+        <link type="text/css" rel="stylesheet" href="#{resource['styles:compilerWindow.css']}"/>
+    </ui:define>
+
+    <ui:define name="body">
+        <!-- also we need to add some values here -->
+        <div class="centerDiv">
+            <h:panelGroup styleClass="stdBoxBig" style="color:black;">
+                <h2>Ext-Scripting Compiler Window</h2>
+
+                <p>This page shows the compiler output window and refresh history.</p>
+
+            </h:panelGroup>
+
+            <h:form>
+                <h:outputLink style="margin-left: 10px; color: white; font-weight: bold;"
+                              value="./compilerWindow.jsf">Refresh Compiler output &gt;&gt;</h:outputLink>
+            </h:form>
+        </div>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/complexBean.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/complexBean.xhtml
new file mode 100644
index 0000000..551460b
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/complexBean.xhtml
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>Hello World</title>
+</h:head>
+<h:body>
+    <h1><h:outputFormat value="This example tests complex bean relationships for refreshing"/></h1>
+    <h:form id="myForm">
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+        <h:inputText value="#{myBean.test}">
+            <f:ajax render="#{myBean.bindingMyTest.clientId}" event="keyup"/>
+        </h:inputText>
+        <h:inputText id="myText" value="#{myBean.test}" binding="#{myBean.bindingMyTest}"/>
+        <h:outputText value="#{receiver.myBean.hello}"/>
+        <h:outputText value="#{receiver.myBean.secondaryBean.hello}"/>
+    </h:form>
+</h:body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/componentTest.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/componentTest.xhtml
new file mode 100644
index 0000000..0121e34
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/componentTest.xhtml
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:grv="http://myfaces.apache.org/groovy">
+<head>
+    <title>Hello World</title>
+</head>
+<body>
+<ui:composition template="/template.xhtml">
+    <ui:define name="body">
+        <!-- also we need to add some values here -->
+        <div class="centerDiv">
+
+            <h:panelGroup  styleClass="stdBoxBig" style="color:black;">
+                <h2>Simple Component Testcase</h2>
+
+                <p>This testcase simulates the dynamic component development. You can edit the renderer
+                and the component on the fly, then it refresh and watch the instant changes,
+                you also can move the component annotations around between the classes.</p>
+
+                <p>The sources can be found under:<b>WEB-INF/java/org/apache/myfaces/javaloader/componentTest/</b>  </p>
+            </h:panelGroup>
+
+
+            <h:form>
+                <h:panelGroup styleClass="stdBoxBig">
+
+                    <h:commandLink style="color: white;" value="press me" action="#{javatestbean.doAction}"/>
+                    <grv:testcomponent2 testAttr="vvv" testAttr3="Attribute 3 set"
+                                        testAttr4="Attribute 4 set and showing"/>
+                </h:panelGroup>
+                <grv:tagHandlertest/>
+            </h:form>
+        </div>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/helloWorld.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/helloWorld.xhtml
new file mode 100644
index 0000000..89bfd67
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/helloWorld.xhtml
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:grv="http://myfaces.apache.org/groovy"
+      xmlns:g="http://java.sun.com/jsf/composite/greet"
+
+        >
+<head>
+    <title>Hello World</title>
+</head>
+<body>
+<ui:composition template="/template.xhtml">
+
+    <ui:define name="body">
+        <h1>
+            <ui:insert name="title">Ext-Scripting General Example
+            </ui:insert>
+        </h1>
+
+
+        <h:panelGroup styleClass="stdBoxBig" style="color:black;">
+            <h2>Hello to Apache MyFaces Extension Scripting</h2>
+
+            <p>This is a testpage which tests the various aspects of the dynamic reloading of Apache MyFaces
+                Extension Scripting.
+            </p>
+
+            <p>The sources for this example can be found under:<b>WEB-INF/ ...</b></p>
+        </h:panelGroup>
+
+        <h:form id="form">
+            <h:panelGroup styleClass="left">
+                <h:panelGroup styleClass="stdBox">
+                    <h:messages/>
+
+                    <h3>Validator Test 1</h3>
+
+                    <g:greet2 who="hello world from composite"/>
+
+                    <h:outputText id="output1" value="Please enter your name"/>
+                    <h:outputText value="#{javatestbean4.hello}"/>
+                    <h:inputText id="input1" value="#{helloWorld.name}" required="true">
+                        <grv:groovyvalidator/>
+                    </h:inputText>
+
+                    <h:commandButton id="button1" value="press me" action="#{helloWorld.send}"/>
+                </h:panelGroup>
+                <h:panelGroup styleClass="stdBox">
+                    <h3>Groovy Component</h3>
+                    <grv:testcomponent/>
+                    <h:message id="message1" for="input1"/>
+                </h:panelGroup>
+            </h:panelGroup>
+            <h:panelGroup styleClass="right">
+                <h:panelGroup styleClass="stdBox">
+                    <h3>Bean Tests</h3>
+                    <h:outputFormat value="#{testbean.xxx}"/>
+                    <br/>
+                    <h:outputFormat escape="false" value="#{javatestbean.sayHello}"/>
+                </h:panelGroup>
+
+                <h:panelGroup styleClass="stdBox">
+                    <h3>Converter Test 1</h3>
+                    please insert "hello world" into the input field
+                    <h:inputText value="#{testbean.xxx}">
+                        <grv:testConverter1/>
+                        <grv:testValidator1/>
+                    </h:inputText>
+                </h:panelGroup>
+                <h:panelGroup styleClass="stdBox">
+                    <h3>Action Test 1</h3>
+                    <h:commandButton value="Press me dynamic" action="#{testbean.doit}"/>
+                </h:panelGroup>
+                <h:panelGroup styleClass="stdBox">
+                    <h3>Java Component</h3>
+                    <grv:testcomponent2 testAttr="testAttributeValue" testAttr2="testAttribute2Value"/>
+                </h:panelGroup>
+            </h:panelGroup>
+
+        </h:form>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/helloWorld2.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/helloWorld2.xhtml
new file mode 100644
index 0000000..b334bfd
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/helloWorld2.xhtml
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:grv="http://myfaces.apache.org/groovy">
+<h:head>
+    <title>Hello World 2</title>
+</h:head>
+<h:body>
+    <ui:composition template="/template.xhtml">
+        <ui:define name="body">
+            <h1 style="color: yellow;">
+           
+                <h:outputText value="instant bean result #{helloBean.hello}"/>
+            </h1>
+        </ui:define>
+    </ui:composition>
+</h:body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/index.jsp b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/index.jsp
new file mode 100644
index 0000000..a42471d
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/index.jsp
@@ -0,0 +1,22 @@
+<!--
+ * 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.
+-->
+<%@ page session="false" %>
+<%
+    response.sendRedirect("mainpage.jsf");
+%>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/javablog.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/javablog.xhtml
new file mode 100644
index 0000000..ad24f80
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/javablog.xhtml
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:t="http://myfaces.apache.org/tomahawk" xmlns:grv="http://myfaces.apache.org/groovy"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+<h:head>
+    <title>Hello World</title>
+</h:head>
+
+<body>
+<ui:composition template="/template.xhtml">
+
+    <ui:define name="body">
+        <h:outputScript name="jsf.js" library="javax.faces"
+                        target="head"/>
+
+        <h1>
+            <ui:insert name="title">
+                Ext-Scripting Javablog Example
+
+            </ui:insert>
+        </h1>
+        <h:panelGroup  styleClass="stdBoxBig" style="color:black;">
+            <h2>In this example you can blog simply by entering text in the fields below and send submit</h2>
+
+            <p>You can change the blogging artifacts on the fly, all the sources can be found under
+                <b>WEB-INF/java/org/apache/myfaces/javaloader/blog/</b> in your deployment directory</p>
+
+        </h:panelGroup>
+
+        <h:form id="form">
+            <div class="left" style="margin-top: 3px;">
+
+
+                <h:panelGrid id="grid" columns="1" styleClass="stdBox">
+
+                    <h:outputFormat id="title1" escape="false" styleClass="title" value="#{javaBlogView.title}"/>
+                    <h:outputFormat id="title11" escape="false" styleClass="title1" value="#{javaBlogView.title1}"/>
+                    <hr/>
+                    <h:panelGrid columns="2" columnClasses="label, input">
+                        <h:outputText value="First Name"/>
+                        <h:inputText value="#{javaBlogView.firstName}"/>
+                        <h:outputText value="Last Name"/>
+                        <h:inputText value="#{javaBlogView.lastName}"/>
+                        <h:outputText value="Topic of entry"/>
+                        <h:inputText value="#{javaBlogView.topic}"/>
+                    </h:panelGrid>
+                    <h:panelGrid columns="2" columnClasses="label, input">
+                        <h:outputText styleClass="label" value="Content"/>
+                        <h:inputTextarea value="#{javaBlogView.content}"/>
+                    </h:panelGrid>
+                    <hr/>
+                    <h:commandButton styleClass="btn" action="#{javaBlogView.addEntry}" value="Add Blog Entry">
+                        <f:ajax execute="@form" render="content"/>
+                    </h:commandButton>
+                </h:panelGrid>
+            </div>
+            <h:panelGrid id="content" columns="1" styleClass="right">
+                <ui:repeat value="#{javaBlogService.blogEntries}" var="item">
+                    <h:panelGrid columns="1" styleClass="messageBox">
+                        <h:panelGroup styleClass="topic">
+                            <h:outputLabel styleClass="label" value="Topic"/>
+                            <h:outputText value="#{item.topic}"/>
+                        </h:panelGroup>
+                        <h:panelGroup styleClass="content">
+                            <h:outputLabel styleClass="label" value="Content"/>
+                            <h:outputFormat escape="false" value="#{item.content}"/>
+                        </h:panelGroup>
+                    </h:panelGrid>
+                </ui:repeat>
+            </h:panelGrid>
+        </h:form>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/mainpage.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/mainpage.xhtml
new file mode 100644
index 0000000..3c26421
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/mainpage.xhtml
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:grv="http://myfaces.apache.org/groovy"
+      xmlns:g="http://java.sun.com/jsf/composite/greet"
+
+        >
+
+<head>
+    <title>Hello World</title>
+</head>
+<body>
+<ui:composition template="/template.xhtml">
+
+    <ui:define name="body">
+        <h1>Hello from Apache MyFaces Extension Scripting  #{javatestbean.sayHello}</h1>
+        <h:panelGrid columns="2" columnClasses="celltop, celltop">
+
+
+            <h:panelGroup styleClass="stdBox" id="demoMenu">
+                <h2>Documentation</h2>
+
+                <h:outputLink target="_new"
+                              value="http://myfaces.apache.org/extensions/scripting/index.html">Extension Scripting Documentation</h:outputLink>
+
+
+                <h2>Demo and Testing Links</h2>
+                <h:panelGrid columns="1">
+                    <h:outputLink value="helloWorld.jsf">Hello World Artifacting Testing Case</h:outputLink>
+                    <h:outputLink value="componentTest.jsf">Component Testing Case</h:outputLink>
+                    <h:outputLink value="complexBean.jsf">Complex Bean Testing Case</h:outputLink>
+                    <h:outputLink value="javablog.jsf">Java Blog Example</h:outputLink>
+                    <h:outputLink value="blog.jsf">Groovy Blog Example</h:outputLink>
+                </h:panelGrid>
+            </h:panelGroup>
+
+            <h:panelGroup
+                    styleClass="stdBox"><h3>Apache Apache MyFaces Extension Scripting - short Ext-Scripting is a dynamic script
+                extension for the Apache MyFaces JSF Implementation.
+                With it you can edit JSF artifacts on the fly in both Groovy and Java.
+                </h3>
+            </h:panelGroup>
+
+        </h:panelGrid>
+
+        <h:panelGroup styleClass="stdBoxBig" style="width: 810px;">
+            <object width="800" height="600" style="margin-left: 5px;" >
+                <param name="movie"
+                       value="http://www.youtube.com/v/g2YvzOloNyI&#38;hl=de_DE&#38;fs=1&#38;border=1"></param>
+                <param name="allowFullScreen" value="true"></param>
+                <param name="allowscriptaccess" value="always"></param>
+                <embed src="http://www.youtube.com/v/g2YvzOloNyI&#38;hl=de_DE&#38;fs=1&#38;border=1"
+                       type="application/x-shockwave-flash" allowscriptaccess="always"
+                       allowfullscreen="true" width="800" height="550"></embed>
+            </object>
+        </h:panelGroup>
+
+
+    </ui:define>
+
+
+</ui:composition>
+</body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/page2.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..da80376
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/page2.xhtml
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello World</title>
+</head>
+<body>
+
+<ui:composition template="/template.xhtml">
+
+    <ui:define name="body">
+        <h1>
+            <h:outputText value="Hello #{helloWorld.name}. We hope you enjoy Apache MyFaces Extensions Scripting"/>
+        </h1>
+        <h:form id="form2">
+            <h:panelGrid id="grid" columns="2" styleClass="stdBox">
+
+                <h:commandLink id="link1" action="back">
+                    <h:outputText id="linkText" value="GO HOME"/>
+                </h:commandLink>
+
+            </h:panelGrid>
+        </h:form>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/greet/greet.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/greet/greet.xhtml
new file mode 100644
index 0000000..0a0f0db
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/greet/greet.xhtml
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+    <title>My First Composite Component</title>
+</head>
+<body>
+
+<composite:interface>
+    <composite:attribute name="who"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:outputText value="Hello composite change, #{cc.attrs.who}!"/>
+</composite:implementation>
+
+</body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/greet/greet2.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/greet/greet2.xhtml
new file mode 100644
index 0000000..7b60d47
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/greet/greet2.xhtml
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+    <title>My First Composite Component</title>
+</head>
+<body>
+
+<composite:interface>
+    <composite:attribute name="who"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:outputText value="Hello  composite  greet2, #{cc.attrs.who}!"/>
+</composite:implementation>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/gradient1.jpg b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/gradient1.jpg
new file mode 100644
index 0000000..6987743
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/gradient1.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/gradient2.png b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/gradient2.png
new file mode 100644
index 0000000..d10bdcc
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/gradient2.png
Binary files differ
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/license.txt b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/license.txt
new file mode 100644
index 0000000..507e05e
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/license.txt
@@ -0,0 +1,6 @@
+sig07-009_mac.jpg is from the nasa public domain image archive.
+
+http://www.nasaimages.org/luna/servlet/detail/nasaNAS~12~12~64153~168545:Multiwavelength-M81?qvq=q:galaxy+or+constellation+or+hubble+or+spitzer;lc:NVA2~35~35,NVA2~32~32,NVA2~31~31,NVA2~19~19,nasaNAS~16~16,nasaNAS~2~2,NSVS~3~3,nasaNAS~9~9,NVA2~4~4,NVA2~15~15,NVA2~24~24,NVA2~29~29,nasaNAS~12~12,nasaNAS~8~8,nasaNAS~7~7,NVA2~22~22,nasaNAS~10~10,NVA2~13~13,NVA2~18~18,NVA2~27~27,NVA2~9~9,NVA2~1~1,nasaNAS~6~6,NVA2~25~25,NVA2~20~20,nasaNAS~13~13,nasaNAS~22~22,NVA2~16~16,NVA2~8~8,nasaNAS~5~5,nasaNAS~4~4,NVA2~28~28,NVA2~14~14,nasaNAS~20~20,NVA2~17~17,NVA2~30~30,NVA2~21~21,NVA2~26~26,NVA2~23~23,NVA2~44~44,NVA2~42~42,NVA2~38~38,NVA2~45~45,NVA2~39~39,NVA2~43~43,NVA2~41~41,NVA2~37~37,NVA2~49~49,NVA2~53~53,NVA2~51~51,NVA2~56~56,NVA2~47~47,NVA2~54~54,NVA2~33~33,NVA2~36~36,NVA2~34~34,NVA2~57~57,NVA2~52~52,NVA2~48~48,NVA2~50~50,NVA2~46~46,NVA2~55~55&mi=0&trs=8854
+
+license
+http://www.nasa.gov/audience/formedia/features/MP_Photo_Guidelines.html
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/sig07-009_mac.jpg b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/sig07-009_mac.jpg
new file mode 100644
index 0000000..42f8ca6
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/img/sig07-009_mac.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/styles/compilerWindow.css b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/styles/compilerWindow.css
new file mode 100644
index 0000000..2963363
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/styles/compilerWindow.css
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+div#menu {
+    display: none;
+}
+
+div.centerDiv {
+    width: auto;
+}
+
+div.errorBox {
+    width: auto;
+}
+
+div.errorBox .line {
+    width: auto;
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/styles/main.css b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/styles/main.css
new file mode 100644
index 0000000..26d450f
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/resources/styles/main.css
@@ -0,0 +1,287 @@
+/*
+ * 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.
+ */
+
+body {
+    background-color: white;
+}
+
+div.centerDiv {
+    margin-left: auto;
+    margin-right: auto;
+    width: 900px;
+}
+
+div.centerDiv form {
+    position: relative;
+}
+
+h1 {
+    color: #9999ff;
+    text-align: center;
+}
+
+div#backGroundFloat {
+    position: fixed;
+    z-index: -1;
+    background-color: black;
+    left: 0px;
+    top: 0px;
+    width: 100%;
+    height: 100%;
+    background-image: url("../resources/img/sig07-009_mac.jpg");
+    background-repeat: no-repeat;
+    overflow: hidden;
+}
+
+#hello {
+    background-color: yellow;
+}
+
+.stdBox, .stdBoxBig, .messageBox {
+    display: block;
+    width: 400px;
+    border: 1px solid white;
+    -moz-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    padding: 5px;
+    border-radius: 8px;
+    background-repeat: repeat-x;
+    margin-bottom: 5px;
+    min-height: 120px;
+
+}
+
+.stdBoxBig {
+    width: 800px;
+}
+
+.stdBox, .stdBoxBig {
+    background-color: white;
+    background-image: url("../resources/img/gradient1.jpg");
+}
+
+.messageBox {
+    background-image: url("../resources/img/gradient2.png");
+}
+
+/*=================================================
+Standard Menu
+===================================================*/
+div#menu {
+    background-color: white;
+    opacity: 0.9;
+    position: absolute;
+    left: 0px;
+    top: 0px;
+    width: 100%;
+    padding: 5px;
+    font-weight: bold;
+
+}
+
+div#menu a {
+    color: blue;
+    margin-right: 10px;
+}
+
+div#menu a:hover {
+    color: red;
+}
+
+/*==================================================
+    Basic CSS information for our
+    taint history component
+    we do not use the compound
+    css for error and history
+    for readability reasons
+    although we have  load
+    of duplication here
+====================================================*/
+
+div.historyBox {
+    width: 820px;
+    heigh: 200px;
+
+    display: block;
+    overflow: auto;
+    border: 1px solid white;
+    color: #dedddd;
+    opacity: 0.92;
+
+    -moz-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    border-radius: 5px;
+
+    padding: 5px;
+    margin-left: 10px;
+
+    background-image: url("../resources/img/gradient2.png");
+    background-repeat: repeat-x;
+}
+
+div.historyBox .line {
+    display: table;
+    width: 780px;
+
+    border: 1px dashed black;
+    background-color: #ccccff;
+    color: black;
+    padding: 5px;
+    margin-top: 10px;
+    margin-left: auto;
+    margin-right: auto;
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+
+    border-radius: 5px;
+}
+
+div.historyBox .line .timestamp {
+    width: 120px;
+    float: left;
+    color: red;
+}
+
+div.historyBox .line .changedFile {
+    width: 650px;
+    overflow: hidden;
+    display: block;
+    float: left;
+}
+
+/*==================================================
+    Basic CSS information for our compiler
+    output component
+====================================================*/
+
+div.errorsLabel {
+    font-size: large;
+    padding-top: 5px;
+    padding-bottom: 10px;
+    padding-left: 5px;
+}
+
+div.warningsLabel {
+    font-size: large;
+    padding-top: 5px;
+    padding-bottom: 10px;
+    padding-left: 5px;
+    width: 100%;
+    margin-top: 10px;
+    border-top: 1px solid black;
+}
+
+div.errorBox {
+    width: 820px;
+    heigh: 200px;
+
+    display: block;
+    overflow: auto;
+    border: 1px solid white;
+    color: #dedddd;
+    opacity: 0.92;
+
+    -moz-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    border-radius: 5px;
+
+    padding: 5px;
+    margin-left: 10px;
+
+    background-image: url("../resources/img/gradient2.png");
+    background-repeat: repeat-x;
+}
+
+div.errorBox .line {
+    display: table;
+    width: 780px;
+
+    border: 1px dashed black;
+    background-color: #ccccff;
+    color: black;
+    padding: 5px;
+    margin-top: 10px;
+    margin-left: auto;
+    margin-right: auto;
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+
+    border-radius: 5px;
+}
+
+div.errorBox .line .lineNo {
+    width: 40px;
+    float: left;
+    color: red;
+}
+
+div.errorBox .line .lineNo {
+    width: 30px;
+    float: left;
+    padding-left: 5px;
+    font-weight: bold;
+    font-size: large;
+}
+
+div.errorBox .line .message {
+    width: 738px;
+    display: block;
+    float: left;
+}
+
+.left {
+    position: absolute;
+    left: 10px;
+    top: 20px;
+}
+
+.right {
+    position: absolute;
+    left: 430px;
+    top: 20px;
+}
+
+.label {
+    font-weight: bold;
+    color: black;
+    width: 150px;
+    padding-right: 5px;
+}
+
+.input input, .input textArea {
+    width: 200px;
+}
+
+input, textArea {
+    border: 1px solid black;
+}
+
+input:focus, textArea:focus {
+    background-color: yellow;
+}
+
+input.btn {
+    width: 100px;
+    margin-left: 263px;
+}
+
+
+.celltop {
+    vertical-align:top;
+}
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/template.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/template.xhtml
new file mode 100644
index 0000000..4f4f4e9
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/template.xhtml
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:exs="http://myfaces.apache.org/ext-scripting"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title>Myfaces Example Facelets</title>
+    <link type="text/css" rel="stylesheet" href="#{resource['styles:main.css']}"/>
+    <ui:insert name="additionalHeadIncludes">
+    </ui:insert>    
+</h:head>
+
+<h:body>
+    <div id="menu">
+        <h:panelGroup>
+            <h:outputLink value="./helloWorld.jsf">Hello world Example</h:outputLink>
+            <h:outputLink value="./blog.jsf">Groovy Blogging Example</h:outputLink>
+            <h:outputLink value="./javablog.jsf">Java Blogging Example</h:outputLink>
+            <h:outputLink value="./componentTest.jsf">Component Testcase</h:outputLink>
+            <h:outputLink value="./compilerWindow.jsf" target="_blank">Compiler Output</h:outputLink>
+        </h:panelGroup>
+    </div>
+
+    <div id="backGroundFloat">
+    </div>
+    <div class="centerDiv">
+        <h:panelGroup>
+            <h3>
+                <h:outputFormat value="Compiler Output" escape="false"/>
+            </h3>
+            <exs:compilerOutput errorsLabel="Errors:" warningsLabel="Warnings:" scriptingLanguage=""/>
+        </h:panelGroup>
+        <h:panelGroup>
+            <h3>
+                <h:outputFormat value="Change History" escape="false"/>
+            </h3>
+            <exs:taintHistory noEntries="5"/>
+        </h:panelGroup>
+
+        <p>
+            <ui:insert name="body">Hello World Example!</ui:insert>
+        </p>
+    </div>
+</h:body>
+
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/template2.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/template2.xhtml
new file mode 100644
index 0000000..61d42e5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/template2.xhtml
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:grv="http://myfaces.apache.org/groovy"
+      xmlns:h="http://java.sun.com/jsf/html">
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Myfaces Example Facelets</title>
+
+    <link type="text/css" rel="stylesheet" href="#{resource['styles:main.css']}"/>
+</head>
+
+<body>
+
+<h:panelGroup>
+    <h3>
+        <h:outputFormat value="Compiler Output" escape="false"/>
+    </h3>
+    <grv:compilerOutput errorsLabel="Errors:" warningsLabel="Warnings:" scriptingLanguage=""/>
+</h:panelGroup>
+
+
+<h1>
+    <ui:insert name="title">Component Testcase</ui:insert>
+</h1>
+
+
+<p>
+    <ui:insert name="body">Hello World Example!</ui:insert>
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/viewscopeTest.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/viewscopeTest.xhtml
new file mode 100644
index 0000000..73c9886
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-example/src/main/webapp/viewscopeTest.xhtml
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:grv="http://myfaces.apache.org/groovy">
+<h:head>
+    <title>Hello World 2</title>
+</h:head>
+<h:body>
+    <ui:composition template="/template.xhtml">
+        <ui:define name="body">
+            <h1 style="color: yellow;">
+                This is a test case for the MyFaces view scope
+            </h1>
+            <h:form>
+                <h:outputText value="#{viewScopedBean.helloWorld}"/>
+                <h:commandLink action="#{viewScopedBean.doAction}" value="Press me for refresh"/>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+</h:body>
+</html>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/pom.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/pom.xml
new file mode 100644
index 0000000..0667535
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/pom.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <artifactId>extscript-examples</artifactId>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <version>1.0.4</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.myfaces.extensions.scripting</groupId>
+    <artifactId>myfaces20-extscript-helloworld</artifactId>
+    <packaging>war</packaging>
+    <name>A simple project for MyFaces 2.0 and Ext-Scripting 1.0</name>
+    <version>1.0.4</version>
+    <url>http://www.apache.org</url>
+
+    <scm>
+        <connection>
+            scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld
+        </connection>
+        <developerConnection>
+            scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld
+        </developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld</url>
+    </scm>
+
+
+    <build>
+        <plugins>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+
+
+        </plugins>
+    </build>
+
+    <dependencies>
+        <!--
+             optional Groovy include,
+             if we leave it out, Groovy support is disabled
+             and only java support will work
+         -->
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-all</artifactId>
+            <version>${groovy.version}</version>
+        </dependency>
+
+        <!--
+             Note this is the only dependency we need
+             for ext-scripting, the include is a so called
+             meta bundle, which includes the entire
+             ext-scripting core+java6 support + myfaces 2 support
+         -->
+        <dependency>
+            <groupId>org.apache.myfaces.extensions.scripting</groupId>
+            <artifactId>extscript-myfaces20-bundle</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-api</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-impl</artifactId>
+            <version>${myfaces2.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+
+
+    </dependencies>
+</project>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/LICENSE.TXT b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/LICENSE.TXT
new file mode 100644
index 0000000..dd5b3a5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/LICENSE.TXT
@@ -0,0 +1,174 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/NOTICE.TXT b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/NOTICE.TXT
new file mode 100644
index 0000000..2158524
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/NOTICE.TXT
@@ -0,0 +1,17 @@
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+------------------------------------------------------------------------
+See the file LICENSE.txt
+See licenses for accompanying products in the "/licenses" subdirectory.
+------------------------------------------------------------------------
+
+This software also includes code from Facelets (https://facelets.dev.java.net/)
+for the purpose of making components and facelet artifacts reloadable from
+other source directories.
+
+This product also includes the ASM bytecode library (http://asm.ow2.org/) for the purpose of
+dependency bytecode scanning.
+
+This product also includes the Groovy runtime http://groovy.codehaus.org/ library (ASL2 license) in binary form as well as
+the Scala http://www.scala-lang.org/ runtime in binary form.
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/licenses/asm-license.txt b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/licenses/asm-license.txt
new file mode 100644
index 0000000..7676ba5
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/licenses/asm-license.txt
@@ -0,0 +1,29 @@
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/licenses/facelets-license.txt b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/licenses/facelets-license.txt
new file mode 100644
index 0000000..959625a
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/licenses/facelets-license.txt
@@ -0,0 +1,70 @@
+Apache License, Version 2.0
+
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+   1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+   2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+   3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+   4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/licenses/scala-license.txt b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/licenses/scala-license.txt
new file mode 100644
index 0000000..7863fb0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/resources/META-INF/licenses/scala-license.txt
@@ -0,0 +1,35 @@
+SCALA LICENSE
+
+Copyright (c) 2002-2012 EPFL, Lausanne, unless otherwise specified.
+All rights reserved.
+
+This software was developed by the Programming Methods Laboratory of the
+Swiss Federal Institute of Technology (EPFL), Lausanne, Switzerland.
+
+Permission to use, copy, modify, and distribute this software in source
+or binary form for any purpose with or without fee is hereby granted,
+provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+   3. Neither the name of the EPFL nor the names of its contributors
+      may be used to endorse or promote products derived from this
+      software without specific prior written permission.
+
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/faces-config.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..5cd83af
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,24 @@
+<?xml version="1.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.
+-->
+<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">
+</faces-config>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/glassfish-web.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..443a564
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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 glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/myfaces20-extscript-helloworld</context-root>
+  <class-loader delegate="false"/>
+  <property name="useBundledJsf" value="true"/>
+  <property name="useMyFaces" value="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/groovy/demo/GroovyHello.groovy b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/groovy/demo/GroovyHello.groovy
new file mode 100644
index 0000000..a4bfa7d
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/groovy/demo/GroovyHello.groovy
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+package demo
+
+import javax.faces.bean.ManagedBean
+
+/**
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+@ManagedBean
+public class GroovyHello {
+  def helloWorld = "hello world from a dynamic groovy bean"
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/java/demo/JavaHello.java b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/java/demo/JavaHello.java
new file mode 100644
index 0000000..cb87fe8
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/java/demo/JavaHello.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+package demo;
+
+import javax.faces.bean.ManagedBean;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * Dynamic java hello world bean
+ */
+
+@ManagedBean
+public class JavaHello {
+    String helloWorld = "Hello from a dynamic java bean";
+
+    public String getHelloWorld() {
+        return helloWorld;
+    }
+
+    public void setHelloWorld(String helloWorld) {
+        this.helloWorld = helloWorld;
+    }
+}
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/sun-web.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..5db9477
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/sun-web.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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 sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
+<sun-web-app error-url="">
+  <context-root>/myfaces20-extscript-helloworld</context-root>
+  <class-loader delegate="false"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+  <property name="useMyFaces" value="true"/>
+</sun-web-app>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/web.xml b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7a5d1ca
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,166 @@
+<?xml version="1.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.
+-->
+<web-app version="2.5" 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-app_2_5.xsd">
+
+
+    <description>Webproject.xml</description>
+
+
+    <!--
+    Note this entry is vital it plugs the ext-scripting system into
+    a myfaces extension point
+    -->
+    <context-param>
+        <description>
+            Initializes the plugins for our groovy handlers
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.startup.StartupServletContextPluginChainLoader
+        </param-value>
+    </context-param>
+
+
+    <!--
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/groovy
+        </param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/java
+        </param-value>
+    </context-param>
+    
+     <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.scala.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/myfaces20-extscript-helloworld/src/main/webapp/WEB-INF/scala
+        </param-value>
+    </context-param>
+    
+
+    <context-param>
+        <description>resource paths for our custom JSF2 resource resolver</description>
+        <param-name>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</param-name>
+        <param-value>
+            /whatever/myfaces20-extscript-helloworld/src/main/webapp/
+        </param-value>
+    </context-param>
+
+    <context-param>
+        <description>a redirecting Facelet resource resolver which allows to pick up templates and resources from our
+            source dir
+        </description>
+        <param-name>facelets.RESOURCE_RESOLVER</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</param-value>
+    </context-param>
+
+    <context-param>
+        <description>Some containers do not expand their war/ear files and do not return a proper classpath for the
+        compilers.
+        For those you can set an additional classpath as comma separated list of paths so that the compiler can pick
+        up dependencies from other directories. Wildcarding regarding jar and zip files is allowed.
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.ADDITIONAL_CLASSPATH</param-name>
+        <param-value>/whatever/myfaces20-extscript-helloworld/target/myfaces20-extscript-helloworld-1.0.4-SNAPSHOT/WEB-INF/lib/*.jar,
+        /whatever/myfaces20-extscript-helloworld/target/myfaces20-extscript-helloworld-1.0.4-SNAPSHOT/WEB-INF/classes</param-value>
+    </context-param>
+
+    -->
+    <!--
+    <context-param>
+        <description>a comma separated whitelist of root packages which are compiled those and nothing else
+            will be compiled during all compile stages, all other files stay permanently as they are
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.PGK_WHITELIST</param-name>
+        <param-value>org.apache.myfaces.groovyloader.blog</param-value>
+    </context-param>
+    -->
+
+
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>State saving method: "client" or "server" (= default)
+            See JSF Specification 2.5.3
+        </description>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+
+    <!--
+    Note, this servlet filter is vital without it Ext-Scripting will not work,
+    if you do not set it you will get an appropriate warning in the command line
+    -->
+
+    <!-- Listener, to allow Jetty serving MyFaces apps -->
+    <listener>
+        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+
+    <!-- Welcome files -->
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/helloWorld.xhtml b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/helloWorld.xhtml
new file mode 100644
index 0000000..4e7c351
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/helloWorld.xhtml
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+        >
+<h:head>
+    <title>Hello World</title>
+</h:head>
+<h:body>
+    <h:outputFormat value="hello world" />
+</h:body>
+</html>
diff --git a/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/index.jsp b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/index.jsp
new file mode 100644
index 0000000..0c20cab
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/myfaces20-extscript-helloworld/src/main/webapp/index.jsp
@@ -0,0 +1,22 @@
+<%@ page session="false" %>
+<!--
+ * 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.
+-->
+<%
+    response.sendRedirect("helloWorld.jsf");
+%>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/extscript-examples/pom.xml b/extscript-root-1.0.4/extscript-examples/pom.xml
new file mode 100644
index 0000000..3c7b4e0
--- /dev/null
+++ b/extscript-root-1.0.4/extscript-examples/pom.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>extscript-examples</artifactId>
+    <packaging>pom</packaging>
+    <name>Examples Submodule</name>
+    <version>1.0.4</version>
+
+    <description>
+        Examples Meta Project, see the subprojects
+        for starting various parts of ext-scripting
+    </description>
+
+    <parent>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-root</artifactId>
+        <version>1.0.4</version>
+    </parent>
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples
+        </connection>
+        <developerConnection>
+            scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples
+        </developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4/extscript-examples</url>
+    </scm>
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>jetty-maven-plugin</artifactId>
+                <version>8.1.2.v20120308</version>
+                <configuration>
+                    <connectors>
+                        <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
+                            <port>9090</port>
+                            <maxIdleTime>60000</maxIdleTime>
+                        </connector>
+                    </connectors>
+                    <scanIntervalSeconds>1</scanIntervalSeconds>
+
+                </configuration>
+            </plugin>
+            <!-- tomcat plugin as alternative testing ground -->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>tomcat-maven-plugin</artifactId>
+                <version>1.0</version>
+            </plugin>
+
+
+        </plugins>
+    </build>
+    <modules>
+        <!--
+        <module>myfaces12-example</module>
+        -->
+        <module>myfaces20-example</module>
+        <module>myfaces20-extscript-helloworld</module>
+        <module>blog-example</module>
+        <module>cdi-example</module>
+        <!--
+        <module>spring-example</module>
+        -->
+    </modules>
+
+
+    <profiles>
+        <!--
+             This profile is started with -D development and fetches in a secondary
+             web.xml which is used internally for development purposes
+         -->
+        <profile>
+            <id>development</id>
+
+            <properties>
+                <maven.war.webxml>${basedir}/src/main/conf/dev/web.xml</maven.war.webxml>
+            </properties>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/extscript-root-1.0.4/pom.xml b/extscript-root-1.0.4/pom.xml
new file mode 100644
index 0000000..8de0183
--- /dev/null
+++ b/extscript-root-1.0.4/pom.xml
@@ -0,0 +1,337 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.myfaces.extensions.scripting</groupId>
+    <artifactId>extscript-root</artifactId>
+    <packaging>pom</packaging>
+    <name>Myfaces Extension Scripting Project</name>
+    <version>1.0.4</version>
+    <url>http://myfaces.apache.org/extensions/scripting</url>
+    
+    <properties>
+        <myfaces12.version>1.2.9</myfaces12.version>
+        <myfaces2.version>2.1.7</myfaces2.version>
+        <extval.version>2.0.5</extval.version>
+        <groovy.version>1.7.2</groovy.version>
+        <maven-scala-plugin.scalaVersion>2.15.2</maven-scala-plugin.scalaVersion>
+        <scala-library.version>2.10.0-M2</scala-library.version>
+        <deltaspike.version>0.2-incubating-SNAPSHOT</deltaspike.version>
+        <openwebbeans.version>1.1.2</openwebbeans.version>
+    </properties>
+
+
+    <description>
+        MyFaces Extension Scripting: scripting support and dynamic recompilation
+        for JSF
+    </description>
+
+    <parent>
+        <groupId>org.apache.myfaces</groupId>
+        <artifactId>myfaces</artifactId>
+        <version>12</version>
+
+    </parent>
+
+    <modules>
+        <module>extscript-core-root</module>
+        <module>extscript-bundles</module>
+        <module>extscript-examples</module>
+    </modules>
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/tags/extscript-root-1.0.4
+        </developerConnection>
+        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/tags/extscript-root-1.0.4</url>
+    </scm>
+
+
+    <dependencies>
+
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-library</artifactId>
+            <version>${scala-library.version}</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-compiler</artifactId>
+            <version>${scala-library.version}</version>
+        </dependency>
+
+        <!-- compile -->
+        <dependency>
+            <groupId>javax.el</groupId>
+            <artifactId>el-api</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.0.1</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>1.4</version>
+        </dependency>
+        <!-- test dependencies -->
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.10</version>
+            <scope>test</scope>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.apache.myfaces.test</groupId>
+            <artifactId>myfaces-test20</artifactId>
+            <version>1.0.0-beta</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymock</artifactId>
+            <version>2.3</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymockclassextension</artifactId>
+            <version>2.3</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <extensions>
+            <extension>
+                <groupId>org.apache.maven.wagon</groupId>
+                <artifactId>wagon-ssh-external</artifactId>
+                <version>1.0-beta-7</version>
+            </extension>
+        </extensions>
+
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <version>0.8</version>
+                    <configuration>
+                        <excludes>
+                            <exclude>.idea/**/*</exclude>
+                            <exclude>readme/**/*</exclude>
+                            <exclude>**/licenses/**/*</exclude>
+                            <exclude>.git/**/*</exclude>
+                            <exclude>**/*.log</exclude>
+                            <exclude>**/LICENSE.TXT</exclude>
+                            <exclude>**/NOTICE.TXT</exclude>
+                            <exclude>**/asm-license.txt</exclude>
+                            <exclude>**/facelet-license.txt</exclude>
+                            <exclude>.gitignore</exclude>
+			                <exclude>**/target/rat.txt</exclude>
+                            <exclude>atlassian-ide-plugin.xml</exclude>
+
+                        </excludes>
+                    </configuration>
+                </plugin>
+
+                <plugin>
+                    <groupId>org.scala-tools</groupId>
+                    <artifactId>maven-scala-plugin</artifactId>
+                    <version>${maven-scala-plugin.scalaVersion}</version>
+                </plugin>
+                <!-- SITE GENERATION -->
+                <plugin>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>2.9</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-surefire-report-plugin</artifactId>
+                    <version>2.9</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-javadoc-plugin</artifactId>
+                    <version>2.8</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-site-plugin</artifactId>
+                    <version>3.0</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-jxr-plugin</artifactId>
+                    <version>2.3</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>taglist-maven-plugin</artifactId>
+                    <version>2.4</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-changelog-plugin</artifactId>
+                    <version>2.2</version>
+                </plugin>
+
+            </plugins>
+
+        </pluginManagement>
+
+
+        <plugins>
+
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+                <version>2.5.1</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>clean</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+
+            <plugin>
+                <!--
+                - Make a checkstyle violation a compile error. Note that if a compile error occurs,
+                - further information can be found in target/site/checkstyle.html (present even when
+                - just the compile goal and not the site goal has been run). Note also that child
+                - projects may redeclare this plugin and provide different configuration settings
+                - to use different checks (more or less strict than the default).
+                -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>verify-style</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <configLocation>default/myfaces-checks-minimal.xml</configLocation>
+                    <headerLocation>default/myfaces-header.txt</headerLocation>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+
+    <reporting>
+        <plugins>
+
+            <!--
+            <plugin>
+              <artifactId>maven-javadoc-plugin</artifactId>
+              <version>2.8</version>
+            </plugin>
+            -->
+            <plugin>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <version>2.4</version>
+            </plugin>
+
+
+        </plugins>
+    </reporting>
+
+
+    <profiles>
+        <!-- This profile is invoked by -DprepareRelease=true.  This allows mvn release:prepare to
+            run successfully on the assembly projects. -->
+        <profile>
+            <id>prepare-release</id>
+            <activation>
+                <property>
+                    <name>prepareRelease</name>
+                </property>
+            </activation>
+            <!--
+            <modules>
+                <module>assembly</module>
+            </modules>
+            -->
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-release-plugin</artifactId>
+                        <configuration>
+                            <arguments>-DprepareRelease</arguments>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>rat</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.rat</groupId>
+                        <artifactId>apache-rat-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+    <distributionManagement>
+        <site>
+            <id>apache-site</id>
+            <name>Apache Website</name>
+            <url>scp://people.apache.org/www/myfaces.apache.org/extensions/scripting/</url>
+        </site>
+    </distributionManagement>
+</project>
diff --git a/extscript-root-1.0.4/run20.sh b/extscript-root-1.0.4/run20.sh
new file mode 100755
index 0000000..d9a8aa8
--- /dev/null
+++ b/extscript-root-1.0.4/run20.sh
@@ -0,0 +1,22 @@
+#
+#   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.
+#
+
+#!/bin/sh
+export MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
+mvn -o -P development -f extscript-examples/myfaces20-example/pom.xml clean jetty:run-exploded 
diff --git a/extscript-root-1.0.4/src/site/apt/download.apt b/extscript-root-1.0.4/src/site/apt/download.apt
new file mode 100644
index 0000000..1dd2cd6
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/apt/download.apt
@@ -0,0 +1,193 @@
+ ~~ 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.
+ 
+ ------
+Download Apache MyFaces Extension Scripting
+ ------
+
+Download Apache MyFaces Extension Scripting
+
+
+ Apache MyFaces 1.0.3 is the newest version. Significant changes have been made,
+ a general refactoring for maintainability was performed and basic Scala support has been added.
+ Note, this is the first release, which is Java 6 and MyFaces 2.1.6+ and Servlet 3.0 only. For older versions of
+ MyFaces and Java 5, download Ext-Scripting 1.0.2.
+
+  Release notes can be found {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12320165&styleName=Text&projectId=12310964}here}}
+
+*-------------------------+---------+----------+-----------+
+|                         | Server | Checksum | Signature |
+*-------------------------+---------+----------+-----------+
+| Ext-Script MyFaces 2.1 bundle(jar)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.3/extscript-myfaces20-bundle-1.0.3.jar} extscript-myfaces20-bundle-1.0.3.jar}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.3/extscript-myfaces20-bundle-1.0.3.jar.asc.md5} extscript-myfaces20-bundle-1.0.3.jar.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.3/extscript-myfaces20-bundle-1.0.3.jar.asc}extscript-myfaces20-bundle-1.0.3.jar.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Demo Application MyFaces 2.1 (war)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.3/myfaces20-example-1.0.3.war} myfaces20-example-1.0.3.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.3/myfaces20-example-1.0.3.war.asc.md5} myfaces20-example-1.0.3.war.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.3/myfaces20-example-1.0.3.war.asc}myfaces20-example-1.0.3.war.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Blank Application JSF2 (war)      | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.3/myfaces20-extscript-helloworld-1.0.3.war} myfaces20-extscript-helloworld-1.0.3.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.3/myfaces20-extscript-helloworld-1.0.3.war.md5} myfaces20-extscript-helloworld-1.0.3.war.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.3/myfaces20-extscript-helloworld-1.0.3.war.asc} myfaces20-extscript-helloworld-1.0.3.war.asc}} |
+*-------------------------+---------+----------+-----------+
+
+
+Ext-Scripting 1.0.2 (latest version supporting MyFaces 1.2.x)
+
+ Apache MyFaces Extension Scripting now has a 1.0.2 bugfix release which reenables compatibility with newer MyFaces
+ versions:
+ Apache MyFaces is distributed as jar archives for inclusion and as war archives for the
+ examples.
+
+ Note: this is the last release, which supports Java 5 and MyFaces 1.2.x from version 1.0.3 onwards
+ only Java 6 and JSF 2.1 and Servlet 3.0 will be supported.
+
+ Use the links below to download
+
+
+  Release notes can be found {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310964&version=12316367}here}}
+
+*-------------------------+---------+----------+-----------+
+|                         | Server | Checksum | Signature |
+*-------------------------+---------+----------+-----------+
+| Ext-Script MyFaces 1.2 bundle(jar)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0.2/extscript-myfaces12-bundle-1.0.2.jar} extscript-myfaces12-bundle-1.0.2.jar}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0.2/extscript-myfaces12-bundle-1.0.2.jar.asc.md5} extscript-myfaces12-bundle-1.0.2.jar.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0.2/extscript-myfaces12-bundle-1.0.2.jar.asc}extscript-myfaces12-bundle-1.0.2.jar.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script MyFaces 2.1 bundle(jar)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.2/extscript-myfaces20-bundle-1.0.2.jar} extscript-myfaces20-bundle-1.0.2.jar}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.2/extscript-myfaces20-bundle-1.0.2.jar.asc.md5} extscript-myfaces20-bundle-1.0.2.jar.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.2/extscript-myfaces20-bundle-1.0.2.jar.asc}extscript-myfaces20-bundle-1.0.2.jar.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Demo Application MyFaces 1.2 (war)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0.2/myfaces12-example-1.0.2.war} myfaces12-example-1.0.2.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0.2/myfaces12-example-1.0.2.war.asc.md5} myfaces12-example-1.0.2.war.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0.2/myfaces12-example-1.0.2.war.asc}myfaces12-example-1.0.2.war.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Demo Application MyFaces 2.0 (war)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.2/myfaces20-example-1.0.2.war} myfaces20-example-1.0.2.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.2/myfaces20-example-1.0.2.war.asc.md5} myfaces20-example-1.0.2.war.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.2/myfaces20-example-1.0.2.war.asc}myfaces20-example-1.0.2.war.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Blank Application JSF2 (war)      | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.2/myfaces20-extscript-helloworld-1.0.2.war} myfaces20-extscript-helloworld-1.0.2.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.2/myfaces20-extscript-helloworld-1.0.2.war.md5} myfaces20-extscript-helloworld-1.0.2.war.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.2/myfaces20-extscript-helloworld-1.0.2.war.asc} myfaces20-extscript-helloworld-1.0.2.war.asc}} |
+*-------------------------+---------+----------+-----------+
+
+
+Older Versions
+
+
+ Apache MyFaces Extension Scripting now has a 1.0.1 bugfix release which reenables compatibility with newer MyFaces
+ versions:
+ Apache MyFaces is distributed as jar archives for inclusion and as war archives for the
+ examples.
+
+
+ Use the links below to download
+
+
+  Release notes can be found {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310964&version=12316367}here}}
+
+*-------------------------+---------+----------+-----------+
+|                         | Server | Checksum | Signature |
+*-------------------------+---------+----------+-----------+
+| Ext-Script MyFaces 1.2 bundle(jar)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0.1/extscript-myfaces12-bundle-1.0.1.jar} extscript-myfaces12-bundle-1.0.1.jar}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0.1/extscript-myfaces12-bundle-1.0.1.jar.asc.md5} extscript-myfaces12-bundle-1.0.1.jar.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0.1/extscript-myfaces12-bundle-1.0.1.jar.asc}extscript-myfaces12-bundle-1.0.1.jar.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script MyFaces 2.0 bundle(jar)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.1/extscript-myfaces20-bundle-1.0.1.jar} extscript-myfaces20-bundle-1.0.1.jar}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.1/extscript-myfaces20-bundle-1.0.1.jar.asc.md5} extscript-myfaces20-bundle-1.0.1.jar.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.1/extscript-myfaces20-bundle-1.0.1.jar.asc}extscript-myfaces20-bundle-1.0.1.jar.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Demo Application MyFaces 1.2 (war)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0.1/myfaces12-example-1.0.1.war} myfaces12-example-1.0.1.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0.1/myfaces12-example-1.0.1.war.asc.md5} myfaces12-example-1.0.1.war.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0.1/myfaces12-example-1.0.1.war.asc}myfaces12-example-1.0.1.war.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Demo Application MyFaces 2.0 (war)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.1/myfaces20-example-1.0.1.war} myfaces20-example-1.0.1.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.1/myfaces20-example-1.0.1.war.asc.md5} myfaces20-example-1.0.1.war.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.1/myfaces20-example-1.0.1.war.asc}myfaces20-example-1.0.1.war.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Blank Application JSF2 (war)      | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.1/myfaces20-extscript-helloworld-1.0.1.war} myfaces20-extscript-helloworld-1.0.1.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.1/myfaces20-extscript-helloworld-1.0.1.war.md5} myfaces20-extscript-helloworld-1.0.1.war.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.1/myfaces20-extscript-helloworld-1.0.1.war.asc} myfaces20-extscript-helloworld-1.0.1.war.asc}} |
+*-------------------------+---------+----------+-----------+
+
+
+ As of now the project has an initial 1.0 release.
+ The initial release will only run with Apache MyFaces up to 2.0.2.
+ A subsequent release will follow soon which will support later versions
+ of Apache MyFaces.
+
+ Apache MyFaces is distributed as jar archives for inclusion and as war archives for the
+ examples.
+
+
+ Use the links below to download
+
+
+  Release notes can be found {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=10600&version=12316153}here}}
+
+*-------------------------+---------+----------+-----------+
+|                         | Server | Checksum | Signature |
+*-------------------------+---------+----------+-----------+
+| Ext-Script MyFaces 1.2 bundle(jar)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0/extscript-myfaces12-bundle-1.0.jar} extscript-myfaces12-bundle-1.0.jar}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0/extscript-myfaces12-bundle-1.0.jar.asc.md5} extscript-myfaces12-bundle-1.0.jar.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0/extscript-myfaces12-bundle-1.0.jar.asc}extscript-myfaces12-bundle-1.0.jar.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script MyFaces 2.0 bundle(jar)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0/extscript-myfaces20-bundle-1.0.jar} extscript-myfaces20-bundle-1.0.jar}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0/extscript-myfaces20-bundle-1.0.jar.asc.md5} extscript-myfaces20-bundle-1.0.jar.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0/extscript-myfaces20-bundle-1.0.jar.asc}extscript-myfaces20-bundle-1.0.jar.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Demo Application MyFaces 1.2 (war)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0/myfaces12-example-1.0.war} myfaces12-example-1.0.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0/myfaces12-example-1.0.war.asc.md5} myfaces12-example-1.0.war.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0/myfaces12-example-1.0.war.asc}myfaces12-example-1.0.war.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Demo Application MyFaces 2.0 (war)     | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0/myfaces20-example-1.0.war} myfaces20-example-1.0.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0/myfaces20-example-1.0.war.asc.md5} myfaces20-example-1.0.war.asc.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0/myfaces20-example-1.0.war.asc}myfaces20-example-1.0.war.asc}} |
+*-------------------------+---------+----------+-----------+
+| Ext-Script Blank Application JSF2 (war)      | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0/myfaces20-extscript-helloworld-1.0.war} myfaces20-extscript-helloworld-1.0.war}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0/myfaces20-extscript-helloworld-1.0.war.md5} myfaces20-extscript-helloworld-1.0.war.md5}} | {{{https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0/myfaces20-extscript-helloworld-1.0.war.asc} myfaces20-extscript-helloworld-1.0.war.asc}} |
+*-------------------------+---------+----------+-----------+
+
+
+Manual Checkout and Build
+
+ For manual checkout and building instructions of the Ext-Scripting Trunk  {{{installation.html}Ext-Scripting installation page}}
+
+
+Latest source code from SVN repository
+
+  If you want to use the latest Apache MyFaces Ext-Scripting features, the source code is under
+  version control with SVN.  Click {{{./source-repository.html} here }}
+  for information on how to use the ASF MyFaces Ext-Scripting SVN Repository.
+
+  Building instructions can be found under {{{./installation.html}Ext-Scripting installation page}}
+
+Latest source code from SVN repository
+
+    If you want to use the latest Apache MyFaces Test features, the source code is under
+    version control with SVN.  Click {{{source-repository.html} here }}
+    for information on how to use the ASF Test SVN Repository.
+
+Verifying checksums
+
+    It is essential that you verify the integrity of the downloaded
+    files using the PGP and MD5 signatures. MD5 verification ensures the
+    file was not corrupted during the download process. PGP verification
+    ensures that the file came from a certain person.
+
+    To verify the MD5 signature on the files, you need to use a program
+    called <<<md5>>> or <<<md5sum>>>, which is
+    included in many UNIX distributions.  It is also available as part of
+    {{{http://www.gnu.org/software/textutils/textutils.html}GNU Textutils}}.
+    Windows users can get binary md5 programs from {{{http://www.fourmilab.ch/md5/}here}},
+    {{{http://www.pc-tools.net/win32/freeware/console/}here}}, or
+    {{{http://www.slavasoft.com/fsum/}here}}.
+
+Verifying signatures
+
+  	PGP verification ensures that the file came from a certain person.  We strongly recommend
+	  you verify your downloads with both PGP and MD5.
+
+	The PGP signatures can be verified using {{{http://www.pgpi.org/}PGP}} or
+	{{{http://www.gnupg.org/}GPG}}.  First download the Apache MyFaces
+	{{{http://www.apache.org/dist/myfaces/KEYS}KEYS}}	as well as the <<<asc>>> signature file
+	for the particular distribution. It is important that you get these files from the ultimate
+	trusted source - the main ASF distribution site, rather than from a mirror.
+	Then verify the signatures using ...
+
+	  <<<
+	  % pgpk -a KEYS
+	  % pgpv extscript-myfaces20-bundle-1.0.3.jar.asc extscript-myfaces20-bundle-1.0.3.jar
+	  >>>
+
+	  <or>
+
+	  <<<
+	  % pgp -ka KEYS
+	  % pgp extscript-myfaces20-bundle-1.0.3.jar.asc extscript-myfaces20-bundle-1.0.3.jar
+	  >>>
+
+	  <or>
+
+	  <<<
+  	% gpg --import KEYS
+	  % gpg --verify extscript-myfaces20-bundle-1.0.3.jar.asc extscript-myfaces20-bundle-1.0.3.jar
+	  >>>
+
diff --git a/extscript-root-1.0.4/src/site/resources/images/alpha_1_depgraph.jpg b/extscript-root-1.0.4/src/site/resources/images/alpha_1_depgraph.jpg
new file mode 100644
index 0000000..4eb037f
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/alpha_1_depgraph.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/change_history.jpg b/extscript-root-1.0.4/src/site/resources/images/change_history.jpg
new file mode 100644
index 0000000..2a20153
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/change_history.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/compiler_output.png b/extscript-root-1.0.4/src/site/resources/images/compiler_output.png
new file mode 100644
index 0000000..678a5c0
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/compiler_output.png
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/development-states.jpg b/extscript-root-1.0.4/src/site/resources/images/development-states.jpg
new file mode 100644
index 0000000..03965d0
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/development-states.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/ext-scripting-structure-fine.jpg b/extscript-root-1.0.4/src/site/resources/images/ext-scripting-structure-fine.jpg
new file mode 100644
index 0000000..f36806f
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/ext-scripting-structure-fine.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/ext-scripting-structure.jpg b/extscript-root-1.0.4/src/site/resources/images/ext-scripting-structure.jpg
new file mode 100644
index 0000000..fef2650
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/ext-scripting-structure.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/ext_default_file.jpg b/extscript-root-1.0.4/src/site/resources/images/ext_default_file.jpg
new file mode 100644
index 0000000..80cd8c4
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/ext_default_file.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/ext_scripting_overview.jpg b/extscript-root-1.0.4/src/site/resources/images/ext_scripting_overview.jpg
new file mode 100644
index 0000000..1e3c887
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/ext_scripting_overview.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/extscriptlogo.png b/extscript-root-1.0.4/src/site/resources/images/extscriptlogo.png
new file mode 100644
index 0000000..b5d9bf9
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/extscriptlogo.png
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/intellij_source.jpg b/extscript-root-1.0.4/src/site/resources/images/intellij_source.jpg
new file mode 100644
index 0000000..e0a6d01
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/intellij_source.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/mixed-framework.jpg b/extscript-root-1.0.4/src/site/resources/images/mixed-framework.jpg
new file mode 100644
index 0000000..853d2ac
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/mixed-framework.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/netbeans_source1.jpg b/extscript-root-1.0.4/src/site/resources/images/netbeans_source1.jpg
new file mode 100644
index 0000000..3250d7a
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/netbeans_source1.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/netbeans_source2.jpg b/extscript-root-1.0.4/src/site/resources/images/netbeans_source2.jpg
new file mode 100644
index 0000000..2efba11
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/netbeans_source2.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/resources/images/source-resource.jpg b/extscript-root-1.0.4/src/site/resources/images/source-resource.jpg
new file mode 100644
index 0000000..cec8706
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/resources/images/source-resource.jpg
Binary files differ
diff --git a/extscript-root-1.0.4/src/site/site.xml b/extscript-root-1.0.4/src/site/site.xml
new file mode 100644
index 0000000..3092494
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/site.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    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.
+
+-->
+<project name="Apache MyFaces Extension-Scripting">
+  <bannerLeft>
+    <name>Apache MyFaces Extension-Scripting</name>
+
+
+    <src>images/extscriptlogo.png</src>
+
+    <href>http://myfaces.apache.org/ext-scripting</href>
+
+  </bannerLeft>
+  <bannerRight>
+    <name>Apache MyFaces</name>
+    <src>img/banners/MyFaces_logo.png</src>
+    <href>http://myfaces.apache.org/</href>
+  </bannerRight>
+  <skin>
+    <groupId>org.apache.myfaces.maven</groupId>
+    <artifactId>myfaces-site-skin</artifactId>
+    <version>3</version>
+  </skin>
+  <body>
+    <links>
+      <item name="Introduction" href="./index.html"/>
+      <item name="Download" href="./download.html"/>
+      <item name="Installation" href="./installation.html"/>
+      <item name="Users Guide" href="./usersguide.html"/>
+      <item name="Example Configurations" href="./exampleconfig.html"/>
+      <item name="Apache" href="http://www.apache.org"/>
+      <item name="MyFaces" href="http://myfaces.apache.org/index.html"/>
+    </links>
+
+    <menu name="Download">
+        <item name="Download" href="download.html"/>
+    </menu>
+    <menu name="Documentation">
+      <item name="Introduction" href="index.html" />
+      <item name="Latest Version Installation" href="installation.html" />
+      <item name="Installation of version 1.0.2 or earlier" href="install_102.html" />
+
+      <item name="Users Guide" href="usersguide.html"/>
+      <item name="Appendix A: Setup Checklist" href="setup_steps.html" />
+      <item name="Appendix B: Configuration Entries" href="configentries.html" />
+      <item name="Appendix B1: Configuration Entries for 1.0.2 or earlier" href="configentries_102.html" />
+      <item name="Appendix C: Example Configurations" href="exampleconfig.html" />
+      <item name="Appendix C1: Example Configurations 1.0.2 or earlier" href="exampleconfig_102.html" />
+    </menu>
+
+    <menu ref="modules"/>
+    <menu ref="reports"/>
+
+    <menu name="Apache MyFaces" inherit="top">
+       <item name="Overview"       href="http://myfaces.apache.org/index.html"/>
+       <item name="Download"       href="http://myfaces.apache.org/download.html"/>
+     </menu>
+
+     <menu name="MyFaces Projects" inherit="top">
+         <item name="Core JSF-2.1"   href="../core21/index.html" collapse="true">
+           <item name="dummy"        href="dummy"/>
+         </item>
+         <item name="Core JSF-2.0"   href="../core20/index.html" collapse="true">
+           <item name="dummy"        href="dummy"/>
+         </item>
+         <item name="Core JSF-1.2"   href="../core12/index.html" collapse="true">
+           <item name="dummy"        href="dummy"/>
+         </item>
+         <item name="Core JSF-1.1"   href="../core11/index.html" collapse="true">
+           <item name="dummy"        href="dummy"/>
+         </item>
+     </menu>
+
+     <menu name="UI-Component Sets" inherit="top">
+         <item name="Trinidad"       href="../trinidad/index.html"/>
+         <item name="Tobago"         href="../tobago/index.html"/>
+         <item name="Tomahawk"       href="../tomahawk/index.html" collapse="true">
+           <item name="dummy"        href="dummy"/>
+         </item>
+     </menu>
+
+     <menu name="Add-ons and Extensions" inherit="top">
+         <item name="CODI"           href="../extensions/cdi/index.html"/>
+         <item name="Orchestra"      href="../orchestra/index.html"/>
+         <item name="ExtVal"         href="../extensions/validator/index.html"/>
+         <item name="ExtScript"      href="../extensions/scripting/index.html"/>
+
+         <item name="Portlet Bridge" href="../portlet-bridge/index.html"/>
+         <item name="Test"           href="../test/index.html" collapse="false">
+           <item name="Myfaces Test Framework for JSF 1.2 (and 1.1)" href="http://myfaces.apache.org/test/myfaces-test12/index.html"/>
+           <item name="Myfaces Test Framework for JSF 2.0"           href="http://myfaces.apache.org/test/myfaces-test20/index.html"/>
+         </item>
+         <item name="Commons"        href="../commons/index.html"/>
+         <item name="HTML5"          href="../html5/index.html"/>
+         <item name="Sandbox"        href="../sandbox/index.html" collapse="true">
+           <item name="dummy"        href="dummy"/>
+         </item>
+         <item name="Others"         href="../otherProjects.html"/>
+     </menu>
+
+     <menu name="External Resources">
+         <item name="Ext-Scripting Interview" href="http://www.jsfcentral.com/articles/punz-03-12.html"/>
+         <item name="Groovy Language Homepage" href="http://http://groovy.codehaus.org/" />
+         <item name="Scala Language Homepage" href="http://www.scala-lang.org/" />
+         <item name="Scala and Apache MyFaces Part 1"
+               href="http://www.irian.at/de/blog/-/blogs/marrying-scala-with-apache-myfaces" />
+         <item name="Scala and Apache MyFaces Part 2"
+               href="http://www.irian.at/de/blog/-/blogs/marrying-scala-with-apache-myfaces" />
+         <item name="Scala and Apache MyFaces Part 3"
+                   href="http://www.irian.at/de/blog/-/blogs/marrying-scala-with-apache-myfaces" />
+
+     </menu>
+
+    <menu name="Foundation">
+      <item name="ASF" href="http://apache.org/" />
+      <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html" />
+      <item name="Thanks" href="http://www.apache.org/foundation/thanks.html" />
+    </menu>
+
+
+
+    
+  </body>
+</project>
diff --git a/extscript-root-1.0.4/src/site/xdoc/configentries.xml b/extscript-root-1.0.4/src/site/xdoc/configentries.xml
new file mode 100644
index 0000000..f6826b7
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/configentries.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+<document>
+    <section name="Navigation Top">
+        <a href="./setup_steps.html">&lt;&lt;Back to the appendix: Setup steps</a>
+        or
+        <a href="./exampleconfig.html">On to the appendix: Example Configuration&gt;&gt;</a>
+    </section>
+
+    <section name="Appendix: Configuration Entries">
+        <subsection name="General Information">
+            <p>
+                This page is a general quick overview over the possible configuration parameters, if you need further
+                details please visit the<a href="./installation.html">setup guide</a>.
+            </p>
+        </subsection>
+        <table>
+            <thead>
+                <tr>
+                    <td>Param</td>
+                    <td>Required</td>
+                    <td>Possible values</td>
+                    <td>Short Description</td>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <td>org.apache.myfaces.FACES_INIT_PLUGINS</td>
+                    <td>YES</td>
+                    <td>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</td>
+                    <td>MyFaces Extension Point Setup</td>
+                </tr>
+
+                <tr>
+                    <td>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</td>
+                    <td>NO</td>
+                    <td>comma separate list of paths</td>
+                    <td>Additional comma separated loader paths to allow direct editing of groovy files on the sources
+                        directory instead of editing in the deployment dir /WEB-INF/groovy
+                    </td>
+                </tr>
+                <tr>
+                    <td>org.apache.myfaces.extensions.scripting.scala.LOADER_PATHS</td>
+                    <td>NO</td>
+                    <td>comma separate list of paths</td>
+                    <td>Additional comma separated loader paths to allow direct editing of scala files on the sources
+                        directory instead of editing in the deployment dir /WEB-INF/scala
+                        <b>Note this functionality is enabled only in ext-script 1.0.3 or newer</b>
+                    </td>
+                </tr>
+                <tr>
+                    <td>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</td>
+                    <td>NO</td>
+                    <td>comma separate list of paths</td>
+                    <td>Additional comma separated loader paths to allow direct editing of java files on the sources
+                        directory instead of editing in the deployment dir /WEB-INF/java
+                    </td>
+                </tr>
+                <tr>
+                    <td>org.apache.myfaces.extensions.scripting.resource.LOADER_PATHS</td>
+                    <td>NO</td>
+                    <td>comma separate list of paths</td>
+                    <td>Additional comma separated loader paths to allow direct editing of resources on the sources
+                        directory instead of editing in the deployment directory
+                    </td>
+                    <td>Important notice, in most cases this path will point to the root of your web application
+                        directory
+                        (ie: src/main/webapp in a standard Maven2 structure or &lt;project-root&gt;/webapp for a
+                        standard
+                        Eclipse project structure)
+                    </td>
+                </tr>
+                <tr>
+                    <td>facelets.RESOURCE_RESOLVER</td>
+                    <td>NO</td>
+                    <td>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</td>
+                    <td>Enables the loading of xhtml facelet pages from your source directory, if
+                        org.apache.myfaces.extensions.scripting.resource.LOADER_PATHS is set properly
+                    </td>
+                </tr>
+                <tr>
+                    <td>org.apache.myfaces.scripting.PGK_WHITELIST</td>
+                    <td>NO</td>
+                    <td>a comma separate list of whitelisted packages</td>
+                    <td>Enables package whitelisting, a mechanism which allows to compile and reload only from
+                        whitelisted packages. This can help in case of having to reroute ext-scripting to
+                        your compile source directories. With this option you can isolate your own dynamic classes
+                        from the rest of the system.
+                    </td>
+                </tr>
+                <tr>
+                    <td>org.apache.myfaces.extensions.scripting.PGK_ADDITIONAL_CLASSPATH</td>
+                    <td>NO</td>
+                    <td>a comma separate list of additional classpaths</td>
+                    <td>enables additional classpaths for the compile time</td>
+                </tr>
+            </tbody>
+        </table>
+
+
+
+
+
+
+    </section>
+
+    <section name="Normal configuration entries">
+        <p>all configuration follow the context parameter convention</p>
+         <source><![CDATA[
+            <context-param>
+                <description>
+                    Initializes the plugins for our scripting support
+                </description>
+                <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+                <param-value>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</param-value>
+            </context-param>
+         ]]>
+         </source>
+
+    </section>
+
+
+
+    <section name="Navigation Bottom">
+        <a href="./setup_steps.html">&lt;&lt;Back to the appendix: Setup steps</a>
+        or
+        <a href="./exampleconfig.html">On to the appendix: Example Configuration&gt;&gt;</a>
+    </section>
+
+
+</document>
diff --git a/extscript-root-1.0.4/src/site/xdoc/configentries_102.xml b/extscript-root-1.0.4/src/site/xdoc/configentries_102.xml
new file mode 100644
index 0000000..721aabb
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/configentries_102.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+<document>
+    <section name="Navigation Top">
+        <a href="./setup_steps.html">&lt;&lt;Back to the appendix: Setup steps</a>
+        or
+        <a href="./exampleconfig_102.html">On to the appendix: Example Configuration&gt;&gt;</a>
+    </section>
+
+    <section name="Appendix: Configuration Entries">
+        <subsection name="General Information">
+            <p>
+                This page is a general quick overview over the possible configuration parameters, if you need further
+                details please visit the<a href="./installation.html">setup guide</a>.
+            </p>
+        </subsection>
+        <table>
+            <thead>
+                <tr>
+                    <td>Param</td>
+                    <td>Required</td>
+                    <td>Possible values</td>
+                    <td>Short Description</td>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <td>org.apache.myfaces.FACES_INIT_PLUGINS</td>
+                    <td>YES</td>
+                    <td>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</td>
+                    <td>MyFaces Extension Point Setup</td>
+                </tr>
+                <tr>
+                    <td>scriptingFilter</td>
+                    <td>YES</td>
+                    <td></td>
+                    <td>The scripting filter for further information look <a href="#scriptingFilter">below</a></td>
+                </tr>
+
+
+                <tr>
+                    <td>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</td>
+                    <td>NO</td>
+                    <td>comma separate list of paths</td>
+                    <td>Additional comma separated loader paths to allow direct editing of groovy files on the sources
+                        directory instead of editing in the deployment dir /WEB-INF/groovy
+                    </td>
+                </tr>
+                <tr>
+                    <td>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</td>
+                    <td>NO</td>
+                    <td>comma separate list of paths</td>
+                    <td>Additional comma separated loader paths to allow direct editing of java files on the sources
+                        directory instead of editing in the deployment dir /WEB-INF/java
+                    </td>
+                </tr>
+                <tr>
+                    <td>org.apache.myfaces.extensions.scripting.resource.LOADER_PATHS</td>
+                    <td>NO</td>
+                    <td>comma separate list of paths</td>
+                    <td>Additional comma separated loader paths to allow direct editing of resources on the sources
+                        directory instead of editing in the deployment directory
+                    </td>
+                    <td>Important notice, in most cases this path will point to the root of your web application
+                        directory
+                        (ie: src/main/webapp in a standard Maven2 structure or &lt;project-root&gt;/webapp for a
+                        standard
+                        Eclipse project structure)
+                    </td>
+                </tr>
+                <tr>
+                    <td>facelets.RESOURCE_RESOLVER</td>
+                    <td>NO</td>
+                    <td>org.apache.myfaces.extensions.scripting.facelet.ReroutingResourceResolver</td>
+                    <td>Enables the loading of xhtml facelet pages from your source directory, if
+                        org.apache.myfaces.extensions.scripting.resource.LOADER_PATHS is set properly
+                    </td>
+                </tr>
+                <tr>
+                    <td>org.apache.myfaces.scripting.PGK_WHITELIST</td>
+                    <td>NO</td>
+                    <td>a comma separate list of whitelisted packages</td>
+                    <td>Enables package whitelisting, a mechanism which allows to compile and reload only from
+                        whitelisted packages
+                    </td>
+                </tr>
+                <tr>
+                    <td>org.apache.myfaces.extensions.scripting.PGK_ADDITIONAL_CLASSPATH</td>
+                    <td>NO</td>
+                    <td>a comma separate list of additional classpaths</td>
+                    <td>enables additional classpaths for the compile time</td>
+                </tr>
+            </tbody>
+        </table>
+
+
+
+
+
+
+    </section>
+
+    <section name="Normal configuration entries">
+        <p>all configuration entries except for the scripting filter follow the context parameter convention</p>
+         <source><![CDATA[
+            <context-param>
+                <description>
+                    Initializes the plugins for our scripting support
+                </description>
+                <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+                <param-value>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</param-value>
+            </context-param>
+         ]]>
+         </source>
+
+    </section>
+
+    <section name="Scripting Filter">
+        <a name="scriptingFilter" />
+        <p>All configuration entries are context parameters, the only exception is the scripting filter which is a servlet filter</p>
+        <p>The scripting filter differs in its configuration by having to provide a servlet filter tag and a pattern:</p>
+
+        <source><![CDATA[
+            <!-- ======================================================================================
+                    Scripting Filter
+                    Second step to enable Ext-Scripting
+                 ====================================================================================== -->
+            <filter>
+                <filter-name>scriptingFilter</filter-name>
+                <filter-class>org.apache.myfaces.extensions.scripting.servlet.ScriptingServletFilter</filter-class>
+            </filter>
+            <filter-mapping>
+                <filter-name>scriptingFilter</filter-name>
+                <url-pattern>/*</url-pattern>
+                <dispatcher>REQUEST</dispatcher>
+                <dispatcher>FORWARD</dispatcher>
+                <dispatcher>INCLUDE</dispatcher>
+                <dispatcher>ERROR</dispatcher>
+            </filter-mapping>
+        ]]>
+        </source>            
+        <p>Note for further examples of the configuration go to the section <a href="./exampleconfig.html">On to the
+            appendix: Example Configuration&gt;&gt;</a> </p>
+    </section>
+
+
+    <section name="Navigation Bottom">
+        <a href="./setup_steps.html">&lt;&lt;Back to the appendix: Setup steps</a>
+        or
+        <a href="./exampleconfig.html">On to the appendix: Example Configuration&gt;&gt;</a>
+    </section>
+
+
+</document>
diff --git a/extscript-root-1.0.4/src/site/xdoc/exampleconfig.xml b/extscript-root-1.0.4/src/site/xdoc/exampleconfig.xml
new file mode 100644
index 0000000..23f597c
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/exampleconfig.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+
+<document>
+    <section name="Navigation Top">
+        <a href="./configentries.html">&lt;&lt;appendix Configuration Entries</a>
+    </section>
+    <section name="Appendix: Example Configuration">
+        <subsection name="General Information">
+            <p>
+                This page gives a detailed example configuration for
+                Ext-Scripting for installation
+                details please visit the<a href="./installation.html">setup guide</a>.
+            </p>
+        </subsection>
+        <subsection name="Simple Configuration">
+
+            <source><![CDATA[
+<web-app version="2.5" 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-app_2_5.xsd">
+
+
+    <description>MyProject web.xml</description>
+
+    <!-- ======================================================================================
+            Plugin Init Parameter
+            First Step to enable Ext-Scripting
+         ====================================================================================== -->
+    <context-param>
+        <description>
+            Initializes the plugins for our scripting support
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
+        ]]></source>
+        </subsection>
+        <subsection name="Full Configuration">
+            <source><![CDATA[
+<web-app version="2.5" 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-app_2_5.xsd">
+
+
+    <description>MyProject web.xml</description>
+
+    <!-- ======================================================================================
+            Plugin Init Parameter
+            First Step to enable Ext-Scripting
+         ====================================================================================== -->
+
+    <context-param>
+        <description>
+            Initializes the plugins for our groovy handlers
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</param-value>
+    </context-param>
+
+
+    <!-- ======================================================================================
+            Loader path for Groovy files
+         ====================================================================================== -->
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/examples/myfaces20-example/src/main/webapp/WEB-INF/groovy
+        </param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional Loader Paths for Java Source Files
+         ====================================================================================== -->
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/examples/myfaces20-example/src/main/webapp/WEB-INF/java
+        </param-value>
+    </context-param>
+    <!-- ======================================================================================
+            Loader path for Scala files
+         ====================================================================================== -->
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.scala.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/examples/myfaces20-example/src/main/webapp/WEB-INF/scala
+        </param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional Loader Paths for resource files
+         ====================================================================================== -->
+    <context-param>
+        <description>resource paths for our custom JSF2 resource resolver</description>
+        <param-name>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/examples/myfaces20-example/src/main/webapp
+        </param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional: Tell Facelets to load the resources from your source dir
+         ====================================================================================== -->
+    <context-param>
+        <description>a redirecting Facelet resource resolver which allows to pick up templates and resources from our
+            source dir
+        </description>
+        <param-name>facelets.RESOURCE_RESOLVER</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional: Whitelist of root packages where your sources should come from
+         ====================================================================================== -->
+    <context-param>
+        <description>a comma separated whitelist of root packages which are compiled those and nothing else
+            will be compiled during all compile stages, all other files stay permanently as they are
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.PGK_WHITELIST</param-name>
+        <param-value>org.apache.myfaces.groovyloader.blog,org.apache.myfaces.javaloader.blog</param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional Additional Classpath
+         ====================================================================================== -->
+    <context-param>
+        <description>
+            Additional Classpaths which will be added to the compilers classpath
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.PGK_ADDITIONAL_CLASSPATH</param-name>
+        <param-value>/usr/lib/java/myjar.jar,/usr/lib/java/myjar2.jar</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+
+
+    <!-- Listener, to allow Jetty serving MyFaces apps -->
+    <listener>
+        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+
+
+</web-app>
+
+        ]]></source>
+        </subsection>
+    </section>
+    <section name="Navigation Bottom">
+        <a href="./configentries.html">&lt;&lt;appendix Configuration Entries</a>
+    </section>
+</document>    
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/exampleconfig_102.xml b/extscript-root-1.0.4/src/site/xdoc/exampleconfig_102.xml
new file mode 100644
index 0000000..6836959
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/exampleconfig_102.xml
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+
+<document>
+    <section name="Navigation Top">
+        <a href="./configentries.html">&lt;&lt;appendix Configuration Entries</a>
+    </section>
+    <section name="Appendix: Example Configuration">
+        <subsection name="General Information">
+            <p>
+                This page gives a detailed example configuration for
+                Ext-Scripting for installation
+                details please visit the<a href="./installation.html">setup guide</a>.
+            </p>
+        </subsection>
+        <subsection name="Simple Configuration">
+
+            <source><![CDATA[
+<web-app version="2.5" 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-app_2_5.xsd">
+
+
+    <description>MyProject web.xml</description>
+
+    <!-- ======================================================================================
+            Plugin Init Parameter
+            First Step to enable Ext-Scripting
+         ====================================================================================== -->
+    <context-param>
+        <description>
+            Initializes the plugins for our scripting support
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Scripting Filter
+            Second step to enable Ext-Scripting
+         ====================================================================================== -->
+    <filter>
+        <filter-name>scriptingFilter</filter-name>
+        <filter-class>org.apache.myfaces.extensions.scripting.servlet.ScriptingServletFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>scriptingFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+        <dispatcher>ERROR</dispatcher>
+    </filter-mapping>
+
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
+        ]]></source>
+        </subsection>
+        <subsection name="Full Configuration">
+            <source><![CDATA[
+<web-app version="2.5" 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-app_2_5.xsd">
+
+
+    <description>MyProject web.xml</description>
+
+    <!-- ======================================================================================
+            Plugin Init Parameter
+            First Step to enable Ext-Scripting
+         ====================================================================================== -->
+
+    <context-param>
+        <description>
+            Initializes the plugins for our groovy handlers
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader</param-value>
+    </context-param>
+
+
+    <!-- ======================================================================================
+            Scripting Filter
+            Second step to enable Ext-Scripting
+         ====================================================================================== -->
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/examples/myfaces20-example/src/main/webapp/WEB-INF/groovy
+        </param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional Loader Paths for Java Source Files
+         ====================================================================================== -->
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/examples/myfaces20-example/src/main/webapp/WEB-INF/java
+        </param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional Loader Paths for Groovy Source Files
+         ====================================================================================== -->
+    <context-param>
+        <description>resource paths for our custom JSF2 resource resolver</description>
+        <param-name>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</param-name>
+        <param-value>
+            /Users/werpu2/development/workspace/extensions-scripting3/examples/myfaces20-example/src/main/webapp
+        </param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional: Tell Facelets to load the resources from your source dir
+         ====================================================================================== -->
+    <context-param>
+        <description>a redirecting Facelet resource resolver which allows to pick up templates and resources from our
+            source dir
+        </description>
+        <param-name>facelets.RESOURCE_RESOLVER</param-name>
+        <param-value>org.apache.myfaces.extensions.scripting.facelet.ReroutingResourceResolver</param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional: Whitelist of root packages where your sources should come from
+         ====================================================================================== -->
+    <context-param>
+        <description>a comma separated whitelist of root packages which are compiled those and nothing else
+            will be compiled during all compile stages, all other files stay permanently as they are
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.PGK_WHITELIST</param-name>
+        <param-value>org.apache.myfaces.groovyloader.blog,org.apache.myfaces.javaloader.blog</param-value>
+    </context-param>
+
+    <!-- ======================================================================================
+            Optional Additional Classpath
+         ====================================================================================== -->
+    <context-param>
+        <description>
+            Additional Classpaths which will be added to the compilers classpath
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.PGK_ADDITIONAL_CLASSPATH</param-name>
+        <param-value>/usr/lib/java/myjar.jar,/usr/lib/java/myjar2.jar</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <filter>
+        <filter-name>scriptingFilter</filter-name>
+        <filter-class>org.apache.myfaces.extensions.scripting.servlet.ScriptingServletFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>scriptingFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+        <dispatcher>ERROR</dispatcher>
+    </filter-mapping>
+
+    <!-- Listener, to allow Jetty serving MyFaces apps -->
+    <listener>
+        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+
+
+</web-app>
+
+        ]]></source>
+        </subsection>
+    </section>
+    <section name="Navigation Bottom">
+        <a href="./configentries.html">&lt;&lt;appendix Configuration Entries</a>
+    </section>
+</document>    
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/index.xml b/extscript-root-1.0.4/src/site/xdoc/index.xml
new file mode 100644
index 0000000..b11fe8e
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/index.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+<document>
+
+    <properties>
+        <title>Introduction</title>
+    </properties>
+
+    <body>
+        <section name="Navigation Top">
+            <a href="./installation.html">On to the General Installation Guide&gt;&gt;</a>
+        </section>
+
+        <section name="Introduction">
+            <subsection name="General Introduction">
+
+                <p>Welcome and hello to MyFaces Extension-Scripting, short Ext-Scripting. Ext-Scripting is an extensions
+                    project for MyFaces. It tries to add scripting and rapid prototyping (artifact level hot deployment)
+                    capabilities to JSF by adding
+                    scripting languages and JSP like recompilation mechanisms.
+
+                    Following link to the a video on YouTube shows you what Ext-Scripting can do for you:
+                </p>
+
+                <p>
+                    <center>
+                        <iframe class="youtube-player" type="text/html" width="800" height="600"
+                                src="http://www.youtube.com/embed/g2YvzOloNyI" frameborder="0">
+                        </iframe>
+                    </center>
+
+
+                </p>
+                <p>
+                    As the video shows, you can make changes to almost all JSF artifacts on the fly, and at the next
+                    reload the changes are present.
+                    The result is a reduction in server restarts and better turn around times. The
+                    same rapid prototyping approach which is normally present in scripting languages and scripting
+                    language based frameworks.
+
+                    Additionally to that, Ext-Scripting integrates various scripting languages to be used in conjunction
+                    with JSF, so that a mixed language approach becomes feasible within the bounds of the framework.
+                </p>
+
+            </subsection>
+
+        </section>
+        <section name="Documentation">
+            <p>
+                Ext-Scripting provides extensive documentation. Feel free
+                to browse our
+                <a href="./installation.html">Installation Guide</a>
+                or
+                <a href="./usersguide.html">Users Guide</a>
+                for further information.
+            </p>
+            <p>
+                Also
+                <a href="./download.html">download links</a>
+                are provided on the left hand side of this page,
+                as well as further information.
+            </p>
+        </section>
+
+        <section name="Short Overview over Ext-Scripting">
+            <subsection name="Supported for Scripting Languages">
+                <p>
+                    Ext-Scripting currently only supports Groovy Java and Scala (1.0.3+) as dynamic languages.
+                    Additional languages will be provided in subsequent releases.
+                </p>
+            </subsection>
+            <subsection name="Support for JSF2 and JSF2 Artifacts and Annotations">
+                <p>
+                    One of the main goals of Ext-Scripting was to provide JSF2 support out of the box. Most new JSF2
+                    artifacts are supported. Ext-Scripting even adds scriptability to the new annotation syntax of JSF2
+                    by allowing annotations to be used in a dynamic manner!
+                </p>
+            </subsection>
+            <subsection name="Support for MyFaces">
+                <p>
+                    Extensions scripting supports MyFaces only for now. Following versions are supported.
+                </p>
+                <ul>
+                    <li>1.2.8+ (note support will be dropped soon post 1.0.2)</li>
+                    <li>2.0+</li>
+                </ul>
+                <p>
+                    Older versions are not supported due to missing plugin mechanisms which allow Ext-Scripting to work.
+                </p>
+                <p>
+                    The JSF RI and Mojarra as time of writing are not supported due to missing framework hooks needed,
+                    but Mojarra supports Groovy out of the box within the core engine. So for the time being only
+                    MyFaces can be used. Also Portlets for 1.0.x are not supported, this limitation will be eliminated
+                    in future versions. Support for Mojarra maybe will come post 1.0.x.
+                </p>
+            </subsection>
+
+        </section>
+
+        <section name="Navigation Bottom">
+            <a href="./installation.html">On to the General Installation Guide&gt;&gt;</a>
+        </section>
+
+
+    </body>
+</document>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/install_102.xml b/extscript-root-1.0.4/src/site/xdoc/install_102.xml
new file mode 100644
index 0000000..19780c6
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/install_102.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+<document>
+    <properties>
+        <title>Installation</title>
+    </properties>
+
+    <body>
+        <section name="Navigation Top">
+            <a href="./index.html">&lt;&lt;Back to the Start Page</a>
+            or
+
+            <a href="./using_general.html">On to the General Users Guide&gt;&gt;</a>
+        </section>
+
+        <section name="General information">
+            This page covers the general installation and integration process of Apache MyFaces Extension scripting
+            1.0.2 or earlier,it does not go into the details of the configuration.
+            As of ext-script 1.0.3 a number of legacy dependencies are dropped for easier maintainability such as
+
+            <ul>
+                <li>Support for Java 5 and earlier</li>
+                <li>Support for MyFaces 1.2.x</li>
+                <li>Support for Servlet 2.5 and earlier</li>
+            </ul>
+
+            If you need to use Ext-Scripting with one of those configurations stick to 1.0.2.
+
+            The section covers the setup via download or custom build. If you need configuration detail info
+            or info on how to setup your ide correctly please follow the links in the navigation to
+            the correct section.
+
+        </section>
+
+
+        <section name="Setup overview">
+            <subsection name="General Setup Information" >
+             <p>
+
+                Ext-Scripting has a complete appendix list over all configuration and setup options
+                for a quick overview please visit the following links. If you need detailed
+                setup information, then read further on.
+             </p>
+            </subsection>
+            <subsection name="Links">
+                <p>
+                    <ul><a href="./setup_steps.html">Appendix: Configuration Setup Steps</a> </ul>
+                    <ul><a href="./exampleconfig_102.html">Appendix: Example Configurations for 1.0.2 or earlier</a>
+                    </ul>
+                    <ul><a href="./configentries_102.html">Appendix: List of Configuration Options for 1.02 or earlier</a> </ul>
+                </p>
+            </subsection>
+        </section>
+
+
+        <section name="Checklist">
+            <p>
+
+            For a short checklist of setup steps please follow <b><a href="./setup_steps.html"> this link</a></b>. For a detailed
+                setup guide, please continue reading.
+            </p>
+        </section>
+
+
+        <section name="Download">
+            <p>
+                With version 1.0 Ext-Scripting provides all necessary artifacts
+                as download artifacts to get quickly started.
+                A kickstart project is provided which can be used as shell for your own
+                projects.
+            </p>
+            <p>
+                For Download information please visit the <a href="./download.html"> download  page</a>.
+            </p>
+            <p>
+                Once you downloaded the necessary artifacts please check the <a href="#Manual_Setup">manual setup section</a> of this document.
+            </p>
+        </section>
+
+        <section name="Checkout and Build">
+            <p>
+                While Ext-Scripting is already in beta stage, the best way to get started
+                is probably to checkout and build ext-scripting yourself from the latest codebase.
+                All other installation steps will have this step as prerequisite if you want to
+                use the latest codebase instead of one of the beta releases!
+                First you have to check out the latest codebase from
+
+                <a href="http://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk">
+                    http://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk
+                </a>
+
+                via a subversion client.
+            </p>
+            <p>
+                Make sure you have following requirements fulfilled before checking out:
+            </p>
+            <ul>
+                <li>A valid Subversion client</li>
+                <li>Java 5 or higher</li>
+                <li>Maven 2.0.9 or higher</li>
+            </ul>
+            <p>
+                After checkout, a full build can be obtained from the root directory of your checkout via <b>mvn
+                clean install</b>.
+            </p>
+            <p>
+                Once finished, a valid build is installed, which can be used further on. Additionally you can find
+                two blueprint projects which you can use as starting points for your own projects under
+                <b>&lt;checkoutDir&gt;/examples</b>
+                , which can be started via<b>mvn jetty:run-exploded</b>.
+                The now generated files either can be used to be included in a maven install or be included manually
+                (please go to the next section for detailed setup instructions)
+
+            </p>
+
+        </section>
+
+        <section name="Setup of Ext-Scripting">
+
+            <subsection name="Requirements">
+                <p>
+                    Before setting up Ext-Scripting for your project make sure following requirements are met.
+                </p>
+                <ul>
+                    <li>JAVA_HOME points towards a valid Java SDK (JRE is not sufficient)</li>
+                    <li>You know how to create and deploy a web application within your preferred setup (command line,
+                        ide)
+                    </li>
+                </ul>
+            </subsection>
+
+            <subsection name="Setup">
+                <p>
+                    While one of the aims of Ext-Scripting was to enable an easy setup, for now it was not entirely
+                    possible for now to get a plug and play configuration. Several configuration steps have to be
+                    performed.
+                </p>
+                <ul>
+                    <li>A valid
+                        <b>MyFaces</b>
+                        installation has to be present
+                    </li>
+                    <li>Ext-Scripting and its dependencies has to be added to the MyFaces installation</li>
+                    <li>The paths to the scripts have to be present (see also below)</li>
+                </ul>
+
+            </subsection>
+
+
+            <subsection name="Preparations via Apache Maven 2">
+                <p>The easiest way once Extension scripting is compiled is probably a setup via Apache Maven 2
+                </p>
+                <p>
+                    Depending on your configuration and preferred JDK version you can add following entries to your
+                    Maven pom.xml to enable Ext-Scripting
+                </p>
+
+                <p/>
+                <h4>MyFaces 1.2.8+</h4>
+                <source><![CDATA[
+     <dependency>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-myfaces12-bundle</artifactId>
+        <version>1.0-SNAPSHOT</version>
+     </dependency>]]></source>
+
+                <h4>MyFaces 2.+</h4>
+                <source><![CDATA[
+     <dependency>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-myfaces20-bundle</artifactId>
+        <version>1.0-SNAPSHOT</version>
+     </dependency>]]></source>
+            </subsection>
+
+    
+            <subsection name="Manual Setup">
+                <p>If you do not like Maven or you prefer a manual setup, Ext-Scripting provides convenient meta bundles.
+                    A manual setup
+                    comes down to the task of adding the appropriate meta bundle (extscript-myfaces12-bundle or
+                    extscript-myfaces20-bundle)
+                    to your WEB-INF/lib directory and adding a groovy-all.jar as additional dependency.
+                </p>
+                <p>you can obtain both jars after the build from:
+                    <ul>
+                        <li>&lt;yourbuilderoot&gt;/extscript-bundles/extscript-myfaces12-bundle/target/extscript-myfaces12-bundle-1.0-SNAPSHOT.jar</li>
+                        <li>&lt;yourbuilderoot&gt;/extscript-bundles/extscript-myfaces20-bundle/target/extscript-myfaces20-bundle-1.0-SNAPSHOT.jar</li>
+                    </ul>
+                </p>
+                <p>After having done that you are ready to setup the rest of the Ext-Scripting configuration manually as
+                    described in the section blow
+                </p>
+            </subsection>
+
+
+            <subsection name="Preparing the Necessary web.xml Entries">
+                <h4>First Step</h4>
+                <p>To enable Ext-Scripting you also have to add several entries to your web.xml file.</p>
+
+                <p>First a context param has to be set which attaches the Ext-Scripting plugins to MyFaces</p>
+                <source><![CDATA[
+     <context-param>
+        <description>
+            Enables our scripting engine support plugins
+        </description>
+        <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+        <param-value>
+            org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader
+        </param-value>
+     </context-param>]]></source>
+                <h4>Second Step</h4>
+                <p>Add Ext-Scriptings servlet filter to your servlet configuration</p>
+                <source><![CDATA[
+    <filter>
+        <filter-name>scriptingFilter</filter-name>
+        <filter-class>org.apache.myfaces.extensions.scripting.servlet.ScriptingServletFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>scriptingFilter</filter-name>
+        <url-pattern>/*.jsf</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+        <dispatcher>ERROR</dispatcher>
+    </filter-mapping>]]></source>
+                <p>The init parameter and the servlet filter
+                    <b>MUST</b>
+                    be set otherwise Ext-Scripting will not be enabled!
+                </p>
+                <p> For the filter pattern you can use every pattern which enables your web pages,
+                the standard cases are, either <b>*.jsf</b> or <b>/faces/*</b>
+                Note you <b>must</b> use the same pattern as described in the configuration
+                part of your Faces Servlet.</p>
+                <h4>Additional Optional Steps</h4>
+                <p>Ext-Scripting exposes a number configuration parameters which can be set via context parameters in
+                    your web.xml
+                </p>
+
+                <h4>Adjust the web.xml Root source paths.</h4>
+                <p>Since the goal of Ext-Scripting is to provide scriptability to a running web application, it has to
+                    know where to find the sources. For this, a default location has been chosen
+                    according to the standards set by the Mojarra Groovy Extension.
+                </p>
+                <p>
+                    The location looks like:
+                </p>
+                <source><![CDATA[
+     <webapp>/WEB-INF/groovy                    
+                ]]></source>
+                <p>
+                    as root location for Groovy files
+                </p>
+                <source><![CDATA[
+     <webapp>/WEB-INF/java
+                ]]></source>
+                <p>
+                    as root location for java files.
+                </p>
+                <p>
+                    Following image displays the default locations:
+                    <img src="images/ext_default_file.jpg"/>
+                </p>
+                <p>However in a normal development scenario, it is often undesirable to have the files located in a
+                    deployment location, and a pointer mechanism towards the actual source locations would be more
+                    desirable.
+
+                    To provide such a mechanism, Ext-Scripting allows two optional web.xml context parameters, which
+                    allow the rerouting of source locations of the supported languages!
+                </p>
+                <source><![CDATA[
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+        <param-value>
+           <some project path>/src/main/webapp/WEB-INF/groovy
+        </param-value>
+    </context-param>
+    <context-param>
+        <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+            of the deployment dir
+        </description>
+        <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+        <param-value>
+            <some project path>/src/main/webapp/WEB-INF/java
+        </param-value>
+    </context-param>
+                ]]></source>
+                <ul>
+                    <li>
+                        <b>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</b>
+                        can be a comma separated list of paths which point to the actual Groovy sources.
+                    </li>
+                    <li>
+                        <b>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</b>
+                        does the same for Java sources..
+                    </li>
+                </ul>
+
+            </subsection>
+        </section>
+
+        <section name="Navigation Bottom">
+            <a href="./index.html">&lt;&lt;Back to the Start Page</a>
+            or
+
+            <a href="./using_general.html">On to the General Users Guide&gt;&gt;</a>
+        </section>
+
+    </body>
+</document>
+        
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/installation.xml b/extscript-root-1.0.4/src/site/xdoc/installation.xml
new file mode 100644
index 0000000..f0ebe19
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/installation.xml
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+<document>
+    <properties>
+        <title>Installation</title>
+    </properties>
+
+    <body>
+        <section name="Navigation Top">
+            <a href="./index.html">&lt;&lt;Back to the Start Page</a>
+            or
+
+            <a href="./using_general.html">On to the General Users Guide&gt;&gt;</a>
+        </section>
+
+        <section name="General information">
+            This page covers the general installation and integration process, it does not
+            go into the details of the configuration.
+
+
+            The section covers the setup via download or custom build. If you need configuration detail info
+            or information on how to setup your ide correctly please follow the links in the navigation to
+            the correct section.
+
+        </section>
+
+
+        <section name="Setup overview">
+            <subsection name="General Setup Information" >
+             <p>
+
+                Ext-Scripting has a complete appendix list over all <a href="./configentries.html">configuration and
+                 setup</a> options as well as <a href="./exampleconfig.html">example configurations</a>.
+                For a quick overview please visit the following links. If you need detailed
+                setup information, then read further on.
+             </p>
+            </subsection>
+            <subsection name="Links">
+                <p>
+                    <ul><a href="./setup_steps.html">Appendix: Configuration Setup Step Overview</a> </ul>
+                    <ul><a href="./exampleconfig.html">Appendix: Example Configurations</a> </ul>
+                    <ul><a href="./configentries.html">Appendix: List of Configuration Options</a> </ul>
+                </p>
+            </subsection>
+        </section>
+
+
+        <section name="Checklist">
+            <p>
+
+            For a short checklist of setup steps please follow <b><a href="./setup_steps.html"> this link</a></b>. For a detailed
+                setup guide, please continue reading.
+            </p>
+        </section>
+
+
+        <section name="Download">
+            <p>
+                With version 1.0.x Ext-Scripting provides all necessary artifacts
+                as download artifacts to get quickly started.
+                A kickstart project is provided which can be used as shell for your own
+                projects.
+            </p>
+            <p>
+                For Download information please visit the <a href="./download.html"> download  page</a>.
+            </p>
+            <p>
+                Once you downloaded the necessary artifacts please check the <a href="#Manual_Setup">manual setup section</a> of this document.
+            </p>
+        </section>
+
+        <section name="Checkout and Build">
+            <p>
+                While Ext-Scripting is already in stable state, the best way to get started
+                is probably to checkout and build Ext-Scripting yourself from the latest codebase.
+                All other installation steps will have this step as prerequisite if you want to
+                use the latest codebase instead of one of the beta releases!
+                First you have to check out the latest codebase from
+
+                <a href="http://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk">
+                    http://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk
+                </a>
+
+                via a subversion client.
+            </p>
+            <p>
+                Make sure you have following requirements fulfilled before checking out:
+            </p>
+            <ul>
+                <li>A valid Subversion client</li>
+                <li>A valid Servlet 3.0+ container</li>
+                <li>Java 6 or higher</li>
+                <li>Maven 2.0.9 or higher</li>
+            </ul>
+            <p>
+                After checkout, a full build can be obtained from the root directory of your checkout via <b>mvn
+                clean install</b>.
+            </p>
+            <p>
+                Once finished, a valid build is installed, which can be used further on. Additionally you can find
+                two blueprint projects which you can use as starting points for your own projects under
+                <b>&lt;checkoutDir&gt;/examples</b>
+                , which can be started via<b>mvn jetty:run-exploded</b>.
+                The now generated files either can be used to be included in a maven install or be included manually
+                (please go to the next section for detailed setup instructions)
+
+            </p>
+
+        </section>
+
+        <section name="Setup of Ext-Scripting">
+
+            <subsection name="Requirements">
+                <p>
+                    Before setting up Ext-Scripting for your project make sure following requirements are met.
+                </p>
+                <ul>
+                    <li>JAVA_HOME points towards a valid Java SDK (JRE is not sufficient)</li>
+                    <li>You know how to create and deploy a web application within your preferred setup (command line,
+                        ide)
+                    </li>
+                </ul>
+            </subsection>
+
+            <subsection name="Setup">
+                <p>
+                    While one of the aims of Ext-Scripting was to enable an easy setup, for now it was not entirely
+                    possible for now to get a plug and play configuration. Several configuration steps have to be
+                    performed.
+                </p>
+                <ul>
+                    <li>A valid
+                        <b>MyFaces</b>
+                        installation has to be present
+                    </li>
+                    <li>Ext-Scripting and its dependencies has to be added to the MyFaces installation</li>
+                    <li>The paths to the scripts have to be present (see also below)</li>
+                </ul>
+
+            </subsection>
+
+
+            <subsection name="Preparations via Apache Maven 2">
+                <p>The easiest way once Extension scripting is compiled is probably a setup via Apache Maven 2
+                </p>
+                <p>
+                    Depending on your configuration and preferred JDK version you can add following entries to your
+                    Maven pom.xml to enable Ext-Scripting
+                </p>
+
+                <p/>
+
+
+                <h4>MyFaces 2.1+</h4>
+                <source><![CDATA[
+     <dependency>
+        <groupId>org.apache.myfaces.extensions.scripting</groupId>
+        <artifactId>extscript-myfaces20-bundle</artifactId>
+        <version>1.0.3</version>
+     </dependency>]]></source>
+
+                <h4>Additional language libraries</h4>
+                <p>
+
+                    You have to add following artifacts to your dependency list for additional language support
+              <source><![CDATA[
+<dependency>
+    <groupId>org.codehaus.groovy</groupId>
+    <artifactId>groovy-all</artifactId>
+    <version>1.7.1</version>
+</dependency>
+              ]]></source>
+    For Groovy support (version number may vary)
+
+              <source><![CDATA[
+<dependency>
+    <groupId>org.scala-lang</groupId>
+    <artifactId>scala-library</artifactId>
+    <version>2.9.1</version>
+</dependency>
+<dependency>
+    <groupId>org.scala-lang</groupId>
+    <artifactId>scala-compiler</artifactId>
+    <version>2.9.1</version>
+</dependency>
+                ]]></source>
+    For Scala support.
+                </p>
+            </subsection>
+
+
+            <subsection name="Manual Setup">
+                <p>If you do not like Maven or you prefer a manual setup, Ext-Scripting provides convenient meta bundles.
+                    A manual setup
+                    comes down to the task of adding the appropriate meta bundle (extscript-myfaces20-bundle)
+                    to your WEB-INF/lib directory and adding a groovy-all.jar as additional dependency.
+                    For Scala support you have to add scala-library.jar and scala-compiler.jar to your
+                    WEB-INFU/lib. Note not adding those additional libs automatically will disable
+                    the respective language support.
+                </p>
+                <p>you can obtain both bundle jars after the build from:
+                    <ul>
+                        <li>&lt;yourbuilderoot&gt;/extscript-bundles/extscript-myfaces20-bundle/target/extscript-myfaces20-bundle-1.0.3-SNAPSHOT.jar</li>
+                    </ul>
+                    The additional language jars for the respective language
+                    can be obtained from the language distributions.
+                </p>
+                <p>After having done that you are ready to setup the rest of the Ext-Scripting configuration manually as
+                    described in the section blow
+                </p>
+            </subsection>
+
+
+            <subsection name="Preparing the Necessary web.xml Entries">
+                <h4>Most important step</h4>
+                <p>To enable Ext-Scripting you also have to add several entries to your web.xml file.</p>
+
+                <p>First a context param has to be set which attaches the Ext-Scripting plugins to MyFaces</p>
+                <source><![CDATA[
+ <context-param>
+    <description>
+        Enables our scripting engine support plugins
+    </description>
+    <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
+    <param-value>
+        org.apache.myfaces.extensions.scripting.servlet.StartupServletContextPluginChainLoader
+    </param-value>
+ </context-param>]]></source>
+
+                <h4>Additional Optional Steps</h4>
+                <p>Ext-Scripting exposes a number configuration parameters which can be set via context parameters in
+                    your web.xml
+                </p>
+
+                <h4>Adjust the web.xml Root source paths.</h4>
+                <p>Since the goal of Ext-Scripting is to provide scriptability to a running web application, it has to
+                    know where to find the sources. For this, a default location has been chosen
+                    according to the standards set by the Mojarra Groovy Extension.
+                </p>
+                <p>
+                    The location looks like:
+                </p>
+                <source><![CDATA[
+     <webapp>/WEB-INF/groovy                    
+                ]]></source>
+                <p>
+                    as root location for Groovy files
+                </p>
+                <source><![CDATA[
+     <webapp>/WEB-INF/java
+                ]]></source>
+                <p>
+                    as root location for java files.
+                </p>
+                <p>
+                    Following image displays the default locations:
+                    <img src="images/ext_default_file.jpg"/>
+                </p>
+                <p>However in a normal development scenario, it is often undesirable to have the files located in a
+                    deployment location, and a pointer mechanism towards the actual source locations would be more
+                    desirable.
+
+                    To provide such a mechanism, Ext-Scripting allows two optional web.xml context parameters, which
+                    allow the rerouting of source locations of the supported languages!
+                </p>
+                <source><![CDATA[
+<context-param>
+    <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+        of the deployment dir
+    </description>
+    <param-name>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</param-name>
+    <param-value>
+       <some project path>/src/main/webapp/WEB-INF/groovy
+    </param-value>
+</context-param>
+<context-param>
+    <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+        of the deployment dir
+    </description>
+    <param-name>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</param-name>
+    <param-value>
+        <some project path>/src/main/webapp/WEB-INF/java
+    </param-value>
+</context-param>
+<context-param>
+    <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
+        of the deployment dir
+    </description>
+    <param-name>org.apache.myfaces.extensions.scripting.scala.LOADER_PATHS</param-name>
+    <param-value>
+        <some project path>/src/main/webapp/WEB-INF/scala
+    </param-value>
+</context-param>
+                ]]></source>
+                <ul>
+                    <li>
+                        <b>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</b>
+                        can be a comma separated list of paths which point to the actual Groovy sources.
+                    </li>
+                    <li>
+                        <b>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</b>
+                        does the same for Java sources..
+                    </li>
+                    <li>
+                        <b>org.apache.myfaces.extensions.scripting.scala.LOADER_PATHS</b>
+                        does the same for Java Scala (Ext-Scripting 1.0.3 or newer)...
+                    </li>
+                </ul>
+
+                <h4>Dynamic resource reloading</h4>
+                <p>Additionally Ext-Scripting allows the reloading of dynamic web resources
+                like Facelets templates images css files etc...  An additional config param is
+                    available to enable this functionality.
+                    </p>
+                <p>
+                <ul>
+                    <li>
+                        <b>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</b>
+                        This parameter points to the root of your dynamic resources, usually the same dir
+                                        as the root of your web application.
+                    </li>
+                    <li><b>facelets.RESOURCE_RESOLVER</b> also needs to be set to <b>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</b> if
+                    you want dynamic Facelet reloading enabled</li>
+                </ul>
+
+                <source><![CDATA[
+<!-- ======================================================================================
+         Optional Loader Paths for resource files
+  ====================================================================================== -->
+ <context-param>
+     <description>resource paths for our custom JSF2 resource resolver</description>
+     <param-name>org.apache.myfaces.extensions.scripting.resources.LOADER_PATHS</param-name>
+     <param-value>
+         ~/extensions-scripting3/examples/myfaces20-example/src/main/webapp
+     </param-value>
+ </context-param>
+
+<!-- ======================================================================================
+  Optional: Tell Facelets to load the resources from your source dir
+  ====================================================================================== -->
+ <context-param>
+     <description>a redirecting Facelet resource resolver which allows to pick up templates
+        and resources from our source dir
+     </description>
+     <param-name>facelets.RESOURCE_RESOLVER</param-name>
+     <param-value>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</param-value>
+ </context-param>
+        ]]></source>
+                </p>
+                This sums up the quick install and setup guide, if you want more detailed setup examples and
+                additional configuration entries
+                go to our <a href="./exampleconfig.html">Example Configurations</a> page, which shows
+                a set of different configurations.
+
+
+            <h4>Package Whitelisting</h4>
+            <p>The last possible config entry is the ability to whitelist packages. If you have set this option
+            then only whitelisted packages will be picked up for dynamic recompilation</p>
+            <p>With this option you can point your source dir to the normal compile source and mark
+            special packages as dynamic (to isolate the dynamic part from the rest)</p>
+
+            To enable this option, add following entry to your web.xml:
+             <source><![CDATA[
+<!-- ======================================================================================
+    Optional: Whitelist of root packages where your sources should come from
+ ====================================================================================== -->
+<context-param>
+    <description>a comma separated whitelist of root packages which are compiled those and nothing else
+        will be compiled during all compile stages, all other files stay permanently as they are
+    </description>
+    <param-name>org.apache.myfaces.extensions.scripting.PGK_WHITELIST</param-name>
+    <param-value>org.apache.myfaces.groovyloader.blog,org.apache.myfaces.javaloader.blog</param-value>
+</context-param>
+             ]]></source>
+            </subsection>
+
+
+        </section>
+
+        <section name="Navigation Bottom">
+            <a href="./index.html">&lt;&lt;Back to the Start Page</a>
+            or
+            <a href="./using_general.html">On to the General Users Guide&gt;&gt;</a>
+        </section>
+
+    </body>
+</document>
+        
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/setup_steps.xml b/extscript-root-1.0.4/src/site/xdoc/setup_steps.xml
new file mode 100644
index 0000000..d7f6ba8
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/setup_steps.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+-->
+<document>
+    <properties>
+        <title>Using Ext-Scripting in Eclipse</title>
+    </properties>
+
+    <body>
+
+        <section name="Navigation Top">
+            <a href="./using_netbeans.html">&lt;&lt;Back to the Netbeans Users Guide</a>
+            or
+            <a href="./configentries.html">On to the configuration entries overview&gt;&gt;</a>
+        </section>
+
+        <section name="Appendix: Setup Steps">
+
+
+            <subsection name="Short setup overview">
+                <p>This section is only a checklist of things to do at the setup for details follow the explanations
+                    in the <a href="./installation.html">page</a>
+                </p>
+
+                <p>
+                    Manual setup
+                    <ul>
+                        <li>Check if your installation environment is setup</li>
+                        <li>Download the appropriate meta bundle and place it in WEB-INF/lib</li>
+                        <li>Download groovy-all.jar and or (scala-lang.jar and scala-compiler.jar) and place it in
+                            WEB-INF/lib</li>
+                        <li>Prepare your script paths (WEB-INF/java, WEB-INF/groovy, WEB-INF/scala)</li>
+                        <li>Add your <a href="./exampleconfig.html">web.xml</a> entries</li>
+                        <li>start the web application ...</li>
+                    </ul>
+                </p>
+                <p>
+                    Build via maven
+                    <ul>
+                        <li>Check if your installation environment is setup</li>
+                        <li>Add your pom xml dependencies and the repository entry</li>
+                        <li>Prepare your script paths (WEB-INF/java, WEB-INF/groovy, WEB-INF/scala)</li>
+                        <li>Add your <a href="./exampleconfig.html">web.xml</a> entries</li>
+                        <li>mvn clean install ...</li>
+                    </ul>
+                </p>
+
+                <p>
+                    Build via ide
+                    <ul>
+                        <li>Check if your installation environment is setup</li>
+                        <li>Download the appropriate meta bundle and add it to your dependency and deployment settings
+                        (for the download location check the <a href="./download.html">download page</a>)
+                        </li>
+                        <li>Download groovy-all.jar and add it to your dependency and deployment settings</li>
+                        <li>Prepare your script paths</li>
+                        <li>Add your <a href="./exampleconfig.html">web.xml</a> entries</li>
+                        <li>start the web application ...</li>
+                    </ul>
+                </p>
+            </subsection>
+        </section>
+
+        <section name="Navigation Bottom">
+                   <a href="./using_netbeans.html">&lt;&lt;Back to the Netbeans Users Guide</a>
+                   or
+                   <a href="./configentries.html">On to the configuration entries overview&gt;&gt;</a>
+        </section>
+
+    </body>
+</document>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/usersguide.xml b/extscript-root-1.0.4/src/site/xdoc/usersguide.xml
new file mode 100644
index 0000000..1e62477
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/usersguide.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+<document>
+    <properties>
+        <title>Users Guide</title>
+    </properties>
+
+    <body>
+        <section name="Navigation Top">
+            <a href="./installation.html">&lt;&lt;Back to the Setup Guide</a> or
+            <a href="./using_general.html">On to the General Users Guide&gt;&gt;</a>
+        </section>
+
+
+        <section name="Users Guide">
+            <p>
+                After having set up MyFaces Ext-Scripting (if you do not have done so please go to our<a
+                    href="./installation.html">Installation Page</a>), you basically can start editing, and be done with
+                the users
+                guide.
+            </p>
+            <p>
+                Well theoretically anyway, there are some things every user of Extension-Scripting has to take into
+                consideration.
+            </p>
+            <p>
+                First of all Ext-Scripting in its current incarnation tries to help the programmers every day life. That
+                means, it tries to reduce the number of needed server restarts to the lowest possible minimum which is
+                achievable within the boundaries of Java and JSF.
+                Also it is not yet fully integrated into the bigger application servers, testing only currently is
+                done for Apache Tomcat and Jetty. Scala due to the nature of its compiler interface, definitely only
+                will work in an expanded embedded WAR environment, not in an EAR environment.
+            </p>
+            <p>
+                You won't get a zero restart configuration, Extension-Scripting tries not to be perfect in this regard,
+                but
+                what you can achieve is a significant reduction on restarts by applying scripting languages and dynamic
+                compilation.
+            </p>
+            <p>
+                Secondly, we do not try to support every scripting language under the earth, the basic goal is first to
+                get
+                the basics right and then in subsequent releases to add additional scripting languages support.
+            </p>
+            <p>
+                As is, every scripting language which can compile against the JVM can be supported. Purely interpreted
+                languages are not supported.
+            </p>
+            <p>
+                For now we cannot recommend to use Ext-Scripting in a production environment for live patches, although
+                it
+                theoretically would be possible, and we spent a lot of blood sweat and tears into making the system
+                stable
+                under multithreaded conditions. For now, however, we simply only can recommend to use Ext-Scripting for
+                development and development only scenarios if you need to hot patch code (deployment without any changes
+                however should be fine). So if you want to hot patch a running installations, we assume it should work
+                fine,
+                but you are on your own.
+            </p>
+        </section>
+        <section name="Chapters">
+            <p>The Following Chapters should help you to guide you through the usage of Ext-Scripting</p>
+            <ul>
+                <li>
+                    <a href="./using_general.html">General users guide</a>
+                </li>
+                <li>
+                    <a href="./using_advanced.html">Advanced usage</a>
+                </li>
+                <li>
+                    <a href="./using_eclipse_.html">Ext-Scripting in Eclipse</a>
+                </li>
+                <li>
+                    <a href="./using_intellij.html">Ext-Scripting in Intellij</a>
+                </li>
+                <li>
+                    <a href="./using_intellij.html">Ext-Scripting in Netbeans</a>
+                </li>
+            </ul>
+        </section>
+
+        <section name="Navigation Bottom">
+            <a href="./installation.html">&lt;&lt;Back to the Setup Guide</a>  or
+
+            <a href="./using_general.html">On to the General Users Guide&gt;&gt;</a>
+        </section>
+
+    </body>
+</document>
+        
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/using_advanced.xml b/extscript-root-1.0.4/src/site/xdoc/using_advanced.xml
new file mode 100644
index 0000000..0c3e514
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/using_advanced.xml
@@ -0,0 +1,524 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+<document>
+    <properties>
+        <title>Advanced Users Guide</title>
+    </properties>
+
+    <body>
+        <section name="Navigation Top">
+            <a href="./using_general.html">&lt;&lt;Back to the General Users Guide</a>
+            or
+
+            <a href="./using_eclipse_.html">On to the Eclipse Users Guide&gt;&gt;</a>
+        </section>
+
+
+        <section name="Introduction">
+            <p>Congratulations by the time you have reached this section, you probably have mastered the basics
+                of Ext-Scripting, you probably already can edit your local files and have them refreshed on the fly
+            </p>
+            <p>
+                Under normal circumstances you, should be set up by now and you can start coding happily.
+                However since this is a framework based reloading mechanism it is wise to dig a little bit deeper
+                and to know what is happening under the hood and why things behave like they do.
+                If you are interested then read on.
+            </p>
+        </section>
+
+        <section name="Helper Components">
+            <subsection name="Overview">
+                <p>Additionally to the standard reloading feature, Ext-Scripting provides two components
+                    which hopefully will make the life of every programmer easier.
+                </p>
+                <br/>
+                <ul>
+                    <li>The Compiler Output Component</li>
+                    <li>The Change History Component</li>
+                </ul>
+                <p>
+                    Note currently and for the foreseeable future only Facelets as page description language
+                    will be supported by the components.
+                </p>
+            </subsection>
+
+            <subsection name="Setup">
+                <p>To use the components following namespace has to be included</p>
+                <p>
+                    <source><![CDATA[xmlns:exs="http://myfaces.apache.org/ext-scripting"]]></source>
+                </p>
+                <p>Example</p>
+                <p>
+                    <source><![CDATA[
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:exs="http://myfaces.apache.org/ext-scripting"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>]]></source>
+                </p>
+            </subsection>
+
+            <subsection name="The Compiler Output Component">
+                <p>One of the cornerstones of Ext-Scripting is the dynamic recompilation.
+                    Every file changed, is reloaded, while you hit refresh on the browser.
+                </p>
+                <p>
+                    Now, under normal circumstances, the compiler errors and warnings are written to the console log
+                    as following:
+                    <source><![CDATA[
+            Java Compiler, Error on line:
+            org/apache/myfaces/javaloader/blog/Blog.java:30:
+            class, interface, or enum expected30]]></source>
+                </p>
+                <p>
+                    Now, trying to catch those errors within the log is "mildly spoken" annoying
+                    and time consuming.
+                    Exactly for bypassing this problem a compiler output component
+                    can be used either in your page or preferably in a second page.
+
+                </p>
+                <p>The following Video shows the compiler output component in action</p>
+                <p>
+                    <center>
+                        <iframe class="youtube-player" type="text/html" width="640" height="505"
+                                                        src="http://www.youtube.com/embed/v56ru9ZJyhQ" frameborder="0">
+                        </iframe>
+                    </center>
+                    <div class="objectAnnotation">Video: Compiler Component in Action</div>
+
+                </p>
+                <p>
+                    <h4>Usage of the Compiler Output Component</h4>
+                </p>
+                <p>The compiler output component currently is presented as Facelets only component as follows</p>
+                <source>
+                    <![CDATA[<exs:compilerOutput errorsLabel="Errors:" warningsLabel="Warnings:" scriptingLanguage=""/>]]></source>
+
+                <p>Following attributes can be used</p>
+                <p>
+                    <table>
+                        <thead>
+                            <tr>
+                                <td>Attribute Name</td>
+                                <td>Possible Values</td>
+                                <td>Description</td>
+                            </tr>
+                        </thead>
+                        <tr>
+                            <td>errorsLabel</td>
+                            <td>All values are allowed</td>
+                            <td>A Label which is displayed in above all errors to notify the user that the error section
+                                starts here
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>WarningsLabel</td>
+                            <td>All values are allowed</td>
+                            <td>A Label which is displayed in above all errors to notify the user that the warning
+                                section
+                                starts here
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>scriptingLanguage</td>
+                            <td>Java, Groovy or an empty String</td>
+                            <td>Scripting language filter, here you can set which scripting engines
+                                compile errors should be displayed, currently Java or Groovy are supported as values
+                                if you leave the attribute empty or set nothing then everything is displayed
+                            </td>
+                        </tr>
+
+                    </table>
+                </p>
+
+                <img src="images/compiler_output.png" width="600px" height="270px" alt="Image Compiler Output"
+                     title="Image Compiler Output"/>
+                <div class="objectAnnotation">Image: Compiler Output Component</div>
+            </subsection>
+            <subsection name="The Change History Component">
+                <p>The second cornerstone of Ext-Scripting is change tracking and dependency detection.
+                    Now if you have changed a file, Ext-Scripting tracks the changes and also marks
+                    most classes which have a dependency to your class as changed.
+                </p>
+                <p>
+                    Again usually the output is pushed into the log as following:
+                </p>
+                <p>
+                    <source>
+                        <![CDATA[INFO: [EXT-SCRIPTING] Tainting: org/apache/myfaces/javaloader/componentTest/MyComponentTag.java]]></source>
+                </p>
+                <p>
+                    Again, to get a quick overview within your running page, or preferably an extra page, you can use
+                    a specialized component which gives you a quick overview over the change history of the system.
+                </p>
+                <p>
+                    Here our change history component comes into play. With it you can track a certain number of changes
+                    done over time including their marked dependencies.
+                </p>
+                <p>
+                    <center>
+                        <img src="images/change_history.jpg" width="550px" height="45px" alt="change history component"
+                                />
+                        <div class="objectAnnotation">Image: Change History Component in Action</div>
+                    </center>
+                </p>
+            </subsection>
+
+            <p>
+                <h4>Usage</h4>
+            </p>
+            <p>The change history component can be currently used in Facelets only as follows</p>
+            <source><![CDATA[<exs:taintHistory noEntries="5" />]]></source>
+
+
+            <p>Following attributes can be used</p>
+            <p>
+                <table>
+                    <thead>
+                        <tr>
+                            <td>Attribute Name</td>
+                            <td>Possible Values</td>
+                            <td>Description</td>
+                        </tr>
+                    </thead>
+                    <tr>
+                        <td>noEntries</td>
+                        <td>The &lt;Integer Value&gt; number of entries of the current history</td>
+                        <td>A positive Integer value which shows the last N entries of your history
+                            beginning with the latest change marker on top
+                        </td>
+                    </tr>
+
+                </table>
+            </p>
+
+        </section>
+
+        <section name="Debugging">
+            <p>Ext-Scripting automatically compiles with the debug flags on. Debugging against a running configuration
+                should be no problem. If the debugger can be pointed towards the sources, debugging should work without
+                any side effects.
+            </p>
+            <p>
+                Due to the fact that the debugger can pick up the debug info from the newly compiled class
+                files. (Note - the class files are not altered in any way so in any case you just deal with normal Java
+                classes)
+            </p>
+            TODO add video here
+        </section>
+
+        <section name="Page and Resource Reloading">
+            <subsection name="Introduction">
+                <p>One of the goals of Ext-Scripting is to prevent unnecessary restarts and redeploys during
+                    development. To
+                    enable this, it provides custom functionality outside of the scope of providing scripting
+                    capabilities.
+                    One of those features is the page and resource reloading from your source directories.
+                </p>
+            </subsection>
+            <subsection name="Basic Functionality">
+                <p>Pages and web-resources like CSS files or images are loaded from your resource directory without
+                    having to redeploy the web
+                    application,
+                    changes on them can be watched on the fly simple by a browser reload. There is no need to adjust
+                    your web application server or your IDE for auto deployment mechanisms. Unnecessary web application
+                    restarts for changed resources can be avoided that way.
+                    <b>Note while page reloading works on the fly for both JSF 1.2 and JSF 2.x+, resource reloading
+                    only works for JSF2.x+, if you need similar functionality for JSF 1.x  you can use
+                    a third party resource loading library like <a href="weblets.dev.java.net">Weblets</a>. </b>
+                </p>
+                <center>
+                    <img src="images/source-resource.jpg" width="557px" height="470px" alt="Page and Resource Reloading"
+                         title="Page and Resource Reloading"/>
+                </center>
+            </subsection>
+            <subsection name="Setup and Usage">
+                <p> The central point of setting up your resource reloading are two configuration parameters</p>
+                <ul>
+                    <li>org.apache.myfaces.extensions.scripting.resource.LOADER_PATHS</li>
+                    <li>facelets.RESOURCE_RESOLVER</li>
+                </ul>
+                <p>
+                The first parameter <b>org.apache.myfaces.extensions.scripting.resource.LOADER_PATHS</b> defines
+                the root path for your resources (aka everything web related, like xhtml facelet templates css files etc..).
+                Note, despite being called resource LOADER_PATH in most cases this path will just be pointed
+                to the your <b>source web application root directory</b>.
+                (ie: src/main/webapp in a standard Maven2 structure or &lt;project-root&gt;/webapp for a standard
+                    Eclipse project structure.
+                The name resource just refers to the fact that for Ext-Scripting every web related file is seen as resource
+                </p>
+                <p>
+                    The second parameter <b>facelets.RESOURCE_RESOLVER</b> is responsible for enabling the resouce loading
+                    of Facelet templates and pages, since Facelets does not have an auto plugging mechanism this has
+                    to be
+                    set to a standard value which is <b>org.apache.myfaces.extensions.scripting.jsf.facelet.MyFacesReroutingResourceResolver</b>
+                </p>
+                <p>
+                    For further reference please also visit out <a href="./configentries.html">Appendix: Configuration Entries Overview</a>
+                    page.
+                </p>
+            </subsection>
+
+
+        </section>
+
+
+
+        <section name="Advanced Dependency Detection">
+            <p>
+                Ext-Scripting tries to avoid as many server restarts as possible. To enable this it needs to unload
+                recompile and load artifacts and the those which reference our changed ones. To enable this,
+                Ext-Scripting
+                does dependency detection on bytecode level as well as on artifact level. This functionality is enabled
+                automatically you wont have anything further to do. You can see it working by watching the output log,
+                if
+                you change a class, you automatically will see that the system marks the classes which reference your
+                changed class as tainted as well.
+            </p>
+            <p>
+                You have to have in mind that data currently in ram cannot be recovered by the unloading and reloading
+                happening, so everything stored for instance in application or session scope is lost that way.
+            </p>
+            <p>
+                Following video shows the mechanism working:
+            </p>
+            <p />
+            <center>
+                <center>
+                    <iframe class="youtube-player" type="text/html" width="660" height="405"
+                                                    src="http://www.youtube.com/embed/YWlBGE3vyMw" frameborder="0">
+                    </iframe>
+                </center>
+            </center>
+            <p>
+                This dependency detection works over all dynamic classes, no matter being it classes, interfaces,
+                annotations, and it works over static and dynamic imports.
+            </p>
+            <p>
+                Javabean dependencies also are detected on artifact level so that if the JSF IOC mechanism is used those
+                bound over neutral Object classes also will reload the dependencies correctly.
+            </p>
+
+        </section>
+
+
+        <section name="Dynamic Annotations">
+
+            <p>One of the main features which Ext-Scripting provides over standard JSF is dynamic annotations.
+                Dynamic annotations basically introduces a mechanism so that your standard JSF annotations like
+                @ManagedBean or @FacesComponent or @ManagedProperty or even the scopes like @RequestScoped or
+                @SessionScoped
+                can be changed on the fly in a dynamic way.
+            </p>
+            <p>To enable this mechanism you don't have to do anything, it comes out of the box in a MyFaces 2.0
+                environment.
+                Following video demonstrates the mechanism
+            </p>
+
+            <center>
+                <center>
+                    <iframe class="youtube-player" type="text/html" width="640" height="505"
+                                                    src="http://www.youtube.com/embed/tikOR0XDnFw" frameborder="0">
+                    </iframe>
+                </center>
+            </center>
+        </section>
+
+        <section name="Supported Artifacts">
+            <subsection name="JSF 1.2">
+                <p>Ext-Scripting supports following JSF 1.2 artifact reloading:</p>
+                <ul>
+                    <li>ApplicationFactory reloading on method call level</li>
+                    <li>FacesContextFactory reloading on method call level</li>
+                    <li>LifecycleFactory reloading on method call level</li>
+                    <li>RenderkitFactory reloading on method call level</li>
+                    <li>ElResolver</li>
+                    <li>Converter (on JSF level alone)</li>
+                    <li>Validator (on JSF level alone)</li>
+                    <li>Component reloading on component tree creation level (on JSF level alone)</li>
+                    <li>ViewHandler</li>
+                    <li>Lifecycle</li>
+                    <li>Renderer</li>
+                    <li>PhaseListener</li>
+                    <li>ManagedBeans reloading for all managed beans even session and application scoped ones on request
+                        level
+                    </li>
+                    <li>Support for either JavaC or JSR 199 depending on your JDK Version</li>
+                    <li>Support for Groovy and Java</li>
+                </ul>
+            </subsection>
+            <subsection name="JSF 2.0">
+                <p>Ext-Scripting supports following JSF 2.0 artifact reloading: Additionally to what is present for JSF
+                    1.2
+                </p>
+                <ul>
+                    <li>Component limitations have been lifted for Facelets as rendering language</li>
+                    <li>All major JSF 2 annotations can be used in a dynamic way, annotations can be moved removed or
+                        added on the fly
+                    </li>
+                    <li>Support for Reloading on ComponentTagHandler, ConverterTagHandler, BehaviorTagHandler,
+                        ValidatorTagHandler
+                    </li>
+                    <li>ResourceHandler</li>
+                    <li>Behavior</li>
+                    <li>BehaviorRenderer</li>
+                    <li>ComponentSystemEvent Support via dynamic Annotations</li>
+                    <li>Application System Event Support</li>
+                </ul>
+            </subsection>
+
+
+            <subsection name="Visual Overview">
+                <img src="images/ext-scripting-structure-fine.jpg"/>
+            </subsection>
+        </section>
+
+        <section name="Extension Frameworks">
+
+            <subsection name="EXT-SCRIPTING and EXT-VAL">
+                <p>While the target of supporting extension frameworks will be post 1.0 Ext-Scripting already
+                    supports dynamic bean validation and Ext-Val
+                </p>
+
+                <p>To setup Ext-Val simply add the needed dependencies and you can start to use it instantly</p>
+                <p>The MyFaces 2.0 demo has a simple example ported over from the Ext-Val distribution which
+                    shows the dynamic aspects of using Ext-Val and Ext-Scripting combined
+                </p>
+
+                <p>The same what applies to Ext-Val also applies to straight bean validation.</p>
+
+                <p>Note at the time of release, the current stable version of Ext-Val has a bug
+                which enforces one manual configuration entry!</p>
+
+                <source><![CDATA[
+                <application>
+                    <!-- disable an Ext-Val warning which is triggered falsely by the latest version -->
+                    <system-event-listener>
+                        <system-event-listener-class>org.apache.myfaces.extensions.scripting.startup.SuppressExtValWarningStartupListener</system-event-listener-class>
+                        <system-event-class>javax.faces.event.PostConstructApplicationEvent</system-event-class>
+                    </system-event-listener>
+                </application>
+                ]]></source>
+
+                Note the class already is provided by Ext-Scripting, all which has done is
+                to add this entry to bypass the error.
+                This class probably will be obsolete with Ext-Val versions higher than
+                2.0.3 (which was the latest stable at time of writing)
+
+            </subsection>
+
+            <subsection name="EXT-SCRIPTING and Spring">
+                <p>Currently there is no direct Spring support for Ext-Scripting, it however is in the works
+                    and will be delivered in a release post 1.0
+                </p>
+            </subsection>
+
+            <subsection name="EXT-SCRIPTING and CDI">
+                <p>Currently there is no direct CDI support for Ext-Scripting, it however the
+                    work on it will be started post 1.0
+                </p>
+            </subsection>
+        </section>
+
+        
+
+        <section name="Build Process and Multiuser Environments">
+            <p>While Ext-Scripting itself is only used for rapid prototyping following two szenarii will probably occur in a typical
+            user development environment</p>
+            <subsection name="Compiling the Groovy classes for the final build">
+                <p>while it makes sense to have the Groovy sources for editing, for the final deployment, it makes sense
+                to just deliver the classes instead of the source files.
+                While doing that for your ide is out of scope of this documentation (currently). The documentation can provide you the information on how
+                to do it in Apache Maven:</p>
+                <p> The trick is to combine two things. Apache Maven 2 profiles and the Apache Maven2 groovy plugin</p>
+                <p> For a short explanation on Apache Maven 2 profiles please follow this link: <a href="http://maven.apache.org/guides/introduction/introduction-to-profiles.html">Apache Maven 2 Profiles</a> </p>
+                <p> The idea is, to define a deployment profile which triggers the Maven 2 groovy plugin which then will compile your classes, here is an example
+                configuration of such a profile, which can be copy pasted into your build file</p>
+            
+                  <source><![CDATA[
+                     <profiles>
+                         <profile>
+                             <id>deployment</id>
+                             <plugins>
+                                 <plugin>
+                                    <groupId>org.codehaus.gmaven</groupId>
+                                    <artifactId>gmaven-plugin</artifactId>
+                                    <version>1.2</version>
+                                    <configuration>
+                                        <providerSelection>1.7</providerSelection>
+                                    </configuration>
+                                    <executions>
+                                        <execution>
+                                            <goals>
+                                                <goal>generateStubs</goal>
+                                                <goal>compile</goal>
+                                                <goal>generateTestStubs</goal>
+                                                <goal>testCompile</goal>
+                                            </goals>
+                                        </execution>
+                                    </executions>
+                                    <dependencies>
+                                        <dependency>
+                                            <groupId>org.codehaus.groovy</groupId>
+                                            <artifactId>groovy-all</artifactId>
+                                            <version>1.7.1</version>
+                                        </dependency>
+                                    </dependencies>
+                                </plugin>
+                            </profile>
+                        </plugins>
+                    </profiles>
+                ]]></source>
+                
+                <p>The standard settings of the groovy maven plugin is that it will use your src/main/groovy directory as the path to pickup the sources.
+                You either can use that one and adjust the corresponding org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS setting for editing.
+                Or you can readjust the corresponding plugin settings of the Groovy Maven plugin. Follow this <a href="http://groovy.codehaus.org/GMaven">link</a> for further information.
+                </p>
+                <p> A call to maven clean install -P deployment now triggers the groovy compile task. You also can use the extended features
+                of the maven profiles to automate the switch if you use maven also for deployment of your project.</p>
+
+
+
+
+            </subsection>
+            <subsection name="Multi Developer Scenario's">
+                <p>One problem you might have noticed is, that if you do not work with the default configuration on your sources
+                (aka. WEB-INF/&lt;scripting-language&gt;, you have to rely on the corresponding configuration entries, which in itself take absolute paths.
+                One user of the system came up with the question, on how to deal with multiple developers. The answer is plain and simple, unfortunately the
+                    support of such a use case could be better for 1.0, all you can do is either to rely on the default paths, or use your build system to handle
+                    the configuration parts per user, or standardize on the same file structure for every user.
+                    Additional support for this scenario will be added post 1.0 to ease this usecase but for now it is a known but not entirely solved problem.
+                </p>
+            </subsection>
+        </section>
+
+        <section name="Navigation Bottom">
+            <a href="./using_general.html">&lt;&lt;Back to the General Users Guide</a>
+            or
+
+            <a href="./using_eclipse_.html">On to the Eclipse Users Guide&gt;&gt;</a>
+        </section>
+
+
+    </body>
+</document>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/using_eclipse_.xml b/extscript-root-1.0.4/src/site/xdoc/using_eclipse_.xml
new file mode 100644
index 0000000..60e7aad
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/using_eclipse_.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+-->
+<document>
+    <properties>
+        <title>Using Ext-Scripting in Eclipse</title>
+    </properties>
+
+    <body>
+        <section name="Navigation Top">
+               <a href="./using_advanced.html">&lt;&lt;Back to the Advanced Users Guide</a>
+               or
+
+               <a href="./using_intellij.html">On to the Intellij Users Guide&gt;&gt;</a>
+           </section>
+
+
+        <section name="Introduction">
+            <p>
+                Eclipse is somewhat different to the rest of the IDEs because it allows to compile classes on the fly.
+                But yet still Ext-Scripting and Eclipse are a good combination, but several things have to be taken into
+                consideration.
+            </p>
+            <ul>
+                <li>Ext-Scripting does its own incremental compile cycle depending on the sources changed</li>
+                <li>Deployment and Redeployment is not needed as long as Ext-Scripting itself can pick up the changes
+                </li>
+            </ul>
+        </section>
+        <section name="Setting up Eclipse">
+            <subsection name="Prerequirements">
+
+                <p>Secondly make sure that your project compiles properly
+                    and can be properly deployed from eclipse. Turn off any auto deployment mechanisms
+                    which might trigger unnecessary restarts.
+                </p>
+
+                <p>If you use scripting languages make sure to have the proper
+                    plugin installed for the scripting language of your choice
+                </p>
+            </subsection>
+        </section>
+        <section name="Setting up Ext-Scripting specifics">
+            <p>
+                If you only have one sourcepath you might have a look at the package whitelisting
+                to mark only the packages you actively want to edit for this deployment cycle.
+                This speeds up startup time and helps generally to avoid restarts.
+            </p>
+            <p>
+                If you use different paths then you can work by including the added source paths as sources
+                like WEB-INF/java or WEB-INF/groovy (not classes compiled via Ext-Scripting always have higher loading
+                priority than what can be found in WEB-INF/classes), so there is no need to change any target directories
+                source directories always are enough.
+            </p>
+            <p>
+                You can leave your compile target directory unchanged
+            </p>
+            <p>
+                If you prefer your own source paths to be the sources of everything set the
+                <b>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</b>
+                or
+                <b>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</b>
+                accordingly in your web.xml the same goes for the resource roots.
+            </p>
+
+        </section>
+
+        TODO add images here
+
+    </body>
+</document>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/using_general.xml b/extscript-root-1.0.4/src/site/xdoc/using_general.xml
new file mode 100644
index 0000000..1c6a659
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/using_general.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+
+-->
+<document>
+    <properties>
+        <title>General Users Guide</title>
+    </properties>
+
+    <body>
+        <section name="Navigation Top">
+            <a href="./usersguide.html">&lt;&lt;Back to the Users Guide Start</a>
+            or
+            <a href="./using_advanced.html">On to the Advanced Users Guide&gt;&gt;</a>
+        </section>
+
+
+        <section name="General Users Guide">
+            <p>
+                Using Ext-Scripting once properly setup is straight forward. Usually it comes down to editing, reloading
+                on
+                the browser editing, reloading the page, .... However if you edit within a running configurations keep
+                an
+                eye on the console/log output. All compile errors and messages go automatically into the log.
+            </p>
+            <center>
+                <img src="images/development-states.jpg" width="386px" height="337px"/>
+            </center>
+            <div class="objectAnnotation">Image: Development Lifecycle</div>
+
+            <p>
+                The development cycle also can seen in the following video 
+                and in the following videos in the Users Guide.
+            </p>
+            <center>
+                <iframe class="youtube-player" type="text/html" width="640" height="480"
+                                                                    src="http://www.youtube.com/embed/vUCCTCMjTPE" frameborder="0">
+                                    </iframe>
+
+            </center>
+            <div class="objectAnnotation">Video: Development Lifecycle in Action</div>
+
+            <p>
+                As you can see, there is no need for any recompile anymore, no server restart
+                everything is done dynamically, and you get instant results.
+            </p>
+        </section>
+
+        <section name="Navigation Bottom">
+            <a href="./usersguide.html">&lt;&lt;Back to the Users Guide Start</a>
+            or
+            <a href="./using_advanced.html">On to the Advanced Users Guide&gt;&gt;</a>
+        </section>
+
+    </body>
+</document>    
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/using_intellij.xml b/extscript-root-1.0.4/src/site/xdoc/using_intellij.xml
new file mode 100644
index 0000000..1b57cd6
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/using_intellij.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+-->
+<document>
+    <properties>
+        <title>Using Ext-Scripting in Eclipse</title>
+    </properties>
+
+    <body>
+
+        <section name="Navigation Top">
+            <a href="./using_eclipse_.html">&lt;&lt;Back to the Eclipse Users Guide</a>
+            or
+
+            <a href="./using_netbeans.html">On to the NetBeans Users Guide&gt;&gt;</a>
+        </section>
+
+
+        <section name="Introduction">
+            <p>
+                Intellij is very specific because it allows mixed programming out of the box, hence it is the ideal
+                partner for mixing it with Ext-Scripting. However while setting everything up you have to be aware
+                of several specifics.
+            </p>
+            <ul>
+                <li>Ext-Scripting does its own incremental compile cycle depending on the sources changed</li>
+                <li>Deployment and Redeployment is not needed as long as Ext-Scripting itself can pick up the changes
+                </li>
+            </ul>
+        </section>
+        <section name="Setting up Eclipse">
+            <subsection name="Prerequirements">
+
+                <p>Secondly make sure that your project compiles properly
+                    and can be properly deployed from Idea. Turn off any auto deployment mechanisms
+                    which might trigger unnecessary restarts.
+                </p>
+
+                <p>If you use scripting languages make sure to have the proper
+                    plugin installed for the scripting language of your choice
+                </p>
+            </subsection>
+        </section>
+        <section name="Setting up Ext-Scripting specifics">
+            <p>
+                If you only have one sourcepath you might have a look at the package whitelisting
+                to mark only the packages you actively want to edit for this deployment cycle.
+                This speeds up startup time and helps generally to avoid restarts.
+            </p>
+            <p>
+                If you use different paths then you can work by including the added source paths as sources
+                like WEB-INF/java or WEB-INF/groovy (not classes compiled via Ext-Scripting always have higher loading
+                priority than what can be found in WEB-INF/classes), so there is no need to change any target
+                directories
+                source directories always are enough.
+
+                To change your source directories open
+                <b>File->Project Structure ->Modules->&lt;Your Web Module&gt;</b>
+                and mark your script directories as source paths:
+
+                <img src="images/intellij_source.jpg" alt="setting the sourcepath from Intellij"/>
+            </p>
+            <p>
+                You can leave your compile target directory unchanged
+            </p>
+            <p>
+                If you prefer your own source paths to be the sources of everything set the
+                <b>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</b>
+                or
+                <b>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</b>
+                accordingly in your web.xml the same goes for the resource roots.
+            </p>
+
+        </section>
+
+
+        <section name="Navigation Bottom">
+            <a href="./using_eclipse_.html">&lt;&lt;Back to the Eclipse Users Guide</a>
+            or
+            <a href="./using_netbeans.html">On to the NetBeans Users Guide&gt;&gt;</a>
+        </section>
+
+    </body>
+</document>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/src/site/xdoc/using_netbeans.xml b/extscript-root-1.0.4/src/site/xdoc/using_netbeans.xml
new file mode 100644
index 0000000..4ed1fae
--- /dev/null
+++ b/extscript-root-1.0.4/src/site/xdoc/using_netbeans.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+    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.
+-->
+<document>
+    <properties>
+        <title>Using Ext-Scripting in Eclipse</title>
+    </properties>
+
+    <body>
+
+        <section name="Navigation Top">
+            <a href="./using_intellij.html">&lt;&lt;Back to the Intellij Users Guide</a>
+            or
+            <a href="./setup_steps.html">On to the appendix: Setup Steps&gt;&gt;</a>
+        </section>
+
+
+        <section name="Introduction">
+            <p>
+                Netbeans also works perfectly in conjunction with Ext-Scripting
+                pretty much everything said for Eclipse and Intellij also applies to NetBeans.
+                The biggest restriction is if you want to use Netbeans in conjunction with maven
+                only one source folder is picked up and you cannot use additional source folders
+                like for instance Intellij or Eclipse allow. So either dont use maven or
+                use package whitelisting as workaround if you want to use Netbeans.
+
+            </p>
+            <ul>
+                <li>Ext-Scripting does its own incremental compile cycle depending on the sources changed</li>
+                <li>Deployment and Redeployment is not needed as long as Ext-Scripting itself can pick up the changes
+                </li>
+            </ul>
+        </section>
+        <section name="Setting up Eclipse">
+            <subsection name="Prerequirements">
+
+                <p>Secondly make sure that your project compiles properly
+                    and can be properly deployed from Netbeans. Turn off any auto deployment mechanisms
+                    which might trigger unnecessary restarts.
+                </p>
+
+                <p>If you use scripting languages make sure to have the proper
+                    plugin installed for the scripting language of your choice
+                </p>
+            </subsection>
+        </section>
+        <section name="Setting up Ext-Scripting specifics">
+            <p>
+                If you only have one source path you might have a look at the package whitelisting
+                to mark only the packages you actively want to edit for this deployment cycle.
+                This speeds up startup time and helps generally to avoid restarts.
+            </p>
+            <p>
+                If you use different paths then you can work by including the added source paths as sources
+                like WEB-INF/java or WEB-INF/groovy (not classes compiled via Ext-Scripting always have higher loading
+                priority than what can be found in WEB-INF/classes), so there is no need to change any target
+                directories
+                source directories always are enough.
+
+                To change your source directories open
+                <b>File->Project Properties -> Sources - > Source Package Folders</b>
+                and press the Add Folder button
+            </p>
+            <img src="images/netbeans_source1.jpg" alt="setting the sourcepath from Intellij"/>
+            <p>
+                After that you get a file dialog where you can choose your source directory.
+            </p>
+            <img src="images/netbeans_source2.jpg" alt="setting the sourcepath from Intellij"/>
+            <p>
+                You can leave your compile target directory unchanged
+            </p>
+            <p>
+                If you prefer your own source paths to be the sources of everything set the
+                <b>org.apache.myfaces.extensions.scripting.java.LOADER_PATHS</b>
+                or
+                <b>org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS</b>
+                accordingly in your web.xml the same goes for the resource roots.
+            </p>
+
+        </section>
+
+        <section name="Navigation Bottom">
+            <a href="./using_intellij.html">&lt;&lt;Back to the Intellij Users Guide</a>
+            or
+            <a href="./setup_steps.html">On to the appendix: Setup Steps&gt;&gt;</a>
+        </section>
+
+    </body>
+</document>
\ No newline at end of file
diff --git a/extscript-root-1.0.4/testassembly.sh b/extscript-root-1.0.4/testassembly.sh
new file mode 100755
index 0000000..1505475
--- /dev/null
+++ b/extscript-root-1.0.4/testassembly.sh
@@ -0,0 +1,24 @@
+#
+#   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.
+#
+
+#!/bin/sh
+mvn javadoc:jar install
+mvn -Pgenerate-assembly -f ./extscript-bundles/pom.xml
+mvn package
+ 
\ No newline at end of file