You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2016/03/19 12:53:28 UTC

[1/3] git commit: [flex-falcon] [refs/heads/feature/maven-migration] - - Updated the migration script - Updated the closure compiler version to v20151015 - Updated guava version to 18.0 - Added some more build-tool goals needed to patch, copy, cut and ot

Repository: flex-falcon
Updated Branches:
  refs/heads/feature/maven-migration 508897783 -> dec07727a


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileMojo.java
----------------------------------------------------------------------
diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileMojo.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileMojo.java
new file mode 100644
index 0000000..0846ecd
--- /dev/null
+++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileMojo.java
@@ -0,0 +1,59 @@
+package org.apache.flex.maven.flexjs;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 org.apache.flex.tools.FlexTool;
+import org.apache.flex.tools.FlexToolGroup;
+import org.apache.flex.tools.FlexToolRegistry;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import java.io.File;
+
+/**
+ * goal which compiles a project into a flexjs swc library.
+ */
+@Mojo(name="compile",defaultPhase = LifecyclePhase.PROCESS_SOURCES)
+public class CompileMojo
+    extends AbstractMojo
+{
+
+    @Parameter(defaultValue="${basedir}/src/main/config/compile-config.xml")
+    private File configFile;
+
+    @Parameter(defaultValue="${project.build.directory}")
+    private File outputDirectory;
+
+    @Parameter(defaultValue = "${project.artifactId}-${project.version}.swc")
+    private String outputFileName;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        FlexToolRegistry toolRegistry = new FlexToolRegistry();
+        FlexToolGroup toolGroup = toolRegistry.getToolGroup("Falcon");
+        FlexTool compc = toolGroup.getFlexTool(FlexTool.FLEX_TOOL_COMPC);
+        File outputFile = new File(outputDirectory, outputFileName);
+        String[] args = {"+flexlib=externs", "-debug", "-load-config=" + configFile.getPath(),
+                "-output=" + outputFile.getPath()};
+        compc.execute(args);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/ExterncMojo.java
----------------------------------------------------------------------
diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/ExterncMojo.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/ExterncMojo.java
new file mode 100644
index 0000000..555fde6
--- /dev/null
+++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/ExterncMojo.java
@@ -0,0 +1,52 @@
+package org.apache.flex.maven.flexjs;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 org.apache.flex.tools.FlexTool;
+import org.apache.flex.tools.FlexToolGroup;
+import org.apache.flex.tools.FlexToolRegistry;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import java.io.File;
+
+/**
+ * goal which generates actionscript code from javascript.
+ */
+@Mojo(name="generate",defaultPhase = LifecyclePhase.PROCESS_SOURCES)
+public class ExterncMojo
+    extends AbstractMojo
+{
+
+    @Parameter(defaultValue="${basedir}/src/main/config/generate-config.xml")
+    private File configFile;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        FlexToolRegistry toolRegistry = new FlexToolRegistry();
+        FlexToolGroup toolGroup = toolRegistry.getToolGroup("FlexJS");
+        // TODO: Change this to a flex-tool-api constant ...
+        FlexTool compc = toolGroup.getFlexTool("EXTERNC");
+        String[] args = {"+flexlib=externs", "-debug", "-load-config=" + configFile.getPath()};
+        compc.execute(args);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/maven/falcon-jx-compiler.pom
----------------------------------------------------------------------
diff --git a/maven/falcon-jx-compiler.pom b/maven/falcon-jx-compiler.pom
index 752dbd9..2703356 100644
--- a/maven/falcon-jx-compiler.pom
+++ b/maven/falcon-jx-compiler.pom
@@ -52,7 +52,7 @@
         <dependency>
             <groupId>com.google.javascript</groupId>
             <artifactId>closure-compiler</artifactId>
-            <version>v20150609</version>
+            <version>v20151015</version>
         </dependency>
         <dependency>
             <groupId>org.clojure</groupId>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/migrate-to-maven.sh
----------------------------------------------------------------------
diff --git a/migrate-to-maven.sh b/migrate-to-maven.sh
index ebe4fad..3eb42e3 100755
--- a/migrate-to-maven.sh
+++ b/migrate-to-maven.sh
@@ -98,3 +98,43 @@ git rm -r compiler.jx.tests/src/org compiler.jx/src/test/java/org/apache/flex/ut
 mkdir -p compiler.jx/src/test/resources
 git mv compiler.jx.tests/test-files/* compiler.jx/src/test/resources
 
+#############################################
+## Convert the externs
+#############################################
+
+# asdocs
+
+# cordova
+mkdir -p externs/cordova/src/main/javascript
+git mv externs/cordova/externs/* externs/cordova/src/main/javascript
+rm -r externs/cordova/externs
+
+#createjs
+mkdir -p externs/createjs/src/main/javascript
+git mv externs/createjs/missing.js externs/createjs/src/main/javascript
+
+# GCL
+mkdir -p externs/GCL/src/main/flex
+git mv externs/GCL/src/goog externs/GCL/src/main/flex/goog
+git rm -r externs/GCL/externs
+rm -r externs/GCL/out
+
+# google_maps
+
+# jasmine
+
+# jquery
+
+# js
+mkdir -p externs/js/src/main/flex/__AS3__/vec
+git mv externs/js/src/AS3.as externs/js/src/main/flex/AS3.as
+git mv externs/js/src/Vector.as externs/js/src/main/flex/__AS3__/vec/Vector.as
+git rm externs/js/src/Vector-template.as
+mkdir -p externs/js/src/main/javascript
+git mv externs/js/missing.js externs/js/src/main/javascript
+
+# node
+mkdir -p externs/node/src/main/javascript
+git mv externs/node/externs/* externs/node/src/main/javascript
+rm -r externs/node/externs
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 3c0df3b..2c4d4e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,6 +58,7 @@
                 <module>compiler</module>
                 <module>compiler.jx</module>
                 <module>flex-compiler-oem</module>
+                <module>externs</module>
             </modules>
         </profile>
 
@@ -66,6 +67,7 @@
             <modules>
                 <module>compiler-build-tools</module>
                 <module>compiler-jburg-types</module>
+                <module>flexjs-maven-plugin</module>
             </modules>
         </profile>
     </profiles>


[2/3] git commit: [flex-falcon] [refs/heads/feature/maven-migration] - - Updated the migration script - Updated the closure compiler version to v20151015 - Updated guava version to 18.0 - Added some more build-tool goals needed to patch, copy, cut and ot

Posted by cd...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/createjs/pom.xml
----------------------------------------------------------------------
diff --git a/externs/createjs/pom.xml b/externs/createjs/pom.xml
new file mode 100644
index 0000000..c9cc721
--- /dev/null
+++ b/externs/createjs/pom.xml
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>flex-compiler-externs</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-externs-createjs</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Externs: CreateJS</name>
+
+    <properties>
+        <createjs.version>0.8.0</createjs.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <!-- Download easejs/createjs form GitHub and unpack it into the target directory -->
+            <plugin>
+                <groupId>com.googlecode.maven-download-plugin</groupId>
+                <artifactId>download-maven-plugin</artifactId>
+                <version>1.2.1</version>
+                <executions>
+                    <execution>
+                        <id>get-createjs</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            <url>https://github.com/CreateJS/EaselJS/archive/${createjs.version}.zip</url>
+                            <unpack>true</unpack>
+                            <outputFileName>createjs-${createjs.version}.zip</outputFileName>
+                            <outputDirectory>${project.build.directory}</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.flex.flexjs.compiler</groupId>
+                <artifactId>compiler-build-tools</artifactId>
+                <version>0.6.0-SNAPSHOT</version>
+                <executions>
+                    <execution>
+                        <id>pre-process-sources</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>pre-process-sources</goal>
+                        </goals>
+                        <configuration>
+                            <operations>
+                                <replace-regexp-operation><match>this\.createjs = this\.createjs(\s)*\|\|(\s)*\{\};</match><replace/></replace-regexp-operation>
+                                <!-- Remove the opening brackets at the beginning -->
+                                <replace-regexp-operation><match>(\n|\r){1,2}\(function(\s)*\(\)(\s)*\{(\s)*(\n|\r)*</match><replace/></replace-regexp-operation>
+                                <!-- Remove the "use strict" output -->
+                                <replace-regexp-operation><match>\s*"use strict";(\n\r)*</match><replace/></replace-regexp-operation>
+                                <!-- Rewrite the way the functions are declared -->
+                                <replace-regexp-operation><match>function §{file.base}\(</match><replace>createjs.§{file.base} = function(</replace></replace-regexp-operation>
+                                <!-- Replace the way the type is referenced -->
+                                <replace-regexp-operation><match>var p = §{file.base}\.prototype;</match><replace/></replace-regexp-operation>
+                                <replace-regexp-operation><match>\sp\.</match><replace>_createjs.§{file.base}.prototype.</replace></replace-regexp-operation>
+                                <replace-regexp-operation><match>(?&lt;!createjs\.)§{file.base}\.</match><replace>createjs.§{file.base}.</replace></replace-regexp-operation>
+                                <replace-regexp-operation><match>var p = createjs\.extend\(§{file.base}, createjs\..*\);</match><replace/></replace-regexp-operation>
+                                <replace-regexp-operation><match>createjs\.§{file.base} = createjs\.promote\(§{file.base}, ".*"\);</match><replace/></replace-regexp-operation>
+                                <replace-regexp-operation><match>createjs\.§{file.base} = §{file.base};</match><replace/></replace-regexp-operation>
+                                <replace-regexp-operation><match>\s@extends\s(.*)</match><replace>_@extends createjs.$1</replace></replace-regexp-operation>
+                                <!-- Add the package to the JavaScript Doc types that are not naive JavaScript -->
+                                <replace-regexp-operation><match>\s@(param|type|return)\s\{(Sprite|SpriteSheet|DisplayObject|Container|Shadow|Rectangle|Matrix2D|Stage|Point|DisplayProps|Graphics|MovieClip|ColorMatrix|Filter)(\}|\s)</match><replace>_@$1 {createjs.$2$3</replace></replace-regexp-operation>
+                                <!-- Remove the "[time]" that sometimes accompanies Number parameters and place it after the type -->
+                                <replace-regexp-operation><match>@param \[time\] \{Number\}</match><replace>@param {Number} time</replace></replace-regexp-operation>
+                                <!--
+                                    Replace the try-catch
+                                    (Had to limit the number of chars as other wise I get Stack Overflows)
+                                -->
+                                <replace-regexp-operation><match>\stry \{\s*Object\.defineProperties\(p, \{\s*(.*): \{\s(.|\n|\r){0,200} *\} catch \(e\) \{\}</match><replace>createjs.§{file.base}.prototype.$1;</replace></replace-regexp-operation>
+                                <!-- In MouseEvent and MovieClip the try-cach was completely removed -->
+                                <replace-regexp-operation><match>createjs.MouseEvent.prototype.localX; // TODO: use Log</match><replace/></replace-regexp-operation>
+                                <replace-regexp-operation><match>createjs.MovieClip.prototype.labels;</match><replace/></replace-regexp-operation>
+                                <!-- Remove the closing brackets at the end -->
+                                <replace-regexp-operation><match>\}(\)\(|\(\))\);</match><replace/></replace-regexp-operation>
+                            </operations>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>pre-process-sources-ticker</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>pre-process-sources</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                <include>createjs/utils/Ticker.js</include>
+                            </includes>
+                            <operations>
+                                <cut-operation>
+                                    <start-cutting-line>355</start-cutting-line>
+                                    <stop-cutting-line>378</stop-cutting-line>
+                                </cut-operation>
+                            </operations>
+                        </configuration>
+                    </execution>
+                    <!-- Cut off the end of Graphics.js -->
+                    <execution>
+                        <id>pre-process-sources-graphics</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>pre-process-sources</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                <include>easeljs/display/Graphics.js</include>
+                            </includes>
+                            <operations>
+                                <cut-operation>
+                                    <start-cutting-line>1560</start-cutting-line>
+                                    <stop-cutting-line>2163</stop-cutting-line>
+                                </cut-operation>
+                            </operations>
+                        </configuration>
+                    </execution>
+                    <!-- It seems that excluding the files doesn't work, so we have to delete them -->
+                    <execution>
+                        <id>pre-process-delete-unused</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>pre-process-sources</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                <include>easeljs/version.js</include>
+                                <include>easeljs/version_movieclip.js</include>
+                            </includes>
+                            <operations>
+                                <delete-file-operation/>
+                            </operations>
+                        </configuration>
+                    </execution>
+                    <!-- Generate the ActionScript interface -->
+                    <execution>
+                        <id>generate</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <!-- Take the JavaScript from the previously downloaded and unpacked distribution -->
+                    <downloadesSourceDirectory>${project.build.directory}/EaselJS-${createjs.version}/src</downloadesSourceDirectory>
+                    <includes>
+                        <include>**/*.js</include>
+                    </includes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/createjs/src/main/config/compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/createjs/src/main/config/compile-config.xml b/externs/createjs/src/main/config/compile-config.xml
new file mode 100644
index 0000000..ffcf29b
--- /dev/null
+++ b/externs/createjs/src/main/config/compile-config.xml
@@ -0,0 +1,102 @@
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <!--
+        <external-library-path>
+            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
+            <path-element>../../libs/framework.swc</path-element>
+            <path-element>../../libs/mx/mx.swc</path-element>
+            <path-element>../../libs/osmf.swc</path-element>
+            <path-element>../../libs/textLayout.swc</path-element>
+        </external-library-path>
+        
+        <keep-as3-metadata>
+            <name>SkinPart</name>
+        </keep-as3-metadata>
+        
+        <mxml>
+            <minimum-supported-version>4.0.0</minimum-supported-version>
+        </mxml>
+        
+        <locale/>
+        
+        <library-path/>
+        
+        <namespaces>
+            <namespace>
+                <uri>library://ns.adobe.com/flex/spark</uri>
+                <manifest>manifest.xml</manifest>
+            </namespace>
+        </namespaces>
+        -->
+        
+        <external-library-path>
+            <path-element>../js/out/bin/js.swc</path-element>
+        </external-library-path>
+
+        <source-path>
+            <path-element>out/as/classes</path-element>
+            <!--
+            <path-element>out/as/constants</path-element>
+            <path-element>out/as/functions</path-element>
+            <path-element>out/as/interfaces</path-element>
+            <path-element>out/as/typedefs</path-element>
+             -->
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <include-sources>
+        <path-element>out/as/classes</path-element>
+        <!--
+        <path-element>out/as/constants</path-element>
+        <path-element>out/as/functions</path-element>
+        <path-element>out/as/interfaces</path-element>
+        <path-element>out/as/typedefs</path-element>
+         -->
+    </include-sources>
+
+    <include-file>
+        <name>externs/*</name>
+        <path>out/externs/*</path>
+    </include-file>
+    <!--
+    <include-file>
+        <name>assets/ErrorIndicator.png</name>
+        <path>assets/ErrorIndicator.png</path>
+    </include-file>
+    <include-file>
+        <name>assets/RequiredIndicator.png</name>
+        <path>assets/RequiredIndicator.png</path>
+    </include-file>
+    
+    <include-namespaces>
+        <uri>library://ns.adobe.com/flex/spark</uri>
+    </include-namespaces>  
+    
+    <resource-bundle-list>bundles.properties</resource-bundle-list>
+    
+    <target-player>${playerglobal.version}</target-player>
+     -->
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/createjs/src/main/config/generate-config.xml
----------------------------------------------------------------------
diff --git a/externs/createjs/src/main/config/generate-config.xml b/externs/createjs/src/main/config/generate-config.xml
new file mode 100644
index 0000000..199ee96
--- /dev/null
+++ b/externs/createjs/src/main/config/generate-config.xml
@@ -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</name></exclude> you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <!--
+        <external-library-path>
+            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
+            <path-element>../../libs/framework.swc</path-element>
+            <path-element>../../libs/mx/mx.swc</path-element>
+            <path-element>../../libs/osmf.swc</path-element>
+            <path-element>../../libs/textLayout.swc</path-element>
+        </external-library-path>
+        
+        <keep-as3-metadata>
+            <name>SkinPart</name>
+        </keep-as3-metadata>
+        
+        <mxml>
+            <minimum-supported-version>4.0.0</minimum-supported-version>
+        </mxml>
+        -->
+        
+        <locale/>
+        
+        <library-path/>
+        
+        <!--
+        <namespaces>
+            <namespace>
+                <uri>library://ns.adobe.com/flex/spark</uri>
+                <manifest>manifest.xml</manifest>
+            </namespace>
+        </namespaces>
+        -->
+        
+        <source-path>
+            <path-element>../javascript</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <external>
+        <path-element>../../../target/EaselJS-0.8.0/src/createjs/events/Event.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/createjs/utils/extend.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/createjs/utils/indexof.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/createjs/utils/promote.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/createjs/utils/Ticker.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Bitmap.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/BitmapText.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Container.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/DOMElement.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Graphics.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/MovieClip.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Shadow.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Shape.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Sprite.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/SpriteContainer.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/SpriteSheet.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/SpriteStage.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Stage.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Text.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/events/MouseEvent.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/AlphaMapFilter.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/AlphaMaskFilter.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/BlurFilter.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/ColorFilter.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/ColorMatrix.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/ColorMatrixFilter.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/Filter.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/geom/DisplayProps.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/geom/Matrix2D.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/geom/Point.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/geom/Rectangle.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/ui/ButtonHelper.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/ui/Touch.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetBuilder.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetUtils.js</path-element>
+        <path-element>../../../target/EaselJS-0.8.0/src/easeljs/utils/UID.js</path-element>
+    </external>
+
+    <as-root>../../../target/generated-sources/externc</as-root>
+    
+    <class-exclude>
+        <class>MovieClipPlugin</class>
+    </class-exclude>
+    <class-exclude>
+        <class>createjs.Text.V_OFFSETS</class>
+    </class-exclude>
+    <class-exclude>
+        <class>createjs.Text.H_OFFSETS</class>
+    </class-exclude>
+    <class-exclude>
+        <class>createjs.Graphics.BASE_64</class>
+    </class-exclude>
+    
+    <!--
+    <field-exclude>
+        <class>Window</class>
+        <field>focus</field>
+    </field-exclude>
+
+    <exclude>
+        <class>Array</class>
+        <name>toSource</name>
+    </exclude>
+    -->
+
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/google_maps/pom.xml
----------------------------------------------------------------------
diff --git a/externs/google_maps/pom.xml b/externs/google_maps/pom.xml
new file mode 100644
index 0000000..fe23c37
--- /dev/null
+++ b/externs/google_maps/pom.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>flex-compiler-externs</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-externs-goolemaps</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Externs: GoogleMaps</name>
+
+    <properties>
+        <googlemaps.version>v3_11</googlemaps.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <!-- Download JavaScript form GitHub -->
+            <plugin>
+                <groupId>com.googlecode.maven-download-plugin</groupId>
+                <artifactId>download-maven-plugin</artifactId>
+                <version>1.2.1</version>
+                <executions>
+                    <execution>
+                        <id>get-createjs</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            <url>https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/maps/google_maps_api_${googlemaps.version}.js</url>
+                            <outputFileName>google_maps_api_${googlemaps.version}.js</outputFileName>
+                            <outputDirectory>${project.build.directory}/downloads</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.flex.flexjs.compiler</groupId>
+                <artifactId>compiler-build-tools</artifactId>
+                <version>0.6.0-SNAPSHOT</version>
+                <executions>
+                    <execution>
+                        <id>pre-process-sources</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>pre-process-sources</goal>
+                        </goals>
+                        <configuration>
+                            <operations>
+                                <replace-regexp-operation><match>\/\/ Namespace</match><replace>/** @const */</replace></replace-regexp-operation>
+                                <replace-regexp-operation><match>google\.maps = \{\};</match><replace><![CDATA[
+/** @const */
+var google = {};
+
+/** @const */
+google.maps = {};]]></replace></replace-regexp-operation>
+                            </operations>
+                        </configuration>
+                    </execution>
+                    <!-- Generate the ActionScript interface -->
+                    <execution>
+                        <id>generate</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <includes>
+                        <include>**/*.js</include>
+                    </includes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/google_maps/src/main/config/compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/google_maps/src/main/config/compile-config.xml b/externs/google_maps/src/main/config/compile-config.xml
new file mode 100644
index 0000000..ff0d4fc
--- /dev/null
+++ b/externs/google_maps/src/main/config/compile-config.xml
@@ -0,0 +1,97 @@
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <!--
+        <external-library-path>
+            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
+            <path-element>../../libs/framework.swc</path-element>
+            <path-element>../../libs/mx/mx.swc</path-element>
+            <path-element>../../libs/osmf.swc</path-element>
+            <path-element>../../libs/textLayout.swc</path-element>
+        </external-library-path>
+        
+        <keep-as3-metadata>
+            <name>SkinPart</name>
+        </keep-as3-metadata>
+        
+        <mxml>
+            <minimum-supported-version>4.0.0</minimum-supported-version>
+        </mxml>
+        
+        <locale/>
+        
+        <library-path/>
+        
+        <namespaces>
+            <namespace>
+                <uri>library://ns.adobe.com/flex/spark</uri>
+                <manifest>manifest.xml</manifest>
+            </namespace>
+        </namespaces>
+        -->
+		
+        <external-library-path>
+            <path-element>../js/out/bin/js.swc</path-element>
+        </external-library-path>
+		
+        <source-path>
+            <path-element>out/as/classes</path-element>
+            <path-element>out/as/interfaces</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <include-sources>
+        <path-element>out/as/classes</path-element>
+        <path-element>out/as/interfaces</path-element>
+    </include-sources>
+
+    <include-file>
+        <name>externs/google_maps_api_v3_11.js</name>
+        <path>externs/google_maps_api_v3_11.js</path>
+    </include-file>
+
+    <!--
+    <include-file>
+        <name>defaults.css</name>
+        <path>defaults.css</path>
+    </include-file>
+    <include-file>
+        <name>assets/ErrorIndicator.png</name>
+        <path>assets/ErrorIndicator.png</path>
+    </include-file>
+    <include-file>
+        <name>assets/RequiredIndicator.png</name>
+        <path>assets/RequiredIndicator.png</path>
+    </include-file>
+    
+    <include-namespaces>
+        <uri>library://ns.adobe.com/flex/spark</uri>
+    </include-namespaces>  
+    
+    <resource-bundle-list>bundles.properties</resource-bundle-list>
+    
+    <target-player>${playerglobal.version}</target-player>
+     -->
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/google_maps/src/main/config/generate-config.xml
----------------------------------------------------------------------
diff --git a/externs/google_maps/src/main/config/generate-config.xml b/externs/google_maps/src/main/config/generate-config.xml
new file mode 100644
index 0000000..c728055
--- /dev/null
+++ b/externs/google_maps/src/main/config/generate-config.xml
@@ -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</name></exclude> you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <locale/>
+        
+        <source-path>
+            <path-element>../javascript</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <external>
+        <path-element>../../../target/downloads/google_maps_api_v3_11.js</path-element>
+    </external>
+
+    <as-root>../../../target/generated-sources/externc</as-root>
+
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/jasmine/pom.xml
----------------------------------------------------------------------
diff --git a/externs/jasmine/pom.xml b/externs/jasmine/pom.xml
new file mode 100644
index 0000000..e4e732d
--- /dev/null
+++ b/externs/jasmine/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>flex-compiler-externs</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-externs-jasmine</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Externs: Jasmine</name>
+
+    <properties>
+        <jasmine.version>2.0</jasmine.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <!-- Download JavaScript form GitHub -->
+            <plugin>
+                <groupId>com.googlecode.maven-download-plugin</groupId>
+                <artifactId>download-maven-plugin</artifactId>
+                <version>1.2.1</version>
+                <executions>
+                    <execution>
+                        <id>get-createjs</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            <url>https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jasmine-${jasmine.version}.js</url>
+                            <outputFileName>jasmine-${jasmine.version}.js</outputFileName>
+                            <outputDirectory>${project.build.directory}/downloads</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.flex.flexjs.compiler</groupId>
+                <artifactId>externc-maven-plugin</artifactId>
+                <version>0.6.0-SNAPSHOT</version>
+                <executions>
+                    <!-- Generate the ActionScript interface -->
+                    <execution>
+                        <id>generate</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/jasmine/src/main/config/compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/jasmine/src/main/config/compile-config.xml b/externs/jasmine/src/main/config/compile-config.xml
new file mode 100644
index 0000000..2af1e2a
--- /dev/null
+++ b/externs/jasmine/src/main/config/compile-config.xml
@@ -0,0 +1,97 @@
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <!--
+        <external-library-path>
+            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
+            <path-element>../../libs/framework.swc</path-element>
+            <path-element>../../libs/mx/mx.swc</path-element>
+            <path-element>../../libs/osmf.swc</path-element>
+            <path-element>../../libs/textLayout.swc</path-element>
+        </external-library-path>
+        
+        <keep-as3-metadata>
+            <name>SkinPart</name>
+        </keep-as3-metadata>
+        
+        <mxml>
+            <minimum-supported-version>4.0.0</minimum-supported-version>
+        </mxml>
+        
+        <locale/>
+        
+        <library-path/>
+        
+        <namespaces>
+            <namespace>
+                <uri>library://ns.adobe.com/flex/spark</uri>
+                <manifest>manifest.xml</manifest>
+            </namespace>
+        </namespaces>
+        -->
+		
+        <external-library-path>
+            <path-element>../js/out/bin/js.swc</path-element>
+        </external-library-path>
+		
+        <source-path>
+            <path-element>out/as/classes</path-element>
+            <path-element>out/as/functions</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <include-sources>
+        <path-element>out/as/classes</path-element>
+        <path-element>out/as/functions</path-element>
+    </include-sources>
+
+    <include-file>
+        <name>externs/jasmine-2.0.js</name>
+        <path>externs/jasmine-2.0.js</path>
+    </include-file>
+
+    <!--
+    <include-file>
+        <name>defaults.css</name>
+        <path>defaults.css</path>
+    </include-file>
+    <include-file>
+        <name>assets/ErrorIndicator.png</name>
+        <path>assets/ErrorIndicator.png</path>
+    </include-file>
+    <include-file>
+        <name>assets/RequiredIndicator.png</name>
+        <path>assets/RequiredIndicator.png</path>
+    </include-file>
+    
+    <include-namespaces>
+        <uri>library://ns.adobe.com/flex/spark</uri>
+    </include-namespaces>  
+    
+    <resource-bundle-list>bundles.properties</resource-bundle-list>
+    
+    <target-player>${playerglobal.version}</target-player>
+     -->
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/jasmine/src/main/config/generate-config.xml
----------------------------------------------------------------------
diff --git a/externs/jasmine/src/main/config/generate-config.xml b/externs/jasmine/src/main/config/generate-config.xml
new file mode 100644
index 0000000..e5474ba
--- /dev/null
+++ b/externs/jasmine/src/main/config/generate-config.xml
@@ -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</name></exclude> you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <locale/>
+        
+        <source-path>
+            <path-element>../javascript</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <external>
+        <path-element>../../../target/downloads/jasmine-2.0.js</path-element>
+    </external>
+
+    <as-root>../../../target/generated-sources/externc</as-root>
+	
+	<field-exclude>
+        <class>jasmine.Spec</class>
+        <field>$injector</field>
+    </field-exclude>
+    <exclude><class>jasmine.Matchers</class><name>actual</name></exclude><!-- TODO returns T -->
+
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/jquery/pom.xml
----------------------------------------------------------------------
diff --git a/externs/jquery/pom.xml b/externs/jquery/pom.xml
new file mode 100644
index 0000000..cb289b5
--- /dev/null
+++ b/externs/jquery/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>flex-compiler-externs</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-externs-jquery</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Externs: JQuery</name>
+
+    <properties>
+        <jquery.version>1.9</jquery.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <!-- Download JavaScript form GitHub -->
+            <plugin>
+                <groupId>com.googlecode.maven-download-plugin</groupId>
+                <artifactId>download-maven-plugin</artifactId>
+                <version>1.2.1</version>
+                <executions>
+                    <execution>
+                        <id>get-createjs</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            <url>https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jquery-${jquery.version}.js</url>
+                            <outputFileName>jquery-${jquery.version}.js</outputFileName>
+                            <outputDirectory>${project.build.directory}/downloads</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.flex.flexjs.compiler</groupId>
+                <artifactId>externc-maven-plugin</artifactId>
+                <version>0.6.0-SNAPSHOT</version>
+                <executions>
+                    <!-- Generate the ActionScript interface -->
+                    <execution>
+                        <id>generate</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/jquery/src/main/config/compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/jquery/src/main/config/compile-config.xml b/externs/jquery/src/main/config/compile-config.xml
new file mode 100644
index 0000000..c290bdf
--- /dev/null
+++ b/externs/jquery/src/main/config/compile-config.xml
@@ -0,0 +1,101 @@
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <!--
+        <external-library-path>
+            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
+            <path-element>../../libs/framework.swc</path-element>
+            <path-element>../../libs/mx/mx.swc</path-element>
+            <path-element>../../libs/osmf.swc</path-element>
+            <path-element>../../libs/textLayout.swc</path-element>
+        </external-library-path>
+        
+        <keep-as3-metadata>
+            <name>SkinPart</name>
+        </keep-as3-metadata>
+        
+        <mxml>
+            <minimum-supported-version>4.0.0</minimum-supported-version>
+        </mxml>
+        
+        <locale/>
+        
+        <library-path/>
+        
+        <namespaces>
+            <namespace>
+                <uri>library://ns.adobe.com/flex/spark</uri>
+                <manifest>manifest.xml</manifest>
+            </namespace>
+        </namespaces>
+        -->
+		
+        <external-library-path>
+            <path-element>../js/out/bin/js.swc</path-element>
+        </external-library-path>
+		
+        <source-path>
+            <path-element>out/as/classes</path-element>
+            <path-element>out/as/constants</path-element>
+            <path-element>out/as/interfaces</path-element>
+            <path-element>out/as/typedefs</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <include-sources>
+        <path-element>out/as/classes</path-element>
+        <path-element>out/as/constants</path-element>
+        <path-element>out/as/interfaces</path-element>
+        <path-element>out/as/typedefs</path-element>
+    </include-sources>
+
+    <include-file>
+        <name>externs/jquery-1.9.js</name>
+        <path>externs/jquery-1.9.js</path>
+    </include-file>
+
+    <!--
+    <include-file>
+        <name>defaults.css</name>
+        <path>defaults.css</path>
+    </include-file>
+    <include-file>
+        <name>assets/ErrorIndicator.png</name>
+        <path>assets/ErrorIndicator.png</path>
+    </include-file>
+    <include-file>
+        <name>assets/RequiredIndicator.png</name>
+        <path>assets/RequiredIndicator.png</path>
+    </include-file>
+    
+    <include-namespaces>
+        <uri>library://ns.adobe.com/flex/spark</uri>
+    </include-namespaces>  
+    
+    <resource-bundle-list>bundles.properties</resource-bundle-list>
+    
+    <target-player>${playerglobal.version}</target-player>
+     -->
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/jquery/src/main/config/generate-config.xml
----------------------------------------------------------------------
diff --git a/externs/jquery/src/main/config/generate-config.xml b/externs/jquery/src/main/config/generate-config.xml
new file mode 100644
index 0000000..5728fe5
--- /dev/null
+++ b/externs/jquery/src/main/config/generate-config.xml
@@ -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</name></exclude> you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <locale/>
+        
+        <source-path>
+            <path-element>../javascript</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <external>
+        <path-element>../../../target/downloads/jquery-1.9.js</path-element>
+    </external>
+
+    <as-root>../../../target/generated-sources/externc</as-root>
+	
+    <!-- JQuery -->
+    <class-to-function><class>$</class></class-to-function>
+
+    <exclude><class>jQuery</class><name>is</name></exclude>
+    <exclude><class>jQuery</class><name>promise</name></exclude>
+    <exclude><class>jQuery</class><name>getJSON</name></exclude>
+    <exclude><class>jQuery</class><name>ajax</name></exclude>
+    <exclude><class>jQuery</class><name>when</name></exclude>
+    <exclude><class>jQuery</class><name>post</name></exclude>
+    <exclude><class>jQuery</class><name>getScript</name></exclude>
+    <exclude><class>jQuery</class><name>Callbacks</name></exclude>
+
+    <class-exclude><class>Deferred</class></class-exclude>
+    <class-exclude><class>jQuery.deferred</class></class-exclude>
+    <class-exclude><class>jQuery.Event</class></class-exclude>
+    <class-exclude><class>jQuery.Deferred</class></class-exclude>
+    <class-exclude><class>$.Event</class></class-exclude>
+    <class-exclude><class>$.Deferred</class></class-exclude>
+    <class-exclude><class>$.deferred</class></class-exclude>
+
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/js/pom.xml
----------------------------------------------------------------------
diff --git a/externs/js/pom.xml b/externs/js/pom.xml
new file mode 100644
index 0000000..96f95b8
--- /dev/null
+++ b/externs/js/pom.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>flex-compiler-externs</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-externs-js</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Externs: JS</name>
+
+    <build>
+        <plugins>
+            <!-- Download JavaScript form GitHub -->
+            <plugin>
+                <groupId>com.googlecode.maven-download-plugin</groupId>
+                <artifactId>download-maven-plugin</artifactId>
+                <version>1.2.1</version>
+                <executions>
+                    <execution>
+                        <id>get-createjs</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            <url>https://closureidl.googlecode.com/files/svg.js</url>
+                            <outputFileName>svg.js</outputFileName>
+                            <outputDirectory>${project.build.directory}/downloads</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.flex.flexjs.compiler</groupId>
+                <artifactId>compiler-build-tools</artifactId>
+                <version>0.6.0-SNAPSHOT</version>
+                <executions>
+                    <execution>
+                        <id>unpack-closure-externs</id>
+                        <goals>
+                            <goal>unpack-resources</goal>
+                        </goals>
+                        <configuration>
+                            <resource>externs.zip</resource>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>pre-process-javascript-sources-svg</id>
+                        <goals>
+                            <goal>pre-process-sources</goal>
+                        </goals>
+                        <configuration>
+                            <operations>
+                                <replace-regexp-operation><match>@type \{function\(new:.*</match><replace/></replace-regexp-operation>
+                                <replace-regexp-operation><match>Window\.prototype\..*</match><replace/></replace-regexp-operation>
+                                <replace-regexp-operation><match>EventListener\|\(function\(Event\)</match><replace>EventListener|(function(!Event)</replace></replace-regexp-operation>
+                            </operations>
+                            <includes>
+                                <include>svg.js</include>
+                            </includes>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>pre-process-javascript-sources-es3</id>
+                        <goals>
+                            <goal>pre-process-sources</goal>
+                        </goals>
+                        <configuration>
+                            <operations>
+                                <replace-regexp-operation><match>(The constructor of the current object\.\n.*)@type\s\{Function\}</match><replace>$1@type {Class}</replace></replace-regexp-operation>
+                                <replace-regexp-operation><match>Object\.prototype\.constructor\s=\sfunction\(\)\s\{\};</match><replace>Object.prototype.constructor;</replace></replace-regexp-operation>
+                                <replace-regexp-operation><match>(Transposes the elements of an array in place.*\n.*\n.*)(\n.*\s@this)</match><replace>$1 @return {!Array&lt;?&gt;}$2</replace></replace-regexp-operation>
+                            </operations>
+                            <includes>
+                                <include>es3.js</include>
+                            </includes>
+                        </configuration>
+                    </execution>
+                    <!-- Generate the ActionScript interface -->
+                    <execution>
+                        <id>generate</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>pre-process-actionscript-sources</id>
+                        <phase>process-sources</phase>
+                        <goals>
+                            <goal>pre-process-sources</goal>
+                        </goals>
+                        <configuration>
+                            <operations>
+                                <replace-regexp-operation><match>base\:Number\)</match><replace>base:Number = 10)</replace></replace-regexp-operation>
+                            </operations>
+                            <downloadesSourceDirectory>target/generated-sources/externc</downloadesSourceDirectory>
+                            <includes>
+                                <include>functions/parseInt.as</include>
+                            </includes>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>compile</id>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <!--
+                    Dependency to the closure compiler externs artifact so
+                    the "unpack-resources" goal can find the externs.zip
+                -->
+                <dependencies>
+                    <dependency>
+                        <groupId>com.google.javascript</groupId>
+                        <artifactId>closure-compiler-externs</artifactId>
+                        <version>v20151015</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/js/src/main/config/compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/js/src/main/config/compile-config.xml b/externs/js/src/main/config/compile-config.xml
new file mode 100644
index 0000000..15c9d59
--- /dev/null
+++ b/externs/js/src/main/config/compile-config.xml
@@ -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.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <!--
+        <external-library-path>
+            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
+            <path-element>../../libs/framework.swc</path-element>
+            <path-element>../../libs/mx/mx.swc</path-element>
+            <path-element>../../libs/osmf.swc</path-element>
+            <path-element>../../libs/textLayout.swc</path-element>
+        </external-library-path>
+        
+        <keep-as3-metadata>
+            <name>SkinPart</name>
+        </keep-as3-metadata>
+        
+        <mxml>
+            <minimum-supported-version>4.0.0</minimum-supported-version>
+        </mxml>
+        
+        <locale/>
+        
+        <library-path/>
+        
+        <namespaces>
+            <namespace>
+                <uri>library://ns.adobe.com/flex/spark</uri>
+                <manifest>manifest.xml</manifest>
+            </namespace>
+        </namespaces>
+        -->
+        <source-path>
+            <path-element>../../../target/generated-sources/externc/classes</path-element>
+            <path-element>../../../target/generated-sources/externc/constants</path-element>
+            <path-element>../../../target/generated-sources/externc/functions</path-element>
+            <path-element>../../../target/generated-sources/externc/interfaces</path-element>
+            <path-element>../../../target/generated-sources/externc/typedefs</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <include-sources>
+        <path-element>../../../target/generated-sources/externc/classes</path-element>
+        <path-element>../../../target/generated-sources/externc/constants</path-element>
+        <path-element>../../../target/generated-sources/externc/functions</path-element>
+        <path-element>../../../target/generated-sources/externc/interfaces</path-element>
+        <path-element>../../../target/generated-sources/externc/typedefs</path-element>
+    </include-sources>
+
+    <include-file>
+        <name>externs/svg.js</name>
+        <path>../../../target/downloads/svg.js</path>
+    </include-file>
+    <!--
+    <include-file>
+        <name>assets/ErrorIndicator.png</name>
+        <path>assets/ErrorIndicator.png</path>
+    </include-file>
+    <include-file>
+        <name>assets/RequiredIndicator.png</name>
+        <path>assets/RequiredIndicator.png</path>
+    </include-file>
+    
+    <include-namespaces>
+        <uri>library://ns.adobe.com/flex/spark</uri>
+    </include-namespaces>  
+    
+    <resource-bundle-list>bundles.properties</resource-bundle-list>
+    
+    <target-player>${playerglobal.version}</target-player>
+     -->
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/js/src/main/config/generate-config.xml
----------------------------------------------------------------------
diff --git a/externs/js/src/main/config/generate-config.xml b/externs/js/src/main/config/generate-config.xml
new file mode 100644
index 0000000..f4a3b20
--- /dev/null
+++ b/externs/js/src/main/config/generate-config.xml
@@ -0,0 +1,173 @@
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License</name></exclude> you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <!--
+        <external-library-path>
+            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
+            <path-element>../../libs/framework.swc</path-element>
+            <path-element>../../libs/mx/mx.swc</path-element>
+            <path-element>../../libs/osmf.swc</path-element>
+            <path-element>../../libs/textLayout.swc</path-element>
+        </external-library-path>
+        
+        <keep-as3-metadata>
+            <name>SkinPart</name>
+        </keep-as3-metadata>
+        
+        <mxml>
+            <minimum-supported-version>4.0.0</minimum-supported-version>
+        </mxml>
+        -->
+        
+        <locale/>
+        
+        <library-path/>
+        
+        <!--
+        <namespaces>
+            <namespace>
+                <uri>library://ns.adobe.com/flex/spark</uri>
+                <manifest>manifest.xml</manifest>
+            </namespace>
+        </namespaces>
+        -->
+        
+        <source-path>
+            <path-element>src</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <external>
+        <path-element>../javascript/missing.js</path-element>
+        <path-element>../../../target/downloads/es3.js</path-element>
+        <path-element>../../../target/downloads/es5.js</path-element>
+        <path-element>../../../target/downloads/es6.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_anim_timing.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_audio.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_batterystatus.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_css.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_css3d.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_device_sensor_event.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_dom1.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_dom2.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_dom3.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_elementtraversal.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_encoding.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_event.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_event3.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_geolocation.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_indexeddb.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_navigation_timing.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_range.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_rtc.js</path-element>
+        <path-element>../../../target/downloads/browser/w3c_selectors.js</path-element>
+        <!-- path-element>../../../target/downloads/browser/w3c_serviceworker.js</path-element> -->
+        <!-- path-element>../../../target/downloads/browser/w3c_webcrypto.js</path-element> -->
+        <path-element>../../../target/downloads/browser/w3c_xml.js</path-element>
+
+        <!-- path-element>externs/fetchapi</path-element> -->
+
+        <path-element>../../../target/downloads/browser/window.js</path-element>
+
+        <path-element>../../../target/downloads/browser/ie_dom.js</path-element>
+        <path-element>../../../target/downloads/browser/gecko_dom.js</path-element>
+        <path-element>../../../target/downloads/browser/gecko_xml.js</path-element>
+        <path-element>../../../target/downloads/browser/gecko_event.js</path-element>
+
+        <path-element>../../../target/downloads/browser/webkit_css.js</path-element>
+        <path-element>../../../target/downloads/browser/webkit_dom.js</path-element>
+        <path-element>../../../target/downloads/browser/webkit_event.js</path-element>
+        <!-- path-element>externs/webkit_notifications.js</path-element> -->
+
+        <path-element>../../../target/downloads/browser/iphone.js</path-element>
+        <path-element>../../../target/downloads/browser/chrome.js</path-element>
+        <path-element>../../../target/downloads/browser/flash.js</path-element>
+
+        <path-element>../../../target/downloads/browser/page_visibility.js</path-element>
+        <path-element>../../../target/downloads/browser/fileapi.js</path-element>
+        <path-element>../../../target/downloads/browser/html5.js</path-element>
+
+        <path-element>../../../target/downloads/browser/webgl.js</path-element>
+        <path-element>../../../target/downloads/browser/webstorage.js</path-element>
+
+        <path-element>../../../target/downloads/svg.js</path-element>
+    </external>
+
+    <as-root>../../../target/generated-sources/externc</as-root>
+    
+    <field-exclude>
+        <class>Window</class>
+        <field>focus</field>
+    </field-exclude>
+
+    <class-exclude>
+        <class>controlRange</class>
+    </class-exclude>
+    
+    <exclude>
+        <class>Array</class>
+        <name>toSource</name>
+    </exclude>
+    <exclude>
+        <class>Date</class>
+        <name>valueOf</name>
+    </exclude>
+    <exclude>
+        <class>String</class>
+        <name>valueOf</name>
+    </exclude>
+    <exclude><class>FontFaceSet</class><name>delete</name></exclude>
+    
+    <exclude><class>CSSStyleDeclaration</class><name>cssText</name></exclude>
+    <exclude><class>CSSStyleRule</class><name>style</name></exclude>
+    <exclude><class>CSSFontFaceRule</class><name>style</name></exclude>
+    <exclude><class>CSSPageRule</class><name>style</name></exclude>
+    
+    <exclude><class>Generator</class><name>throw</name></exclude>
+    <exclude><class>Generator</class><name>return</name></exclude>
+    <exclude><class>HTMLMenuItemElement</class><name>default</name></exclude>
+    <exclude><class>MessageEvent</class><name>data</name></exclude><!-- TODO returns T -->
+    <exclude><class>MessageEvent</class><name>initMessageEventNS</name></exclude> <!-- TODO param T -->
+    <exclude><class>MessageEvent</class><name>initMessageEvent</name></exclude> <!-- TODO param T -->
+    <exclude><class>MessageEvent</class><name>default</name></exclude>
+    <exclude><class>Object</class><name>is</name></exclude>
+    <exclude><class>Promise</class><name>catch</name></exclude>
+    
+    <exclude><class>IDBCursor</class><name>continue</name></exclude>
+    <exclude><class>IDBCursor</class><name>delete</name></exclude>
+    <exclude><class>IDBObjectStore</class><name>delete</name></exclude>
+    
+    <!-- TODO method treated like field -->
+    <field-exclude><class>Iterator</class><field>next</field></field-exclude>
+    <exclude><class>Generator</class><name>next</name></exclude>
+    <exclude><class>LinkStyle</class><name>sheet</name></exclude>
+    
+    <!-- SVG -->
+    <exclude><class>SVGStylable</class><name>className</name></exclude>
+    <exclude><class>SVGStylable</class><name>style</name></exclude>
+    <exclude><class>SVGLocatable</class><name>farthestViewportElement</name></exclude>
+    <exclude><class>SVGLocatable</class><name>nearestViewportElement</name></exclude>
+
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/js/src/main/flex/__AS3__/vec/Vector$int.as
----------------------------------------------------------------------
diff --git a/externs/js/src/main/flex/__AS3__/vec/Vector$int.as b/externs/js/src/main/flex/__AS3__/vec/Vector$int.as
new file mode 100644
index 0000000..37681cb
--- /dev/null
+++ b/externs/js/src/main/flex/__AS3__/vec/Vector$int.as
@@ -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 __AS3__.vec
+{
+
+/**
+ *  The compiler appears to expect these internal implementations
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+internal class Vector$int
+{
+	public function Vector$int(length:uint = 0, fixed:Boolean = false) {}
+	
+	public var fixed:Boolean;
+	
+	public var length:uint;
+	
+	public function concat(...args):Vector$int { return null }
+	
+	public function every(callback:Function, thisObject:Object):Boolean { return false }
+	
+	public function filter(callback:Function, thisObject:Object = null):Vector$int { return null }
+	
+	public function forEach(callback:Function, thisObject:Object = null):void {}
+	
+	public function indexOf(searchElement:int, fromIndex:int = 0):int { return -1 }
+	
+	public function insertAt(index:int, element:int):void {}
+	
+	public function join(sep:String = ","):String { return null }
+	
+	public function lastIndexOf(searchElement:int, fromIndex:int = 0x7fffffff):int { return -1 }
+	
+	public function map(callback:Function, thisObject:Object = null):Vector$int { return null }
+	
+	public function pop():int { return null }
+	
+	public function push(... args):uint { return 0 }
+	
+	public function removeAt(index:int):int { return null }
+	
+	public function reverse():Vector$int { return null }
+	
+	public function shift():int { return null }
+	
+	public function slice(startIndex:int = 0, endIndex:int = 16777215):Vector$int { return null }
+	
+	public function some(callback:Function, thisObject:Object = null):Boolean { return false }
+	
+	public function sort(sortBehavior:Object):Vector$int { return null }
+	
+	public function splice(startIndex:int, deleteCount:uint = 4294967295, ... items):Vector$int { return null }
+	
+	override public function toLocaleString():String { return null }
+	
+	public function toString():String { return null }
+	
+	public function unshift(... args):uint { return 0 }
+}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/js/src/main/flex/__AS3__/vec/Vector$object.as
----------------------------------------------------------------------
diff --git a/externs/js/src/main/flex/__AS3__/vec/Vector$object.as b/externs/js/src/main/flex/__AS3__/vec/Vector$object.as
new file mode 100644
index 0000000..7ae7703
--- /dev/null
+++ b/externs/js/src/main/flex/__AS3__/vec/Vector$object.as
@@ -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 __AS3__.vec
+{
+
+/**
+ *  The compiler appears to expect these internal implementations
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+internal class Vector$object
+{
+	public function Vector$object(length:uint = 0, fixed:Boolean = false) {}
+	
+	public var fixed:Boolean;
+	
+	public var length:uint;
+	
+	public function concat(...args):Vector$object { return null }
+	
+	public function every(callback:Function, thisObject:Object):Boolean { return false }
+	
+	public function filter(callback:Function, thisObject:Object = null):Vector$object { return null }
+	
+	public function forEach(callback:Function, thisObject:Object = null):void {}
+	
+	public function indexOf(searchElement:Object, fromIndex:int = 0):int { return -1 }
+	
+	public function insertAt(index:int, element:Object):void {}
+	
+	public function join(sep:String = ","):String { return null }
+	
+	public function lastIndexOf(searchElement:Object, fromIndex:int = 0x7fffffff):int { return -1 }
+	
+	public function map(callback:Function, thisObject:Object = null):Vector$object { return null }
+	
+	public function pop():Object { return null }
+	
+	public function push(... args):uint { return 0 }
+	
+	public function removeAt(index:int):Object { return null }
+	
+	public function reverse():Vector$object { return null }
+	
+	public function shift():Object { return null }
+	
+	public function slice(startIndex:int = 0, endIndex:int = 16777215):Vector$object { return null }
+	
+	public function some(callback:Function, thisObject:Object = null):Boolean { return false }
+	
+	public function sort(sortBehavior:Object):Vector$object { return null }
+	
+	public function splice(startIndex:int, deleteCount:uint = 4294967295, ... items):Vector$object { return null }
+	
+	override public function toLocaleString():String { return null }
+	
+	public function toString():String { return null }
+	
+	public function unshift(... args):uint { return 0 }
+}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/js/src/main/flex/__AS3__/vec/Vector$uint.as
----------------------------------------------------------------------
diff --git a/externs/js/src/main/flex/__AS3__/vec/Vector$uint.as b/externs/js/src/main/flex/__AS3__/vec/Vector$uint.as
new file mode 100644
index 0000000..6540728
--- /dev/null
+++ b/externs/js/src/main/flex/__AS3__/vec/Vector$uint.as
@@ -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 __AS3__.vec
+{
+
+/**
+ *  The compiler appears to expect these internal implementations
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+internal class Vector$unit
+{
+	public function Vector$unit(length:uint = 0, fixed:Boolean = false) {}
+	
+	public var fixed:Boolean;
+	
+	public var length:uint;
+	
+	public function concat(...args):Vector$unit { return null }
+	
+	public function every(callback:Function, thisObject:Object):Boolean { return false }
+	
+	public function filter(callback:Function, thisObject:Object = null):Vector$unit { return null }
+	
+	public function forEach(callback:Function, thisObject:Object = null):void {}
+	
+	public function indexOf(searchElement:unit, fromIndex:int = 0):int { return -1 }
+	
+	public function insertAt(index:int, element:unit):void {}
+	
+	public function join(sep:String = ","):String { return null }
+	
+	public function lastIndexOf(searchElement:unit, fromIndex:int = 0x7fffffff):int { return -1 }
+	
+	public function map(callback:Function, thisObject:Object = null):Vector$unit { return null }
+	
+	public function pop():unit { return null }
+	
+	public function push(... args):uint { return 0 }
+	
+	public function removeAt(index:int):unit { return null }
+	
+	public function reverse():Vector$unit { return null }
+	
+	public function shift():unit { return null }
+	
+	public function slice(startIndex:int = 0, endIndex:int = 16777215):Vector$unit { return null }
+	
+	public function some(callback:Function, thisObject:Object = null):Boolean { return false }
+	
+	public function sort(sortBehavior:Object):Vector$unit { return null }
+	
+	public function splice(startIndex:int, deleteCount:uint = 4294967295, ... items):Vector$unit { return null }
+	
+	override public function toLocaleString():String { return null }
+	
+	public function toString():String { return null }
+	
+	public function unshift(... args):uint { return 0 }
+}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/node/pom.xml
----------------------------------------------------------------------
diff --git a/externs/node/pom.xml b/externs/node/pom.xml
new file mode 100644
index 0000000..9765bcf
--- /dev/null
+++ b/externs/node/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>flex-compiler-externs</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-externs-node</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Externs: Node</name>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.flex.flexjs.compiler</groupId>
+                <artifactId>externc-maven-plugin</artifactId>
+                <version>0.6.0-SNAPSHOT</version>
+                <executions>
+                    <!-- Generate the ActionScript interface -->
+                    <execution>
+                        <id>generate</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/node/src/main/config/compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/node/src/main/config/compile-config.xml b/externs/node/src/main/config/compile-config.xml
new file mode 100644
index 0000000..66ae820
--- /dev/null
+++ b/externs/node/src/main/config/compile-config.xml
@@ -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.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <external-library-path>
+            <path-element>../js/out/bin/js.swc</path-element>
+        </external-library-path>
+		
+        <source-path>
+            <path-element>out/as/functions</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <include-sources>
+        <path-element>out/as/functions</path-element>
+    </include-sources>
+
+    <include-file>
+        <name>externs/node.js</name>
+        <path>externs/node.js</path>
+    </include-file>
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/node/src/main/config/generate-config.xml
----------------------------------------------------------------------
diff --git a/externs/node/src/main/config/generate-config.xml b/externs/node/src/main/config/generate-config.xml
new file mode 100644
index 0000000..c09741b
--- /dev/null
+++ b/externs/node/src/main/config/generate-config.xml
@@ -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</name></exclude> you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <locale/>
+        
+        <source-path>
+            <path-element>../javascript</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <external>
+    </external>
+
+    <as-root>../../../target/generated-sources/externc</as-root>
+
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/pom.xml
----------------------------------------------------------------------
diff --git a/externs/pom.xml b/externs/pom.xml
new file mode 100644
index 0000000..ecd084f
--- /dev/null
+++ b/externs/pom.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>compiler-parent</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-externs</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Externs</name>
+
+    <modules>
+        <module>cordova</module>
+        <module>createjs</module>
+        <module>GCL</module>
+        <module>google_maps</module>
+        <module>jasmine</module>
+        <!--module>jquery</module-->
+        <module>js</module>
+        <module>node</module>
+    </modules>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/flexjs-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/flexjs-maven-plugin/pom.xml b/flexjs-maven-plugin/pom.xml
new file mode 100644
index 0000000..321d8e1
--- /dev/null
+++ b/flexjs-maven-plugin/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.flex.flexjs.compiler</groupId>
+    <artifactId>compiler-parent</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>flexjs-maven-plugin</artifactId>
+  <version>0.6.0-SNAPSHOT</version>
+  <packaging>maven-plugin</packaging>
+
+  <name>Apache Flex: FlexJS Maven Plugin</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <version>3.0.4</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.sonatype.sisu</groupId>
+          <artifactId>sisu-guava</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-compiler-api</artifactId>
+      <version>2.2</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <version>3.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>3.0.3</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.flex.flexjs.compiler</groupId>
+      <artifactId>compiler</artifactId>
+      <version>0.6.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.flex.compiler</groupId>
+      <artifactId>flex-tool-api</artifactId>
+      <version>4.15.0</version>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.10</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-plugin-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <goalPrefix>externc</goalPrefix>
+          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+        </configuration>
+        <executions>
+          <execution>
+            <id>mojo-descriptor</id>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>help-goal</id>
+            <goals>
+              <goal>helpmojo</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>


[3/3] git commit: [flex-falcon] [refs/heads/feature/maven-migration] - - Updated the migration script - Updated the closure compiler version to v20151015 - Updated guava version to 18.0 - Added some more build-tool goals needed to patch, copy, cut and ot

Posted by cd...@apache.org.
- Updated the migration script
- Updated the closure compiler version to v20151015
- Updated guava version to 18.0
- Added some more build-tool goals needed to patch, copy, cut and otherwise update stuff in the externs modules
- Extern modules
-- Added poms
-- Added config files for generation and compilation
- Added a new flexjs-maven-plugin


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/dec07727
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/dec07727
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/dec07727

Branch: refs/heads/feature/maven-migration
Commit: dec07727ac4e0b7869cafd7154cdacbb0bc2f2fa
Parents: 5088977
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Sat Mar 19 12:53:21 2016 +0100
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Sat Mar 19 12:53:21 2016 +0100

----------------------------------------------------------------------
 compiler-build-tools/pom.xml                    |   5 +
 .../compiler/tools/AnnotateClassesMojo.java     | 135 ---------------
 .../tools/BaseProblemGeneratorMojo.java         | 127 --------------
 .../tools/ProblemEnumGeneratorMojo.java         | 152 ----------------
 .../ProblemResourceBundleGeneratorMojo.java     | 101 -----------
 .../tools/annotate/AnnotateClassesMojo.java     | 135 +++++++++++++++
 .../tools/patchfiles/CopyFileOperation.java     |  31 ++++
 .../compiler/tools/patchfiles/CutOperation.java |  54 ++++++
 .../tools/patchfiles/DeleteFileOperation.java   |  23 +++
 .../compiler/tools/patchfiles/Operation.java    |  13 ++
 .../tools/patchfiles/PreProcessSourcesMojo.java |  86 +++++++++
 .../tools/patchfiles/ReplaceOperation.java      |  46 +++++
 .../patchfiles/ReplaceRegexpOperation.java      |  68 ++++++++
 .../problems/BaseProblemGeneratorMojo.java      | 127 ++++++++++++++
 .../problems/ProblemEnumGeneratorMojo.java      | 152 ++++++++++++++++
 .../ProblemResourceBundleGeneratorMojo.java     | 101 +++++++++++
 .../tools/unpack/UnpackResourceMojo.java        | 100 +++++++++++
 compiler.jx/pom.xml                             |   2 +-
 compiler/pom.xml                                |   2 +-
 externs/GCL/pom.xml                             |  23 +++
 externs/GCL/src/main/config/compile-config.xml  | 103 +++++++++++
 externs/cordova/pom.xml                         |  49 ++++++
 .../cordova/src/main/config/compile-config.xml  |  44 +++++
 .../cordova/src/main/config/generate-config.xml |  39 +++++
 externs/createjs/pom.xml                        | 167 ++++++++++++++++++
 .../createjs/src/main/config/compile-config.xml | 102 +++++++++++
 .../src/main/config/generate-config.xml         | 130 ++++++++++++++
 externs/google_maps/pom.xml                     |  88 ++++++++++
 .../src/main/config/compile-config.xml          |  97 +++++++++++
 .../src/main/config/generate-config.xml         |  39 +++++
 externs/jasmine/pom.xml                         |  62 +++++++
 .../jasmine/src/main/config/compile-config.xml  |  97 +++++++++++
 .../jasmine/src/main/config/generate-config.xml |  45 +++++
 externs/jquery/pom.xml                          |  62 +++++++
 .../jquery/src/main/config/compile-config.xml   | 101 +++++++++++
 .../jquery/src/main/config/generate-config.xml  |  59 +++++++
 externs/js/pom.xml                              | 131 ++++++++++++++
 externs/js/src/main/config/compile-config.xml   |  93 ++++++++++
 externs/js/src/main/config/generate-config.xml  | 173 +++++++++++++++++++
 .../js/src/main/flex/__AS3__/vec/Vector$int.as  |  81 +++++++++
 .../src/main/flex/__AS3__/vec/Vector$object.as  |  81 +++++++++
 .../js/src/main/flex/__AS3__/vec/Vector$uint.as |  81 +++++++++
 externs/node/pom.xml                            |  38 ++++
 externs/node/src/main/config/compile-config.xml |  43 +++++
 .../node/src/main/config/generate-config.xml    |  38 ++++
 externs/pom.xml                                 |  29 ++++
 flexjs-maven-plugin/pom.xml                     | 100 +++++++++++
 .../apache/flex/maven/flexjs/CompileMojo.java   |  59 +++++++
 .../apache/flex/maven/flexjs/ExterncMojo.java   |  52 ++++++
 maven/falcon-jx-compiler.pom                    |   2 +-
 migrate-to-maven.sh                             |  40 +++++
 pom.xml                                         |   2 +
 52 files changed, 3292 insertions(+), 518 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/pom.xml
----------------------------------------------------------------------
diff --git a/compiler-build-tools/pom.xml b/compiler-build-tools/pom.xml
index d773ee7..4f9e05f 100644
--- a/compiler-build-tools/pom.xml
+++ b/compiler-build-tools/pom.xml
@@ -46,6 +46,11 @@
       <version>3.0.3</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-compress</artifactId>
+      <version>1.10</version>
+    </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.10</version>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/AnnotateClassesMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/AnnotateClassesMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/AnnotateClassesMojo.java
deleted file mode 100644
index cae1ad7..0000000
--- a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/AnnotateClassesMojo.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package org.apache.flex.compiler.tools;
-
-/*
- * Copyright 2001-2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT 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 org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.compiler.util.scan.InclusionScanException;
-import org.codehaus.plexus.compiler.util.scan.SimpleSourceInclusionScanner;
-import org.codehaus.plexus.compiler.util.scan.mapping.SuffixMapping;
-
-import java.io.*;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Goal which adds annotations to generated classes.
- */
-@Mojo(name="add-class-annotation",defaultPhase = LifecyclePhase.PROCESS_SOURCES)
-public class AnnotateClassesMojo
-    extends AbstractMojo
-{
-    @Parameter
-    protected Set<String> includes = new HashSet<String>();
-
-    @Parameter
-    protected Set<String> excludes = new HashSet<String>();
-
-    @Parameter(defaultValue="${project.build.directory}/generated-sources")
-    private File directory;
-
-    @Parameter(property="annotation", required=true)
-    private String annotation;
-
-    public void execute()
-        throws MojoExecutionException
-    {
-        SuffixMapping mapping = new SuffixMapping("jbg", Collections.<String>emptySet());
-        SimpleSourceInclusionScanner scan = new SimpleSourceInclusionScanner(includes, excludes);
-        scan.addSourceMapping(mapping);
-
-        try {
-            Set<File> candidates = scan.getIncludedSources(directory, null);
-            for(File candidate : candidates) {
-                processFile(candidate);
-            }
-        } catch (InclusionScanException e) {
-            throw new MojoExecutionException("Error scanning filed to be processed.", e);
-        }
-    }
-
-    private void processFile(File file) {
-        if(!file.exists()) {
-            System.out.println("Missing file: " + file.getPath());
-            return;
-        }
-        System.out.println("Adding " + annotation + " to class: " + file.getPath());
-        try
-        {
-            // Prepare to read the file.
-            FileInputStream fileInputStream = new FileInputStream(file);
-            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
-            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
-
-            File tmpOutputFile = new File(file.getParentFile(), file.getName() + ".tmp");
-            FileOutputStream fileOutputStream = new FileOutputStream(tmpOutputFile);
-            PrintStream outputStream = new PrintStream(fileOutputStream);
-            try
-            {
-                // Read it line-by-line.
-                String line;
-                while ((line = bufferedReader.readLine()) != null)
-                {
-                    // If the line starts with "public class", output the annotation on the previous line.
-                    if (line.startsWith("public class") || line.startsWith("public interface")) {
-                        outputStream.println(annotation);
-                    }
-                    outputStream.println(line);
-                }
-            }
-            finally
-            {
-                try {
-                    bufferedReader.close();
-                } catch(Exception e) {
-                    // Ignore.
-                }
-                try {
-                    outputStream.close();
-                } catch(Exception e) {
-                    // Ignore.
-                }
-                try {
-                    fileOutputStream.close();
-                } catch(Exception e) {
-                    // Ignore.
-                }
-            }
-
-            // Remove the original file.
-            if(!file.delete()) {
-                throw new MojoExecutionException("Error deleting original file at: " + file.getPath());
-            }
-
-            // Rename the temp file to the name of the original file.
-            if(!tmpOutputFile.renameTo(file)) {
-                throw new MojoExecutionException("Error renaming the temp file from: " + tmpOutputFile.getPath() +
-                        " to: " + file.getPath());
-            }
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/BaseProblemGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/BaseProblemGeneratorMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/BaseProblemGeneratorMojo.java
deleted file mode 100644
index 3845be9..0000000
--- a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/BaseProblemGeneratorMojo.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package org.apache.flex.compiler.tools;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.Collections2;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.io.Files;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.nio.charset.Charset;
-import java.util.Collection;
-import java.util.Iterator;
-
-/**
- * Created by christoferdutz on 20.02.16.
- */
-public abstract class BaseProblemGeneratorMojo extends AbstractMojo
-{
-
-    private ImmutableSet<String> nonProblemClassesToFilter =
-            new ImmutableSet.Builder<String>()
-                    .add("DefaultSeverity.java")
-                    .add("CompositeProblemFilter.java")
-                    .add("FilteredIterator.java")
-                    .add("CompilerProblemSeverity.java")
-                    .build();
-
-    abstract protected File getInputDirectory();
-    abstract protected File getOutputDirectory();
-    abstract protected String getOutputFile();
-
-    public void execute() throws MojoExecutionException
-    {
-        File generatedFile = new File(getOutputDirectory(), getOutputFile());
-
-        if(!generatedFile.getParentFile().exists()) {
-            if(!generatedFile.getParentFile().mkdirs()) {
-                throw new MojoExecutionException("Could not create output directory: " + generatedFile.getParentFile());
-            }
-        }
-
-        try {
-            PrintWriter writer = new PrintWriter(new FileWriter(generatedFile, true));
-            try {
-                printHeader(writer);
-
-                Collection<File> problemClassSourceFiles = getProblemClassSourceFiles(getInputDirectory());
-                Iterator<File> problemClassSourceFileIterator = problemClassSourceFiles.iterator();
-                while (problemClassSourceFileIterator.hasNext()) {
-                    File problemClassSourceFile = problemClassSourceFileIterator.next();
-                    printEntry(writer, problemClassSourceFile, !problemClassSourceFileIterator.hasNext());
-                }
-
-                printFooter(writer);
-            } finally {
-                writer.close();
-            }
-        } catch (IOException e) {
-            throw new MojoExecutionException("Caught Exception while trying to create output file: " + generatedFile);
-        }
-    }
-
-
-    protected void printHeader(PrintWriter writer) {
-        // Optional.
-    }
-
-    abstract protected void printEntry(PrintWriter writer, File source, boolean last);
-
-    protected void printFooter(PrintWriter writer) {
-        // Optional.
-    }
-
-    /**
-     * Recursively search a directory and its sub-directories for .class files.
-     * Use the file name to determine what equivalent class name should be
-     * available to the current classloader.
-     *
-     * @param dir - the directory to search
-     * @return list of source files found
-     */
-    protected Collection<File> getProblemClassSourceFiles(File dir)
-    {
-        Collection<File> problemFiles = FileUtils.listFiles(dir, new String[] { "java" }, true);
-        return Collections2.filter(problemFiles,
-                new Predicate<File>() {
-                    @Override
-                    public boolean apply(File input)
-                    {
-                        return isProblemClass(input);
-                    }
-                });
-    }
-
-    private boolean isProblemClass(File javaFile)
-    {
-        if (nonProblemClassesToFilter.contains(javaFile.getName()))
-            return false;
-        final String javaClassName = FilenameUtils.getBaseName(javaFile.getAbsolutePath());
-        try
-        {
-            Collection<String> lines =  Files.readLines(javaFile, Charset.forName("UTF8"));
-            for (String line : lines)
-            {
-                if (line.matches("^\\s*public\\s+final\\s+class\\s+" + javaClassName + "\\s+extends\\s+.*"))
-                    return true;
-                if (line.matches("^\\s*final\\s+public\\s+class\\s+" + javaClassName + "\\s+extends\\s+.*"))
-                    return true;
-                if (line.matches("^\\s*public\\s+class\\s+" + javaClassName + "\\s+extends\\s+.*"))
-                    return true;
-            }
-            return false;
-        }
-        catch (IOException e)
-        {
-            return false;
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemEnumGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemEnumGeneratorMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemEnumGeneratorMojo.java
deleted file mode 100644
index 54b621b..0000000
--- a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemEnumGeneratorMojo.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package org.apache.flex.compiler.tools;
-
-/*
- * Copyright 2001-2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT 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 org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-
-import java.io.File;
-import java.io.PrintWriter;
-
-/**
- * Goal which touches a timestamp file.
- */
-@Mojo(name="generate-problems-enum",defaultPhase = LifecyclePhase.GENERATE_SOURCES)
-public class ProblemEnumGeneratorMojo
-    extends BaseProblemGeneratorMojo
-{
-    @Parameter(defaultValue="${project.basedir}/src/main/java/org/apache/flex/compiler/problems",
-            property="inputDir", required=true)
-    private File inputDirectory;
-
-    @Parameter(defaultValue="${project.build.directory}/generated-sources/build-tools",
-            property="outputDir", required=true)
-    private File outputDirectory;
-
-    @Parameter(defaultValue="org/apache/flex/compiler/problems/ProblemID.java",
-            property="outputFile", required=true)
-    private String outputFile;
-
-    @Parameter(defaultValue="${project}")
-    private MavenProject project;
-
-    @Override
-    protected File getInputDirectory() {
-        return inputDirectory;
-    }
-
-    @Override
-    protected File getOutputDirectory() {
-        return outputDirectory;
-    }
-
-    @Override
-    protected String getOutputFile() {
-        return outputFile;
-    }
-
-    @Override
-    public void execute() throws MojoExecutionException {
-        super.execute();
-
-        // Add the output directory to the source path.
-        project.addCompileSourceRoot(outputDirectory.getPath());
-    }
-
-    @Override
-    protected void printHeader(PrintWriter writer) {
-        writer.println("/*");
-        writer.println(" *  Licensed to the Apache Software Foundation (ASF) under one or more");
-        writer.println(" *  contributor license agreements.  See the NOTICE file distributed with");
-        writer.println(" *  this work for additional information regarding copyright ownership.");
-        writer.println(" *  The ASF licenses this file to You under the Apache License, Version 2.0");
-        writer.println(" *  (the \"License\"); you may not use this file except in compliance with");
-        writer.println(" *  the License.  You may obtain a copy of the License at");
-        writer.println();
-        writer.println(" *      http://www.apache.org/licenses/LICENSE-2.0");
-        writer.println();
-        writer.println(" *  Unless required by applicable law or agreed to in writing, software");
-        writer.println(" *  distributed under the License is distributed on an \"AS IS\" BASIS,");
-        writer.println(" *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.");
-        writer.println(" *  See the License for the specific language governing permissions and");
-        writer.println(" *  limitations under the License.");
-        writer.println(" */");
-        writer.println();
-        writer.println("package org.apache.flex.compiler.problems;");
-        writer.println();
-        writer.println("import java.util.EnumSet;");
-        writer.println("import com.google.common.collect.ImmutableMap;");
-        writer.println();
-        writer.println("public enum ProblemID");
-        writer.println("{");
-    }
-
-    @Override
-    protected void printEntry(PrintWriter writer, File source, boolean last) {
-        writer.println("    " + getProblemEnumEntry(source.getName()) + (last ? ";" : ","));
-    }
-
-    @Override
-    protected void printFooter(PrintWriter writer) {
-        writer.println();
-        writer.println("    private ProblemID(Class<? extends CompilerProblem> problemClass)");
-        writer.println("    {");
-        writer.println("        this.problemClass = problemClass;");
-        writer.println("    }");
-        writer.println();
-        writer.println("    private final Class<? extends CompilerProblem> problemClass;");
-        writer.println("    public final Class<? extends CompilerProblem> getProblemClass()");
-        writer.println("    {");
-        writer.println("        return problemClass;");
-        writer.println("    }");
-        writer.println();
-        writer.println("    public static final ProblemID getID(ICompilerProblem problem)");
-        writer.println("    {");
-        writer.println("        final CompilerProblem problemImpl = (CompilerProblem)problem;");
-        writer.println("        return classToIDMap.get(problemImpl.getClass());");
-        writer.println("    }");
-        writer.println();
-        writer.println("    public static final ProblemID getID(Class<?> problemClass)");
-        writer.println("    {");
-        writer.println("        return classToIDMap.get(problemClass);");
-        writer.println("    }");
-        writer.println();
-        writer.println("    private static final ImmutableMap<Class<? extends CompilerProblem>, ProblemID> classToIDMap = createClassToIDMap();");
-        writer.println("    private static ImmutableMap<Class<? extends CompilerProblem>, ProblemID> createClassToIDMap()");
-        writer.println("    {");
-        writer.println("        final ImmutableMap.Builder<Class<? extends CompilerProblem>, ProblemID> builder = new ImmutableMap.Builder<Class<? extends CompilerProblem>, ProblemID>();");
-        writer.println("        for (ProblemID id : EnumSet.allOf(ProblemID.class))");
-        writer.println("            builder.put(id.getProblemClass(), id);");
-        writer.println("        return builder.build();");
-        writer.println("    }");
-        writer.println("}");
-    }
-
-    private static String getProblemEnumEntry(String problemClassName) {
-        String problemTypeName = problemClassName.substring(0, problemClassName.length() - "class".length());
-        String enumConstantName = getEnumName(problemTypeName.replaceAll("Problem$", ""));
-        return enumConstantName + "(" + problemTypeName + ".class" + ")";
-    }
-
-    private static String getEnumName(String problemTypeName) {
-        return "PROBLEM_" + problemTypeName;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemResourceBundleGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemResourceBundleGeneratorMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemResourceBundleGeneratorMojo.java
deleted file mode 100644
index dcbedce..0000000
--- a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemResourceBundleGeneratorMojo.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.apache.flex.compiler.tools;
-
-/*
- * Copyright 2001-2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT 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 org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-
-import java.io.*;
-
-/**
- * Goal which touches a timestamp file.
- */
-@Mojo(name="generate-problems-resource-bundle",defaultPhase = LifecyclePhase.PROCESS_RESOURCES)
-public class ProblemResourceBundleGeneratorMojo
-    extends BaseProblemGeneratorMojo
-{
-    @Parameter(defaultValue="${project.basedir}/src/main/java/org/apache/flex/compiler/problems",
-            property="inputDir", required=true)
-    private File inputDirectory;
-
-    @Parameter(defaultValue="${project.build.directory}/classes/org/apache/flex/compiler",
-            property="outputDir", required=true)
-    private File outputDirectory;
-
-    @Parameter(defaultValue="messages_en.properties",
-            property="outputFile", required=true)
-    private String outputFile;
-
-    @Parameter(defaultValue="${project}")
-    private MavenProject project;
-
-    @Override
-    protected File getInputDirectory() {
-        return inputDirectory;
-    }
-
-    @Override
-    protected File getOutputDirectory() {
-        return outputDirectory;
-    }
-
-    @Override
-    protected String getOutputFile() {
-        return outputFile;
-    }
-
-    @Override
-    protected void printEntry(PrintWriter writer, File source, boolean last) {
-        writer.println(getProblemName(source) + "=" + getProblemDescription(source));
-    }
-
-    private String getProblemName(File sourceFile) {
-        String fileName = sourceFile.getName();
-        return fileName.substring(0, fileName.length() - "class".length());
-    }
-
-    private String getProblemDescription(File sourceFile) {
-        try {
-            BufferedReader sourceFileReader = new BufferedReader(new FileReader(sourceFile));
-            String line;
-            StringBuilder sb = null;
-            while((line = sourceFileReader.readLine()) != null) {
-                if(line.contains("DESCRIPTION")) {
-                    sb = new StringBuilder();
-                }
-                if(sb != null) {
-                    sb.append(line);
-                    if(line.trim().endsWith(";")) {
-                        break;
-                    }
-                }
-            }
-            if(sb != null) {
-                line = sb.toString();
-                return line.substring(line.indexOf("\"") + 1, line.lastIndexOf("\""));
-            }
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return "";
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/annotate/AnnotateClassesMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/annotate/AnnotateClassesMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/annotate/AnnotateClassesMojo.java
new file mode 100644
index 0000000..82712da
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/annotate/AnnotateClassesMojo.java
@@ -0,0 +1,135 @@
+package org.apache.flex.compiler.tools.annotate;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.compiler.util.scan.InclusionScanException;
+import org.codehaus.plexus.compiler.util.scan.SimpleSourceInclusionScanner;
+import org.codehaus.plexus.compiler.util.scan.mapping.SuffixMapping;
+
+import java.io.*;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Goal which adds annotations to generated classes.
+ */
+@Mojo(name="add-class-annotation",defaultPhase = LifecyclePhase.PROCESS_SOURCES)
+public class AnnotateClassesMojo
+    extends AbstractMojo
+{
+    @Parameter
+    protected Set<String> includes = new HashSet<String>();
+
+    @Parameter
+    protected Set<String> excludes = new HashSet<String>();
+
+    @Parameter(defaultValue="${project.build.directory}/generated-sources")
+    private File directory;
+
+    @Parameter(property="annotation", required=true)
+    private String annotation;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        SuffixMapping mapping = new SuffixMapping("jbg", Collections.<String>emptySet());
+        SimpleSourceInclusionScanner scan = new SimpleSourceInclusionScanner(includes, excludes);
+        scan.addSourceMapping(mapping);
+
+        try {
+            Set<File> candidates = scan.getIncludedSources(directory, null);
+            for(File candidate : candidates) {
+                processFile(candidate);
+            }
+        } catch (InclusionScanException e) {
+            throw new MojoExecutionException("Error scanning files to be processed.", e);
+        }
+    }
+
+    private void processFile(File file) {
+        if(!file.exists()) {
+            System.out.println("Missing file: " + file.getPath());
+            return;
+        }
+        System.out.println("Adding " + annotation + " to class: " + file.getPath());
+        try
+        {
+            // Prepare to read the file.
+            FileInputStream fileInputStream = new FileInputStream(file);
+            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
+            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+
+            File tmpOutputFile = new File(file.getParentFile(), file.getName() + ".tmp");
+            FileOutputStream fileOutputStream = new FileOutputStream(tmpOutputFile);
+            PrintStream outputStream = new PrintStream(fileOutputStream);
+            try
+            {
+                // Read it line-by-line.
+                String line;
+                while ((line = bufferedReader.readLine()) != null)
+                {
+                    // If the line starts with "public class", output the annotation on the previous line.
+                    if (line.startsWith("public class") || line.startsWith("public interface")) {
+                        outputStream.println(annotation);
+                    }
+                    outputStream.println(line);
+                }
+            }
+            finally
+            {
+                try {
+                    bufferedReader.close();
+                } catch(Exception e) {
+                    // Ignore.
+                }
+                try {
+                    outputStream.close();
+                } catch(Exception e) {
+                    // Ignore.
+                }
+                try {
+                    fileOutputStream.close();
+                } catch(Exception e) {
+                    // Ignore.
+                }
+            }
+
+            // Remove the original file.
+            if(!file.delete()) {
+                throw new MojoExecutionException("Error deleting original file at: " + file.getPath());
+            }
+
+            // Rename the temp file to the name of the original file.
+            if(!tmpOutputFile.renameTo(file)) {
+                throw new MojoExecutionException("Error renaming the temp file from: " + tmpOutputFile.getPath() +
+                        " to: " + file.getPath());
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/CopyFileOperation.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/CopyFileOperation.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/CopyFileOperation.java
new file mode 100644
index 0000000..188d946
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/CopyFileOperation.java
@@ -0,0 +1,31 @@
+package org.apache.flex.compiler.tools.patchfiles;
+
+import org.apache.commons.io.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Created by christoferdutz on 16.03.16.
+ */
+public class CopyFileOperation extends Operation {
+
+    private File targetDirectory;
+
+    public CopyFileOperation() {
+    }
+
+    public File getTargetDirectory() {
+        return targetDirectory;
+    }
+
+    public void setTargetDirectory(File targetDirectory) {
+        this.targetDirectory = targetDirectory;
+    }
+
+    @Override
+    public void perform(File file) throws IOException {
+        FileUtils.copyFile(file, new File(targetDirectory, file.getName()));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/CutOperation.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/CutOperation.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/CutOperation.java
new file mode 100644
index 0000000..2834704
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/CutOperation.java
@@ -0,0 +1,54 @@
+package org.apache.flex.compiler.tools.patchfiles;
+
+import org.apache.commons.io.IOUtils;
+
+import java.io.*;
+
+/**
+ * Created by christoferdutz on 16.03.16.
+ */
+public class CutOperation extends Operation {
+
+    private Integer startCuttingLine = -1;
+    private Integer stopCuttingLine = -1;
+
+    public CutOperation() {
+    }
+
+    public Integer getStartCuttingLine() {
+        return startCuttingLine;
+    }
+
+    public void setStartCuttingLine(Integer startCuttingLine) {
+        this.startCuttingLine = startCuttingLine;
+    }
+
+    public Integer getStopCuttingLine() {
+        return stopCuttingLine;
+    }
+
+    public void setStopCuttingLine(Integer stopCuttingLine) {
+        this.stopCuttingLine = stopCuttingLine;
+    }
+
+    @Override
+    public void perform(File file) throws IOException {
+        StringBuilder sb = new StringBuilder();
+        BufferedReader reader = null;
+        try {
+            reader = new BufferedReader(new FileReader(file));
+            String line;
+            for (int lineNumber = 1; (line = reader.readLine()) != null; lineNumber++) {
+                if((startCuttingLine > lineNumber) || (lineNumber > stopCuttingLine))  {
+                    sb.append(line).append("\n");
+                }
+            }
+        } finally {
+            if(reader != null) {
+                reader.close();
+            }
+        }
+        IOUtils.write(sb.toString(), new FileOutputStream(file), "UTF-8");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/DeleteFileOperation.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/DeleteFileOperation.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/DeleteFileOperation.java
new file mode 100644
index 0000000..ab225cb
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/DeleteFileOperation.java
@@ -0,0 +1,23 @@
+package org.apache.flex.compiler.tools.patchfiles;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Created by christoferdutz on 16.03.16.
+ */
+public class DeleteFileOperation extends Operation {
+
+    public DeleteFileOperation() {
+    }
+
+    @Override
+    public void perform(File file) throws IOException {
+        if(file.exists()) {
+            if(!file.delete()) {
+                throw new IOException("Could not delete file " + file.getPath());
+            }
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/Operation.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/Operation.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/Operation.java
new file mode 100644
index 0000000..3c387d3
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/Operation.java
@@ -0,0 +1,13 @@
+package org.apache.flex.compiler.tools.patchfiles;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Created by christoferdutz on 16.03.16.
+ */
+public abstract class Operation {
+
+    public abstract void perform(File file) throws IOException;
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/PreProcessSourcesMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/PreProcessSourcesMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/PreProcessSourcesMojo.java
new file mode 100644
index 0000000..facd686
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/PreProcessSourcesMojo.java
@@ -0,0 +1,86 @@
+package org.apache.flex.compiler.tools.patchfiles;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.compiler.util.scan.InclusionScanException;
+import org.codehaus.plexus.compiler.util.scan.SimpleSourceInclusionScanner;
+import org.codehaus.plexus.compiler.util.scan.mapping.SuffixMapping;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Goal which pre-processes the JavaScript input files so they can be processed by EXTERNC.
+ */
+@Mojo(name="pre-process-sources",defaultPhase = LifecyclePhase.GENERATE_SOURCES)
+public class PreProcessSourcesMojo
+    extends AbstractMojo
+{
+
+    @Parameter
+    private Set<String> includes = new HashSet<String>();
+
+    @Parameter
+    private Set<String> excludes = new HashSet<String>();
+
+    @Parameter(defaultValue="${project.build.directory}/downloads")
+    private File downloadesSourceDirectory;
+
+    @Parameter
+    private List<Operation> operations;
+
+    @Parameter(defaultValue="${project}")
+    private MavenProject project;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        SuffixMapping mapping = new SuffixMapping("js", Collections.<String>emptySet());
+        SimpleSourceInclusionScanner scan = new SimpleSourceInclusionScanner(includes, excludes);
+        scan.addSourceMapping(mapping);
+        try {
+            Set<File> candidates = scan.getIncludedSources(downloadesSourceDirectory, null);
+            for(File candidate : candidates) {
+                if(operations != null) {
+                    for (Operation operation : operations) {
+                        try {
+                            operation.perform(candidate);
+                        } catch (IOException e) {
+                            throw new MojoExecutionException("Error performing pre-processing operation " +
+                                    operation + " on file " + candidate.getPath(), e);
+                        }
+                    }
+                }
+            }
+        } catch (InclusionScanException e) {
+            throw new MojoExecutionException("Error scanning files to be processed.", e);
+        }
+    }
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/ReplaceOperation.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/ReplaceOperation.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/ReplaceOperation.java
new file mode 100644
index 0000000..ef85301
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/ReplaceOperation.java
@@ -0,0 +1,46 @@
+package org.apache.flex.compiler.tools.patchfiles;
+
+import org.apache.commons.io.IOUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Created by christoferdutz on 16.03.16.
+ */
+public class ReplaceOperation extends Operation {
+
+    private String token;
+    private String value;
+
+    public ReplaceOperation() {
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Override
+    public void perform(File file) throws IOException {
+        String content = IOUtils.toString(new FileInputStream(file), "UTF-8");
+        content = content.replaceAll(Pattern.quote(token), Matcher.quoteReplacement((value == null) ? "" : value));
+        IOUtils.write(content, new FileOutputStream(file), "UTF-8");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/ReplaceRegexpOperation.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/ReplaceRegexpOperation.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/ReplaceRegexpOperation.java
new file mode 100644
index 0000000..e76fc84
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/patchfiles/ReplaceRegexpOperation.java
@@ -0,0 +1,68 @@
+package org.apache.flex.compiler.tools.patchfiles;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * Created by christoferdutz on 16.03.16.
+ */
+public class ReplaceRegexpOperation extends Operation {
+
+    private String match;
+    private String replace;
+    private String flags;
+
+    public ReplaceRegexpOperation() {
+    }
+
+    public String getMatch() {
+        return match;
+    }
+
+    public void setMatch(String match) {
+        this.match = match;
+    }
+
+    public String getReplace() {
+        return replace;
+    }
+
+    public void setReplace(String replace) {
+        this.replace = replace;
+    }
+
+    public String getFlags() {
+        return flags;
+    }
+
+    public void setFlags(String flags) {
+        this.flags = flags;
+    }
+
+    @Override
+    public void perform(File file) throws IOException {
+        String content = IOUtils.toString(new FileInputStream(file), "UTF-8");
+        // TODO: Add the "flags" support
+        String matchExpression = match;
+        if(matchExpression.contains("§{file.base}")) {
+            matchExpression = matchExpression.replaceAll("§\\{file.base\\}", FilenameUtils.getBaseName(file.getName()));
+        }
+        String replaceExpression = (replace == null) ? "" : replace;
+        if(replaceExpression.contains("§{file.base}")) {
+            replaceExpression = replaceExpression.replaceAll("§\\{file.base\\}", FilenameUtils.getBaseName(file.getName()));
+        }
+        if(replaceExpression.contains("_")) {
+            replaceExpression = replaceExpression.replaceAll("_", " ");
+        }
+
+        //content = Pattern.compile(matchExpression, Pattern.DOTALL).matcher(content).replaceAll(replaceExpression);
+        content = content.replaceAll(matchExpression, replaceExpression);
+        IOUtils.write(content, new FileOutputStream(file), "UTF-8");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/BaseProblemGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/BaseProblemGeneratorMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/BaseProblemGeneratorMojo.java
new file mode 100644
index 0000000..24f2560
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/BaseProblemGeneratorMojo.java
@@ -0,0 +1,127 @@
+package org.apache.flex.compiler.tools.problems;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.io.Files;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.nio.charset.Charset;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * Created by christoferdutz on 20.02.16.
+ */
+public abstract class BaseProblemGeneratorMojo extends AbstractMojo
+{
+
+    private ImmutableSet<String> nonProblemClassesToFilter =
+            new ImmutableSet.Builder<String>()
+                    .add("DefaultSeverity.java")
+                    .add("CompositeProblemFilter.java")
+                    .add("FilteredIterator.java")
+                    .add("CompilerProblemSeverity.java")
+                    .build();
+
+    abstract protected File getInputDirectory();
+    abstract protected File getOutputDirectory();
+    abstract protected String getOutputFile();
+
+    public void execute() throws MojoExecutionException
+    {
+        File generatedFile = new File(getOutputDirectory(), getOutputFile());
+
+        if(!generatedFile.getParentFile().exists()) {
+            if(!generatedFile.getParentFile().mkdirs()) {
+                throw new MojoExecutionException("Could not create output directory: " + generatedFile.getParentFile());
+            }
+        }
+
+        try {
+            PrintWriter writer = new PrintWriter(new FileWriter(generatedFile, true));
+            try {
+                printHeader(writer);
+
+                Collection<File> problemClassSourceFiles = getProblemClassSourceFiles(getInputDirectory());
+                Iterator<File> problemClassSourceFileIterator = problemClassSourceFiles.iterator();
+                while (problemClassSourceFileIterator.hasNext()) {
+                    File problemClassSourceFile = problemClassSourceFileIterator.next();
+                    printEntry(writer, problemClassSourceFile, !problemClassSourceFileIterator.hasNext());
+                }
+
+                printFooter(writer);
+            } finally {
+                writer.close();
+            }
+        } catch (IOException e) {
+            throw new MojoExecutionException("Caught Exception while trying to create output file: " + generatedFile);
+        }
+    }
+
+
+    protected void printHeader(PrintWriter writer) {
+        // Optional.
+    }
+
+    abstract protected void printEntry(PrintWriter writer, File source, boolean last);
+
+    protected void printFooter(PrintWriter writer) {
+        // Optional.
+    }
+
+    /**
+     * Recursively search a directory and its sub-directories for .class files.
+     * Use the file name to determine what equivalent class name should be
+     * available to the current classloader.
+     *
+     * @param dir - the directory to search
+     * @return list of source files found
+     */
+    protected Collection<File> getProblemClassSourceFiles(File dir)
+    {
+        Collection<File> problemFiles = FileUtils.listFiles(dir, new String[] { "java" }, true);
+        return Collections2.filter(problemFiles,
+                new Predicate<File>() {
+                    @Override
+                    public boolean apply(File input)
+                    {
+                        return isProblemClass(input);
+                    }
+                });
+    }
+
+    private boolean isProblemClass(File javaFile)
+    {
+        if (nonProblemClassesToFilter.contains(javaFile.getName()))
+            return false;
+        final String javaClassName = FilenameUtils.getBaseName(javaFile.getAbsolutePath());
+        try
+        {
+            Collection<String> lines =  Files.readLines(javaFile, Charset.forName("UTF8"));
+            for (String line : lines)
+            {
+                if (line.matches("^\\s*public\\s+final\\s+class\\s+" + javaClassName + "\\s+extends\\s+.*"))
+                    return true;
+                if (line.matches("^\\s*final\\s+public\\s+class\\s+" + javaClassName + "\\s+extends\\s+.*"))
+                    return true;
+                if (line.matches("^\\s*public\\s+class\\s+" + javaClassName + "\\s+extends\\s+.*"))
+                    return true;
+            }
+            return false;
+        }
+        catch (IOException e)
+        {
+            return false;
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/ProblemEnumGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/ProblemEnumGeneratorMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/ProblemEnumGeneratorMojo.java
new file mode 100644
index 0000000..d3acb6a
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/ProblemEnumGeneratorMojo.java
@@ -0,0 +1,152 @@
+package org.apache.flex.compiler.tools.problems;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+
+import java.io.File;
+import java.io.PrintWriter;
+
+/**
+ * Goal which touches a timestamp file.
+ */
+@Mojo(name="generate-problems-enum",defaultPhase = LifecyclePhase.GENERATE_SOURCES)
+public class ProblemEnumGeneratorMojo
+    extends BaseProblemGeneratorMojo
+{
+    @Parameter(defaultValue="${project.basedir}/src/main/java/org/apache/flex/compiler/problems",
+            property="inputDir", required=true)
+    private File inputDirectory;
+
+    @Parameter(defaultValue="${project.build.directory}/generated-sources/build-tools",
+            property="outputDir", required=true)
+    private File outputDirectory;
+
+    @Parameter(defaultValue="org/apache/flex/compiler/problems/ProblemID.java",
+            property="outputFile", required=true)
+    private String outputFile;
+
+    @Parameter(defaultValue="${project}")
+    private MavenProject project;
+
+    @Override
+    protected File getInputDirectory() {
+        return inputDirectory;
+    }
+
+    @Override
+    protected File getOutputDirectory() {
+        return outputDirectory;
+    }
+
+    @Override
+    protected String getOutputFile() {
+        return outputFile;
+    }
+
+    @Override
+    public void execute() throws MojoExecutionException {
+        super.execute();
+
+        // Add the output directory to the source path.
+        project.addCompileSourceRoot(outputDirectory.getPath());
+    }
+
+    @Override
+    protected void printHeader(PrintWriter writer) {
+        writer.println("/*");
+        writer.println(" *  Licensed to the Apache Software Foundation (ASF) under one or more");
+        writer.println(" *  contributor license agreements.  See the NOTICE file distributed with");
+        writer.println(" *  this work for additional information regarding copyright ownership.");
+        writer.println(" *  The ASF licenses this file to You under the Apache License, Version 2.0");
+        writer.println(" *  (the \"License\"); you may not use this file except in compliance with");
+        writer.println(" *  the License.  You may obtain a copy of the License at");
+        writer.println();
+        writer.println(" *      http://www.apache.org/licenses/LICENSE-2.0");
+        writer.println();
+        writer.println(" *  Unless required by applicable law or agreed to in writing, software");
+        writer.println(" *  distributed under the License is distributed on an \"AS IS\" BASIS,");
+        writer.println(" *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.");
+        writer.println(" *  See the License for the specific language governing permissions and");
+        writer.println(" *  limitations under the License.");
+        writer.println(" */");
+        writer.println();
+        writer.println("package org.apache.flex.compiler.problems;");
+        writer.println();
+        writer.println("import java.util.EnumSet;");
+        writer.println("import com.google.common.collect.ImmutableMap;");
+        writer.println();
+        writer.println("public enum ProblemID");
+        writer.println("{");
+    }
+
+    @Override
+    protected void printEntry(PrintWriter writer, File source, boolean last) {
+        writer.println("    " + getProblemEnumEntry(source.getName()) + (last ? ";" : ","));
+    }
+
+    @Override
+    protected void printFooter(PrintWriter writer) {
+        writer.println();
+        writer.println("    private ProblemID(Class<? extends CompilerProblem> problemClass)");
+        writer.println("    {");
+        writer.println("        this.problemClass = problemClass;");
+        writer.println("    }");
+        writer.println();
+        writer.println("    private final Class<? extends CompilerProblem> problemClass;");
+        writer.println("    public final Class<? extends CompilerProblem> getProblemClass()");
+        writer.println("    {");
+        writer.println("        return problemClass;");
+        writer.println("    }");
+        writer.println();
+        writer.println("    public static final ProblemID getID(ICompilerProblem problem)");
+        writer.println("    {");
+        writer.println("        final CompilerProblem problemImpl = (CompilerProblem)problem;");
+        writer.println("        return classToIDMap.get(problemImpl.getClass());");
+        writer.println("    }");
+        writer.println();
+        writer.println("    public static final ProblemID getID(Class<?> problemClass)");
+        writer.println("    {");
+        writer.println("        return classToIDMap.get(problemClass);");
+        writer.println("    }");
+        writer.println();
+        writer.println("    private static final ImmutableMap<Class<? extends CompilerProblem>, ProblemID> classToIDMap = createClassToIDMap();");
+        writer.println("    private static ImmutableMap<Class<? extends CompilerProblem>, ProblemID> createClassToIDMap()");
+        writer.println("    {");
+        writer.println("        final ImmutableMap.Builder<Class<? extends CompilerProblem>, ProblemID> builder = new ImmutableMap.Builder<Class<? extends CompilerProblem>, ProblemID>();");
+        writer.println("        for (ProblemID id : EnumSet.allOf(ProblemID.class))");
+        writer.println("            builder.put(id.getProblemClass(), id);");
+        writer.println("        return builder.build();");
+        writer.println("    }");
+        writer.println("}");
+    }
+
+    private static String getProblemEnumEntry(String problemClassName) {
+        String problemTypeName = problemClassName.substring(0, problemClassName.length() - "class".length());
+        String enumConstantName = getEnumName(problemTypeName.replaceAll("Problem$", ""));
+        return enumConstantName + "(" + problemTypeName + ".class" + ")";
+    }
+
+    private static String getEnumName(String problemTypeName) {
+        return "PROBLEM_" + problemTypeName;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/ProblemResourceBundleGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/ProblemResourceBundleGeneratorMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/ProblemResourceBundleGeneratorMojo.java
new file mode 100644
index 0000000..be1b467
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/problems/ProblemResourceBundleGeneratorMojo.java
@@ -0,0 +1,101 @@
+package org.apache.flex.compiler.tools.problems;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+
+import java.io.*;
+
+/**
+ * Goal which touches a timestamp file.
+ */
+@Mojo(name="generate-problems-resource-bundle",defaultPhase = LifecyclePhase.PROCESS_RESOURCES)
+public class ProblemResourceBundleGeneratorMojo
+    extends BaseProblemGeneratorMojo
+{
+    @Parameter(defaultValue="${project.basedir}/src/main/java/org/apache/flex/compiler/problems",
+            property="inputDir", required=true)
+    private File inputDirectory;
+
+    @Parameter(defaultValue="${project.build.directory}/classes/org/apache/flex/compiler",
+            property="outputDir", required=true)
+    private File outputDirectory;
+
+    @Parameter(defaultValue="messages_en.properties",
+            property="outputFile", required=true)
+    private String outputFile;
+
+    @Parameter(defaultValue="${project}")
+    private MavenProject project;
+
+    @Override
+    protected File getInputDirectory() {
+        return inputDirectory;
+    }
+
+    @Override
+    protected File getOutputDirectory() {
+        return outputDirectory;
+    }
+
+    @Override
+    protected String getOutputFile() {
+        return outputFile;
+    }
+
+    @Override
+    protected void printEntry(PrintWriter writer, File source, boolean last) {
+        writer.println(getProblemName(source) + "=" + getProblemDescription(source));
+    }
+
+    private String getProblemName(File sourceFile) {
+        String fileName = sourceFile.getName();
+        return fileName.substring(0, fileName.length() - "class".length());
+    }
+
+    private String getProblemDescription(File sourceFile) {
+        try {
+            BufferedReader sourceFileReader = new BufferedReader(new FileReader(sourceFile));
+            String line;
+            StringBuilder sb = null;
+            while((line = sourceFileReader.readLine()) != null) {
+                if(line.contains("DESCRIPTION")) {
+                    sb = new StringBuilder();
+                }
+                if(sb != null) {
+                    sb.append(line);
+                    if(line.trim().endsWith(";")) {
+                        break;
+                    }
+                }
+            }
+            if(sb != null) {
+                line = sb.toString();
+                return line.substring(line.indexOf("\"") + 1, line.lastIndexOf("\""));
+            }
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/unpack/UnpackResourceMojo.java
----------------------------------------------------------------------
diff --git a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/unpack/UnpackResourceMojo.java b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/unpack/UnpackResourceMojo.java
new file mode 100644
index 0000000..aa5ac4f
--- /dev/null
+++ b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/unpack/UnpackResourceMojo.java
@@ -0,0 +1,100 @@
+package org.apache.flex.compiler.tools.unpack;
+
+import org.apache.commons.compress.archivers.ArchiveEntry;
+import org.apache.commons.compress.archivers.ArchiveException;
+import org.apache.commons.compress.archivers.ArchiveInputStream;
+import org.apache.commons.compress.archivers.ArchiveStreamFactory;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import java.io.*;
+
+/**
+ * Created by christoferdutz on 18.03.16.
+ */
+@Mojo(name="unpack-resources",defaultPhase = LifecyclePhase.GENERATE_SOURCES)
+public class UnpackResourceMojo
+        extends AbstractMojo {
+
+    private static final int KILOBYTE = 1024;
+    private static final int MEGABYTE = KILOBYTE * 1024;
+    private static final int BUFFER_MAX = MEGABYTE;
+
+    @Parameter(required = true)
+    private String resource;
+
+    @Parameter(defaultValue="${project.build.directory}/downloads")
+    private File targetDirectory;
+
+    @Override
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        InputStream is = getClass().getClassLoader().getResourceAsStream(resource);
+        if(is == null) {
+            throw new MojoExecutionException("Could not find resource " + resource);
+        }
+
+        if(!targetDirectory.exists() && !targetDirectory.mkdirs()) {
+            throw new MojoExecutionException("Could not create output directory " + targetDirectory.getPath());
+        }
+
+        final byte[] data = new byte[BUFFER_MAX];
+        ArchiveInputStream archiveInputStream = null;
+        ArchiveEntry entry;
+        try {
+            archiveInputStream = new ArchiveStreamFactory().createArchiveInputStream(
+                    new BufferedInputStream(is));
+
+            while ((entry = archiveInputStream.getNextEntry()) != null) {
+                final File outputFile = new File(targetDirectory, entry.getName());
+
+                // Entry is a directory.
+                if (entry.isDirectory()) {
+                    if (!outputFile.exists()) {
+                        if(!outputFile.mkdirs()) {
+                            throw new MojoExecutionException(
+                                    "Could not create output directory " + outputFile.getAbsolutePath());
+                        }
+                    }
+                }
+
+                // Entry is a file.
+                else {
+                    final FileOutputStream fos = new FileOutputStream(outputFile);
+                    BufferedOutputStream dest = null;
+                    try {
+                        dest = new BufferedOutputStream(fos, BUFFER_MAX);
+
+                        int count;
+                        while ((count = archiveInputStream.read(data, 0, BUFFER_MAX)) != -1) {
+                            dest.write(data, 0, count);
+                        }
+                    } finally {
+                        if(dest != null) {
+                            dest.flush();
+                            dest.close();
+                        }
+                    }
+                }
+            }
+        } catch (FileNotFoundException e) {
+            throw new MojoExecutionException("Error unpacking resources", e);
+        } catch (IOException e) {
+            throw new MojoExecutionException("Error unpacking resources", e);
+        } catch (ArchiveException e) {
+            throw new MojoExecutionException("Error unpacking resources", e);
+        } finally {
+            if(archiveInputStream != null) {
+                try {
+                    archiveInputStream.close();
+                } catch(Exception e) {
+                    // Ignore...
+                }
+            }
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler.jx/pom.xml
----------------------------------------------------------------------
diff --git a/compiler.jx/pom.xml b/compiler.jx/pom.xml
index 0b90a3c..e1f748e 100644
--- a/compiler.jx/pom.xml
+++ b/compiler.jx/pom.xml
@@ -94,7 +94,7 @@
         <dependency>
             <groupId>com.google.javascript</groupId>
             <artifactId>closure-compiler</artifactId>
-            <version>v20150609</version>
+            <version>v20151015</version>
         </dependency>
         <dependency>
             <groupId>org.clojure</groupId>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/compiler/pom.xml
----------------------------------------------------------------------
diff --git a/compiler/pom.xml b/compiler/pom.xml
index a2ee9b6..84b6cab 100644
--- a/compiler/pom.xml
+++ b/compiler/pom.xml
@@ -408,7 +408,7 @@
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
-            <version>17.0</version>
+            <version>18.0</version>
         </dependency>
         <dependency>
             <groupId>net.sourceforge.jburg</groupId>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/GCL/pom.xml
----------------------------------------------------------------------
diff --git a/externs/GCL/pom.xml b/externs/GCL/pom.xml
new file mode 100644
index 0000000..6fae9b2
--- /dev/null
+++ b/externs/GCL/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>flex-compiler-externs</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-externs-gcl</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Externs: GCL</name>
+
+    <build>
+        <plugins>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/GCL/src/main/config/compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/GCL/src/main/config/compile-config.xml b/externs/GCL/src/main/config/compile-config.xml
new file mode 100644
index 0000000..715ef39
--- /dev/null
+++ b/externs/GCL/src/main/config/compile-config.xml
@@ -0,0 +1,103 @@
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+	  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+
+        <accessible>true</accessible>
+
+        <!--
+        <external-library-path>
+            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
+            <path-element>../../libs/framework.swc</path-element>
+            <path-element>../../libs/mx/mx.swc</path-element>
+            <path-element>../../libs/osmf.swc</path-element>
+            <path-element>../../libs/textLayout.swc</path-element>
+        </external-library-path>
+
+        <keep-as3-metadata>
+            <name>SkinPart</name>
+        </keep-as3-metadata>
+
+        <mxml>
+            <minimum-supported-version>4.0.0</minimum-supported-version>
+        </mxml>
+
+        <locale/>
+
+        <library-path/>
+
+        <namespaces>
+            <namespace>
+                <uri>library://ns.adobe.com/flex/spark</uri>
+                <manifest>manifest.xml</manifest>
+            </namespace>
+        </namespaces>
+        -->
+
+        <external-library-path>
+            <path-element>../js/out/bin/js.swc</path-element>
+        </external-library-path>
+        
+        <source-path>
+            <path-element>src</path-element>
+            <!--<path-element>out/as/classes</path-element>
+            <path-element>out/as/interfaces</path-element>
+            <path-element>out/as/constants</path-element>
+            <path-element>out/as/functions</path-element>
+            <path-element>out/as/interfaces</path-element>
+            <path-element>out/as/typedefs</path-element>-->
+        </source-path>
+
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+
+    <include-sources>
+            <path-element>src</path-element>
+        <!--<path-element>out/as/classes</path-element>
+        <path-element>out/as/interfaces</path-element>
+        <path-element>out/as/constants</path-element>
+        <path-element>out/as/functions</path-element>
+        <path-element>out/as/interfaces</path-element>
+        <path-element>out/as/typedefs</path-element>-->
+    </include-sources>
+
+    <!--
+    <include-file>
+        <name>defaults.css</name>
+        <path>defaults.css</path>
+    </include-file>
+    <include-file>
+        <name>assets/ErrorIndicator.png</name>
+        <path>assets/ErrorIndicator.png</path>
+    </include-file>
+    <include-file>
+        <name>assets/RequiredIndicator.png</name>
+        <path>assets/RequiredIndicator.png</path>
+    </include-file>
+
+    <include-namespaces>
+        <uri>library://ns.adobe.com/flex/spark</uri>
+    </include-namespaces>
+
+    <resource-bundle-list>bundles.properties</resource-bundle-list>
+
+    <target-player>${playerglobal.version}</target-player>
+     -->
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/cordova/pom.xml
----------------------------------------------------------------------
diff --git a/externs/cordova/pom.xml b/externs/cordova/pom.xml
new file mode 100644
index 0000000..9ccad91
--- /dev/null
+++ b/externs/cordova/pom.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>flex-compiler-externs</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-externs-cordova</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Externs: Cordova</name>
+
+    <properties>
+        <cordova.version>4.11</cordova.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.flex.flexjs.compiler</groupId>
+                <artifactId>externc-maven-plugin</artifactId>
+                <version>0.6.0-SNAPSHOT</version>
+                <executions>
+                    <execution>
+                        <id>generate</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>compile</id>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/cordova/src/main/config/compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/cordova/src/main/config/compile-config.xml b/externs/cordova/src/main/config/compile-config.xml
new file mode 100644
index 0000000..5499e36
--- /dev/null
+++ b/externs/cordova/src/main/config/compile-config.xml
@@ -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.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+		
+        <external-library-path>
+            <!--path-element>../js/out/bin/js.swc</path-element-->
+        </external-library-path>
+		
+        <source-path>
+            <path-element>../../../target/generated-sources/externc/constants</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <include-sources>
+        <path-element>../../../target/generated-sources/externc/constants</path-element>
+    </include-sources>
+
+    <include-file>
+        <name>externs/cordova_file_plugin-4-11.js</name>
+        <path>../javascript/cordova_file_plugin-4-11.js</path>
+    </include-file>
+
+</flex-config>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dec07727/externs/cordova/src/main/config/generate-config.xml
----------------------------------------------------------------------
diff --git a/externs/cordova/src/main/config/generate-config.xml b/externs/cordova/src/main/config/generate-config.xml
new file mode 100644
index 0000000..f10016a
--- /dev/null
+++ b/externs/cordova/src/main/config/generate-config.xml
@@ -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</name></exclude> you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<flex-config>
+
+    <compiler>
+        <accessible>true</accessible>
+        
+        <locale/>
+        
+        <source-path>
+            <path-element>src/main/javascript</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+    </compiler>
+    
+    <external>
+        <path-element>../javascript/cordova_file_plugin-4-11.js</path-element>
+    </external>
+        
+    <as-root>../../../target/generated-sources/externc</as-root>
+
+</flex-config>