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 2014/11/23 13:26:38 UTC

[1/6] git commit: [flex-falcon] [refs/heads/develop] - - Made Falcon implement the flex-tool-api

Repository: flex-falcon
Updated Branches:
  refs/heads/develop 461873b1f -> 18b403c9c


- Made Falcon implement the flex-tool-api


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

Branch: refs/heads/develop
Commit: 7923ce9d7aa590380f0606ed4e1df15592db0543
Parents: 3011d63
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Mon Nov 10 10:25:28 2014 +0100
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Mon Nov 10 10:25:28 2014 +0100

----------------------------------------------------------------------
 compiler/downloads.xml                          | 14 +++++++
 .../org.apache.flex.tools.FlexToolGroup         |  1 +
 .../org/apache/flex/compiler/clients/COMPC.java | 15 +++++++-
 .../flex/compiler/clients/FalconToolGroup.java  | 39 ++++++++++++++++++++
 .../org/apache/flex/compiler/clients/MXMLC.java | 16 +++++++-
 .../apache/flex/compiler/clients/Optimizer.java | 12 +++++-
 6 files changed, 92 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7923ce9d/compiler/downloads.xml
----------------------------------------------------------------------
diff --git a/compiler/downloads.xml b/compiler/downloads.xml
index 28f1fd9..60b7f07 100644
--- a/compiler/downloads.xml
+++ b/compiler/downloads.xml
@@ -216,6 +216,20 @@
       <param name="dest.filename" value="${lzma.name}-sdk.jar"/>
       <param name="license.use.url" value="http://www.7-zip.org/sdk.html"/>
     </antcall>
+
+      <!--  flex-tool-api -->
+      <property name="flexToolApi.name" value="flex-tool-api"/>
+      <property name="flexToolApi.version" value="1.0.0-SNAPSHOT"/>
+      <antcall target="download-dependency">
+          <param name="name" value="${flexToolApi.name}"/>
+          <param name="src.server" value="http://repository.apache.org/content/groups/snapshots"/>
+          <param name="src.folder" value="org/apache/flex/flex-tool-api/${flexToolApi.version}"/>
+          <param name="src.filename" value="flex-tool-api-1.0.0-20141105.140704-1.jar"/>
+          <param name="src.checksum" value="b37c99011d06e1ff794d8ee9153ab2c4"/>
+          <param name="dest.folder" value=""/>
+          <param name="dest.filename" value="${flexToolApi.name}.jar"/>
+          <param name="license.use.apache" value="true"/>
+      </antcall>
   </target>
 
   <target name="maven-related" description="Downloads and copies all dependencies to the lib directory.">

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7923ce9d/compiler/src/META-INF/services/org.apache.flex.tools.FlexToolGroup
----------------------------------------------------------------------
diff --git a/compiler/src/META-INF/services/org.apache.flex.tools.FlexToolGroup b/compiler/src/META-INF/services/org.apache.flex.tools.FlexToolGroup
new file mode 100644
index 0000000..1a8af6d
--- /dev/null
+++ b/compiler/src/META-INF/services/org.apache.flex.tools.FlexToolGroup
@@ -0,0 +1 @@
+org.apache.flex.compiler.clients.FalconToolGroup
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7923ce9d/compiler/src/org/apache/flex/compiler/clients/COMPC.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/clients/COMPC.java b/compiler/src/org/apache/flex/compiler/clients/COMPC.java
index 6216855..af55eac 100644
--- a/compiler/src/org/apache/flex/compiler/clients/COMPC.java
+++ b/compiler/src/org/apache/flex/compiler/clients/COMPC.java
@@ -43,6 +43,7 @@ import org.apache.flex.swc.io.ISWCWriter;
 import org.apache.flex.swc.io.SWCDirectoryWriter;
 import org.apache.flex.swc.io.SWCWriter;
 import org.apache.flex.swf.io.SizeReportWritingSWFWriter;
+import org.apache.flex.tools.FlexTool;
 import org.apache.flex.utils.FilenameNormalization;
 
 /**
@@ -51,7 +52,7 @@ import org.apache.flex.utils.FilenameNormalization;
  * This class is a quick start of component compiler. It depends on most of the
  * functionalities developed for mxmlc.
  */
-public class COMPC extends MXMLC
+public class COMPC extends MXMLC implements FlexTool
 {
     /**
      * Entry point for <code>compc</code> tool.
@@ -75,7 +76,17 @@ public class COMPC extends MXMLC
         final COMPC compc = new COMPC();
         return compc.mainNoExit(args);
     }
-    
+
+    @Override
+    public String getName() {
+        return "COMPC";
+    }
+
+    @Override
+    public int execute(String[] args) {
+        return mainNoExit(args);
+    }
+
     /**
      * Console message describing the size and location of the created 
      * SWC file.

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7923ce9d/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java b/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
new file mode 100644
index 0000000..3185155
--- /dev/null
+++ b/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
@@ -0,0 +1,39 @@
+package org.apache.flex.compiler.clients;
+
+import org.apache.flex.tools.FlexTool;
+import org.apache.flex.tools.FlexToolGroup;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * FlexToolGroup exposing the implementations of the Falcon compilers tools.
+ */
+public class FalconToolGroup implements FlexToolGroup {
+
+    Map<String, FlexTool> tools;
+
+    public FalconToolGroup() {
+        tools = new HashMap<String, FlexTool>();
+        tools.put("COMPC", new COMPC());
+        tools.put("MXMLC", new MXMLC());
+        tools.put("OPTIMIZER", new Optimizer());
+    }
+
+    @Override
+    public String getName() {
+        return "Falcon";
+    }
+
+    @Override
+    public Collection<String> getFlexToolNames() {
+        return tools.keySet();
+    }
+
+    @Override
+    public FlexTool getFlexTool(String toolName) {
+        return tools.get(toolName);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7923ce9d/compiler/src/org/apache/flex/compiler/clients/MXMLC.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/clients/MXMLC.java b/compiler/src/org/apache/flex/compiler/clients/MXMLC.java
index c10d826..2b7e97b 100644
--- a/compiler/src/org/apache/flex/compiler/clients/MXMLC.java
+++ b/compiler/src/org/apache/flex/compiler/clients/MXMLC.java
@@ -89,6 +89,7 @@ import org.apache.flex.swf.Header;
 import org.apache.flex.swf.ISWF;
 import org.apache.flex.swf.io.ISWFWriter;
 import org.apache.flex.swf.io.SizeReportWritingSWFWriter;
+import org.apache.flex.tools.FlexTool;
 import org.apache.flex.utils.FilenameNormalization;
 
 import com.google.common.base.Function;
@@ -101,7 +102,7 @@ import com.google.common.collect.Lists;
 /**
  * The entry-point class for mxmlc.
  */
-public class MXMLC
+public class MXMLC implements FlexTool
 {
     static final String NEWLINE = System.getProperty("line.separator");
     private static final String SWF_EXT = ".swf";
@@ -173,7 +174,18 @@ public class MXMLC
                code == ExitCode.FAILED_WITH_EXCEPTIONS.getCode() ||
                code == ExitCode.FAILED_WITH_CONFIG_ERRORS.getCode();
     }
-    
+
+    @Override
+    public String getName() {
+        return "MXMLC";
+    }
+
+    @Override
+    public int execute(String[] args) {
+        return mainNoExit(args);
+    }
+
+
     /**
      * Entry point for when you already have an MXMLC instance.
      * This is for unit testing.

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7923ce9d/compiler/src/org/apache/flex/compiler/clients/Optimizer.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/clients/Optimizer.java b/compiler/src/org/apache/flex/compiler/clients/Optimizer.java
index 9fadf6d..1566cf5 100644
--- a/compiler/src/org/apache/flex/compiler/clients/Optimizer.java
+++ b/compiler/src/org/apache/flex/compiler/clients/Optimizer.java
@@ -69,12 +69,13 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.flex.tools.FlexTool;
 
 /**
  * Command line optimizer - can read in a swf, apply the optimizations usually done during swf linking,
  * and write out the swf again.
  */
-public class Optimizer
+public class Optimizer implements FlexTool
 {
     static final String NEWLINE = System.getProperty("line.separator");
     private static final String DEFAULT_VAR = "input";
@@ -98,6 +99,15 @@ public class Optimizer
         return optimizer.mainNoExit(args);
     }
 
+    @Override
+    public String getName() {
+        return "OPTIMIZER";
+    }
+
+    @Override
+    public int execute(String[] args) {
+        return mainNoExit(args);
+    }
 
     public int mainNoExit(final String[] args)
     {


[5/6] git commit: [flex-falcon] [refs/heads/develop] - - Adjusted the build to use the released version of the flex-tool-api - Had to disable support for VF2JS as both compilers use the same base classes and overwrite each others static state variables.

Posted by cd...@apache.org.
- Adjusted the build to use the released version of the flex-tool-api
- Had to disable support for VF2JS as both compilers use the same base classes and overwrite each others static state variables.
- Added code to dump the content of a jar to a given directory (Needed in order to dump closure-library artifact)
- Made MXMLFlexJSPublisher and MXMLVF2JSPublisher dump the content of the closure-library if the library-path is not set and closure resources are available on the classpath.


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

Branch: refs/heads/develop
Commit: e92a0e9c11fea71ff3d96395b80a9fe8a0aa37bd
Parents: 8dec674
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Sun Nov 23 12:37:51 2014 +0100
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Sun Nov 23 12:37:51 2014 +0100

----------------------------------------------------------------------
 compiler.jx/downloads.xml                       |  26 ++--
 .../apache/flex/compiler/clients/COMPJSC.java   |   2 +-
 .../flex/compiler/clients/FlexJSToolGroup.java  |   2 +-
 .../apache/flex/compiler/clients/MXMLJSC.java   | 103 +++++----------
 .../flex/compiler/clients/VF2JSToolGroup.java   |   6 +-
 .../codegen/js/goog/JSGoogPublisher.java        |  36 +++++-
 .../mxml/flexjs/MXMLFlexJSPublisher.java        | 125 +++++++++++++++----
 .../codegen/mxml/vf2js/MXMLVF2JSPublisher.java  |  83 ++++++++----
 .../driver/js/goog/JSGoogConfiguration.java     |   6 +-
 .../compiler/internal/graph/GoogDepsWriter.java |  58 ++++-----
 compiler/downloads.xml                          |  24 ++--
 .../org/apache/flex/compiler/clients/COMPC.java |   2 +-
 .../org/apache/flex/compiler/clients/MXMLC.java |   2 +-
 .../apache/flex/compiler/clients/Optimizer.java |   2 +-
 maven/falcon-jx-compiler.pom                    |   5 +
 15 files changed, 293 insertions(+), 189 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/downloads.xml
----------------------------------------------------------------------
diff --git a/compiler.jx/downloads.xml b/compiler.jx/downloads.xml
index dd64945..a14de7a 100644
--- a/compiler.jx/downloads.xml
+++ b/compiler.jx/downloads.xml
@@ -151,19 +151,19 @@
       <param name="dest.filename" value="${org.json.name}.jar"/>
     </antcall>
 
-      <!--  flex-tool-api -->
-      <property name="flexToolApi.name" value="flex-tool-api"/>
-      <property name="flexToolApi.version" value="1.0.0-SNAPSHOT"/>
-      <antcall target="download-dependency">
-          <param name="name" value="${flexToolApi.name}"/>
-          <param name="src.server" value="http://repository.apache.org/content/groups/snapshots"/>
-          <param name="src.folder" value="org/apache/flex/flex-tool-api/${flexToolApi.version}"/>
-          <param name="src.filename" value="flex-tool-api-1.0.0-20141105.140704-1.jar"/>
-          <param name="src.checksum" value="b37c99011d06e1ff794d8ee9153ab2c4"/>
-          <param name="dest.folder" value=""/>
-          <param name="dest.filename" value="${flexToolApi.name}.jar"/>
-          <param name="license.use.apache" value="true"/>
-      </antcall>
+    <!--  flex-tool-api -->
+    <property name="flexToolApi.name" value="flex-tool-api"/>
+    <property name="flexToolApi.version" value="1.0.0"/>
+    <antcall target="download-dependency">
+      <param name="name" value="${flexToolApi.name}"/>
+      <param name="src.server" value="${maven.search.url}"/>
+      <param name="src.folder" value="org/apache/flex/${flexToolApi.name}/${flexToolApi.version}"/>
+      <param name="src.filename" value="${flexToolApi.name}-${flexToolApi.version}.jar"/>
+      <param name="src.checksum" value="b8f76174b2c4d3b83e5c9fa78703c52b"/>
+      <param name="dest.folder" value=""/>
+      <param name="dest.filename" value="${flexToolApi.name}.jar"/>
+      <param name="license.use.apache" value="true"/>
+    </antcall>
   </target>
 
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java b/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java
index 068b2f3..5a953f8 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java
@@ -84,7 +84,7 @@ public class COMPJSC extends MXMLJSC implements FlexTool
 
     @Override
     public String getName() {
-        return "COMPC";
+        return FLEX_TOOL_COMPC;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java b/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
index 1f10aa7..f7c48be 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
@@ -30,7 +30,7 @@ public class FlexJSToolGroup extends AbstractFlexToolGroup {
     public FlexJSToolGroup() {
         super("FlexJS");
         addFlexTool(new COMPJSC(new MXMLFlexJSBackend()));
-        addFlexTool(new COMPJSC(new MXMLFlexJSBackend()));
+        addFlexTool(new MXMLJSC(new MXMLFlexJSBackend()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java b/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
index 2716aea..c968086 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
@@ -146,7 +146,7 @@ public class MXMLJSC implements FlexTool
 
     @Override
     public String getName() {
-        return "MXMLC";
+        return FLEX_TOOL_MXMLC;
     }
 
     @Override
@@ -288,29 +288,29 @@ public class MXMLJSC implements FlexTool
         {
             String[] adjustedArgs = args;
 
-            switch (jsOutputType)
-            {
-            case VF2JS:
-                boolean isFlashBuilderProject = useFlashBuilderProjectFiles(args);
+            if(jsOutputType != null) {
+                switch (jsOutputType) {
+                    case VF2JS:
+                        boolean isFlashBuilderProject = useFlashBuilderProjectFiles(args);
 
-                if (isFlashBuilderProject)
-                {
-                    adjustedArgs = FlashBuilderConfigurator
-                            .computeFlashBuilderArgs(adjustedArgs,
-                                    getTargetType().getExtension());
-                }
+                        if (isFlashBuilderProject) {
+                            adjustedArgs = FlashBuilderConfigurator
+                                    .computeFlashBuilderArgs(adjustedArgs,
+                                            getTargetType().getExtension());
+                        }
+
+                        //String projectFilePath = adjustedArgs[adjustedArgs.length - 1];
+                        //
+                        //String newProjectFilePath = VF2JSProjectUtils
+                        //        .createTempProject(projectFilePath,
+                        //                isFlashBuilderProject);
+                        //
+                        //adjustedArgs[adjustedArgs.length - 1] = newProjectFilePath;
 
-                //String projectFilePath = adjustedArgs[adjustedArgs.length - 1];
-                //
-                //String newProjectFilePath = VF2JSProjectUtils
-                //        .createTempProject(projectFilePath,
-                //                isFlashBuilderProject);
-                //
-                //adjustedArgs[adjustedArgs.length - 1] = newProjectFilePath;
-                
-                break;
-            default:
-                break;
+                        break;
+                    default:
+                        break;
+                }
             }
 
             final boolean continueCompilation = configure(adjustedArgs);
@@ -401,32 +401,17 @@ public class MXMLJSC implements FlexTool
                         return false;
                 }
 
-                switch (jsOutputType)
-                {
-                case FLEXJS: {
+                if(JSSharedData.backend instanceof MXMLFlexJSBackend) {
                     jsPublisher = new MXMLFlexJSPublisher(config, project);
-
-                    break;
-                }
-
-                case GOOG: {
-                    jsPublisher = new JSGoogPublisher(config);
-
-                    break;
                 }
-
-                case VF2JS: {
+                else if(JSSharedData.backend instanceof MXMLVF2JSBackend) {
                     jsPublisher = new MXMLVF2JSPublisher(config, project);
-
-                    break;
                 }
-                
-                case AMD:
-                default: {
-                    jsPublisher = new JSPublisher(config);
-
-                    break;
+                else if(JSSharedData.backend instanceof GoogBackend) {
+                    jsPublisher = new JSGoogPublisher(config);
                 }
+                else {
+                    jsPublisher = new JSPublisher(config);
                 }
 
                 File outputFolder = jsPublisher.getOutputFolder();
@@ -473,37 +458,11 @@ public class MXMLJSC implements FlexTool
                     }
                 }
 
-                switch (jsOutputType)
-                {
-                case AMD: {
-                    //
-
-                    break;
-                }
-
-                case FLEXJS: {
-                    //
-
-                    break;
-                }
-
-                case GOOG: {
-                    //
-
-                    break;
-                }
-
-                case VF2JS: {
-                    //
-
-                    break;
-                }
-                }
-
-                if (jsPublisher != null)
+                if (jsPublisher != null) {
                     compilationSuccess = jsPublisher.publish(problems);
-                else
+                } else {
                     compilationSuccess = true;
+                }
             }
         }
         catch (Exception e)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java b/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
index 12500da..3c72962 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
@@ -19,7 +19,7 @@
 
 package org.apache.flex.compiler.clients;
 
-import org.apache.flex.compiler.internal.driver.js.vf2js.VF2JSBackend;
+import org.apache.flex.compiler.internal.driver.mxml.vf2js.MXMLVF2JSBackend;
 import org.apache.flex.tools.AbstractFlexToolGroup;
 
 /**
@@ -29,8 +29,8 @@ public class VF2JSToolGroup extends AbstractFlexToolGroup {
 
     public VF2JSToolGroup() {
         super("VF2JS");
-        addFlexTool(new COMPJSC(new VF2JSBackend()));
-        addFlexTool(new COMPJSC(new VF2JSBackend()));
+//        addFlexTool(new COMPJSC(new MXMLVF2JSBackend()));
+//        addFlexTool(new MXMLJSC(new MXMLVF2JSBackend()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java
index 24e2f01..a37974e 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java
@@ -18,12 +18,13 @@
  */
 package org.apache.flex.compiler.internal.codegen.js.goog;
 
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
+import java.io.*;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Enumeration;
 import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
 
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.filefilter.DirectoryFileFilter;
@@ -264,6 +265,35 @@ public class JSGoogPublisher extends JSPublisher implements IJSPublisher
         fw.close();
     }
 
+
+    protected void dumpJar(File jarFile, File outputDir) throws IOException {
+        JarFile jar = new JarFile(jarFile);
+
+        for (Enumeration<JarEntry> jarEntries = jar.entries(); jarEntries.hasMoreElements();) {
+            JarEntry jarEntry = jarEntries.nextElement();
+            if (!jarEntry.getName().endsWith("/")) {
+                File file = new File(outputDir, jarEntry.getName());
+
+                // Check if the parent directory exists. If not -> create it.
+                File dir = file.getParentFile();
+                if(!dir.exists()) {
+                    if (!dir.mkdirs()) {
+                        throw new IOException("Unable to create directory " + dir.getAbsolutePath());
+                    }
+                }
+
+                // Dump the file.
+                InputStream is = jar.getInputStream(jarEntry);
+                FileOutputStream fos = new FileOutputStream(file);
+                while (is.available() > 0) {
+                    fos.write(is.read());
+                }
+                fos.close();
+                is.close();
+            }
+        }
+    }
+
     public class JSGoogErrorManager implements ErrorManager
     {
         @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
index dff5d23..9378b3d 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
@@ -23,6 +23,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -77,8 +78,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
 
         this.isMarmotinniRun = ((JSGoogConfiguration) configuration)
                 .getMarmotinni() != null;
-        this.outputPathParameter = ((JSGoogConfiguration) configuration)
-                .getOutput();
+        this.outputPathParameter = configuration.getOutput();
         this.useStrictPublishing = ((JSGoogConfiguration) configuration)
                 .getStrictPublish();
 
@@ -133,7 +133,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
     @Override
     public boolean publish(ProblemQuery problems) throws IOException
     {
-        boolean ok = true;
+        boolean ok;
         boolean subsetGoog = true;
         
         final String intermediateDirPath = outputFolder.getPath();
@@ -151,14 +151,94 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
 
         if (!isMarmotinniRun)
         {
-            if (releaseDir.exists())
+            if (releaseDir.exists()) {
                 org.apache.commons.io.FileUtils.deleteQuietly(releaseDir);
+            }
+
+            if(!releaseDir.mkdirs()) {
+                throw new IOException(
+                        "Unable to create release directory at " + releaseDir.getAbsolutePath());
+            }
+        }
+
+        // If the closure-lib parameter is empty we'll try to find the resources
+        // in the classpath, dump its content to the output directory and use this
+        // as closure-lib parameter.
+        final String closureLibDirPath;
+        if(((JSGoogConfiguration) configuration).isClosureLibSet()) {
+            closureLibDirPath = ((JSGoogConfiguration) configuration).getClosureLib();
+        } else {
+            // Check if the "goog/deps.js" is available in the classpath.
+            URL resource = Thread.currentThread().getContextClassLoader().getResource("goog/deps.js");
+            if(resource != null) {
+                File closureLibDir = new File(intermediateDir.getParent(), "closure");
+
+                // Only create and dump the content, if the directory does not exists.
+                if(!closureLibDir.exists()) {
+                    if(!closureLibDir.mkdirs()) {
+                        throw new IOException(
+                                "Unable to create directory for closure-lib at " + closureLibDir.getAbsolutePath());
+                    }
+
+                    // Strip the url of the parts we don't need.
+                    // Unless we are not using some insanely complex setup
+                    // the resource will always be on the same machine.
+                    String resourceJarPath = resource.getFile();
+                    if(resourceJarPath.contains(":")) {
+                        resourceJarPath = resourceJarPath.substring(resourceJarPath.lastIndexOf(":") + 1);
+                    }
+                    if(resourceJarPath.contains("!")) {
+                        resourceJarPath = resourceJarPath.substring(0, resourceJarPath.indexOf("!"));
+                    }
+                    File resourceJar = new File(resourceJarPath);
 
-            releaseDir.mkdirs();
+                    // Dump the closure lib from classpath.
+                    dumpJar(resourceJar, closureLibDir);
+                }
+                // The compiler automatically adds a "closure" to the lib dir path,
+                // so we omit this here.
+                closureLibDirPath = intermediateDir.getParentFile().getPath();
+            }
+            // Fallback to the default.
+            else {
+                closureLibDirPath = ((JSGoogConfiguration) configuration).getClosureLib();
+            }
+        }
+
+        // Dump FlexJS to the target directory.
+        String flexJsLibDirPath;
+        // Check if the "FlexJS/src/createjs_externals.js" is available in the classpath.
+        URL resource = Thread.currentThread().getContextClassLoader().getResource("FlexJS/src/createjs_externals.js");
+        if(resource != null) {
+            File flexJsLibDir = new File(intermediateDir.getParent(), "flexjs");
+
+            // Only create and dump the content, if the directory does not exists.
+            if(!flexJsLibDir.exists()) {
+                if(!flexJsLibDir.mkdirs()) {
+                    throw new IOException(
+                            "Unable to create directory for flexjs-lib at " + flexJsLibDir.getAbsolutePath());
+                }
+
+                // Strip the url of the parts we don't need.
+                // Unless we are not using some insanely complex setup
+                // the resource will always be on the same machine.
+                String resourceJarPath = resource.getFile();
+                if(resourceJarPath.contains(":")) {
+                    resourceJarPath = resourceJarPath.substring(resourceJarPath.lastIndexOf(":") + 1);
+                }
+                if(resourceJarPath.contains("!")) {
+                    resourceJarPath = resourceJarPath.substring(0, resourceJarPath.indexOf("!"));
+                }
+                File resourceJar = new File(resourceJarPath);
+
+                // Dump the closure lib from classpath.
+                dumpJar(resourceJar, flexJsLibDir);
+            }
+            // The compiler automatically adds a "closure" to the lib dir path,
+            // so we omit this here.
+            flexJsLibDirPath = intermediateDir.getParentFile().getPath();
         }
 
-        final String closureLibDirPath = ((JSGoogConfiguration) configuration)
-                .getClosureLib();
         final String closureGoogSrcLibDirPath = closureLibDirPath
                 + "/closure/goog/";
         final String closureGoogTgtLibDirPath = intermediateDirPath
@@ -258,7 +338,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
                 Collections.sort(subsetdeps, new DependencyLineComparator());
                 for (DependencyRecord subsetdeprec : subsetdeps)
                 {
-                    sb.append(subsetdeprec.line + "\n");
+                    sb.append(subsetdeprec.line).append("\n");
                 }
                 writeFile(depsTgtFilePath, sb.toString() + depsFileData.toString(), false);
                 // copy the required files
@@ -341,8 +421,9 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
         if (!isMarmotinniRun)
         {
             String allDeps = "";
-            if (!subsetGoog)
+            if (!subsetGoog) {
                 allDeps += FileUtils.readFileToString(srcDeps);
+            }
             allDeps += FileUtils.readFileToString(new File(depsTgtFilePath));
             
             FileUtils.writeStringToFile(srcDeps, allDeps);
@@ -361,8 +442,9 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
     private void addDeps(ArrayList<DependencyRecord> subsetdeps, HashMap<String, String> gotgoog, 
                             HashMap<String, DependencyRecord> defmap, String deps)
     {
-        if (deps.length() == 0)
+        if (deps.length() == 0) {
             return;
+        }
         
         String[] deplist = deps.split(",");
         for (String dep : deplist)
@@ -382,15 +464,8 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
     private void appendExportSymbol(String path, String projectName)
             throws IOException
     {
-        StringBuilder appendString = new StringBuilder();
-        appendString
-                .append("\n\n// Ensures the symbol will be visible after compiler renaming.\n");
-        appendString.append("goog.exportSymbol('");
-        appendString.append(projectName);
-        appendString.append("', ");
-        appendString.append(projectName);
-        appendString.append(");\n");
-        writeFile(path, appendString.toString(), true);
+        writeFile(path, "\n\n// Ensures the symbol will be visible after compiler renaming.\n" +
+                "goog.exportSymbol('" + projectName + "', " + projectName + ");\n", true);
     }
 
     private void appendEncodedCSS(String path, String projectName)
@@ -456,13 +531,12 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
         htmlFile.append("<head>\n");
         htmlFile.append("\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n");
         htmlFile.append("\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n");
-        htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\" href=\""
-                + projectName + ".css\">\n");
+        htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\" href=\"").append(projectName).append(".css\">\n");
 
         for (String s : additionalHTML)
-            htmlFile.append(s + "\n");
+            htmlFile.append(s).append("\n");
         
-        if (type == "intermediate")
+        if ("intermediate".equals(type))
         {
             htmlFile.append("\t<script type=\"text/javascript\" src=\"./library/closure/goog/base.js\"></script>\n");
             htmlFile.append("\t<script type=\"text/javascript\">\n");
@@ -496,10 +570,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
     private void writeCSS(String projectName, String dirPath)
             throws IOException
     {
-        StringBuilder cssFile = new StringBuilder();
-        cssFile.append(project.cssDocument);
-
         writeFile(dirPath + File.separator + projectName + ".css",
-                cssFile.toString(), false);
+                project.cssDocument, false);
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/MXMLVF2JSPublisher.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/MXMLVF2JSPublisher.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/MXMLVF2JSPublisher.java
index 3c44bd0..7a01109 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/MXMLVF2JSPublisher.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/MXMLVF2JSPublisher.java
@@ -18,18 +18,9 @@
  */
 package org.apache.flex.compiler.internal.codegen.mxml.vf2js;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Scanner;
+import java.io.*;
+import java.net.URL;
+import java.util.*;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
@@ -77,8 +68,7 @@ public class MXMLVF2JSPublisher extends JSGoogPublisher implements
 
         this.isMarmotinniRun = ((JSGoogConfiguration) configuration)
                 .getMarmotinni() != null;
-        this.outputPathParameter = ((JSGoogConfiguration) configuration)
-                .getOutput();
+        this.outputPathParameter = configuration.getOutput();
         this.useStrictPublishing = ((JSGoogConfiguration) configuration)
                 .getStrictPublish();
 
@@ -133,7 +123,7 @@ public class MXMLVF2JSPublisher extends JSGoogPublisher implements
     @Override
     public boolean publish(ProblemQuery problems) throws IOException
     {
-        boolean ok = true;
+        boolean ok;
         boolean subsetGoog = true;
         
         final String intermediateDirPath = outputFolder.getPath();
@@ -157,8 +147,50 @@ public class MXMLVF2JSPublisher extends JSGoogPublisher implements
             releaseDir.mkdirs();
         }
 
-        final String closureLibDirPath = ((JSGoogConfiguration) configuration)
-                .getClosureLib();
+        // If the closure-lib parameter is empty we'll try to find the resources
+        // in the classpath, dump its content to the output directory and use this
+        // as closure-lib parameter.
+        final String closureLibDirPath;
+        if(((JSGoogConfiguration) configuration).isClosureLibSet()) {
+            closureLibDirPath = ((JSGoogConfiguration) configuration).getClosureLib();
+        } else {
+            // Check if the "goog/deps.js" is available in the classpath.
+            URL resource = Thread.currentThread().getContextClassLoader().getResource("goog/deps.js");
+            if(resource != null) {
+                File closureLibDir = new File(intermediateDir.getParent(), "closure");
+
+                // Only create and dump the content, if the directory does not exists.
+                if(!closureLibDir.exists()) {
+                    if(!closureLibDir.mkdirs()) {
+                        throw new IOException(
+                                "Unable to create directory for closure-lib at " + closureLibDir.getAbsolutePath());
+                    }
+
+                    // Strip the url of the parts we don't need.
+                    // Unless we are not using some insanely complex setup
+                    // the resource will always be on the same machine.
+                    String resourceJarPath = resource.getFile();
+                    if(resourceJarPath.contains(":")) {
+                        resourceJarPath = resourceJarPath.substring(resourceJarPath.lastIndexOf(":") + 1);
+                    }
+                    if(resourceJarPath.contains("!")) {
+                        resourceJarPath = resourceJarPath.substring(0, resourceJarPath.indexOf("!"));
+                    }
+                    File resourceJar = new File(resourceJarPath);
+
+                    // Dump the closure lib from classpath.
+                    dumpJar(resourceJar, closureLibDir);
+                }
+                // The compiler automatically adds a "closure" to the lib dir path,
+                // so we omit this here.
+                closureLibDirPath = intermediateDir.getParentFile().getPath();
+            }
+            // Fallback to the default.
+            else {
+                closureLibDirPath = ((JSGoogConfiguration) configuration).getClosureLib();
+            }
+        }
+
         final String closureGoogSrcLibDirPath = closureLibDirPath
                 + "/closure/goog/";
         final String closureGoogTgtLibDirPath = intermediateDirPath
@@ -177,11 +209,11 @@ public class MXMLVF2JSPublisher extends JSGoogPublisher implements
         if (!subsetGoog)
         {
             // (erikdebruin) We need to leave the 'goog' files and dependencies well
-            //               enough alone. We copy the entire library over so the 
+            //               enough alone. We copy the entire library over so the
             //               'goog' dependencies will resolve without our help.
             FileUtils.copyDirectory(new File(closureGoogSrcLibDirPath), new File(closureGoogTgtLibDirPath));
         }
-        
+
         JSClosureCompilerWrapper compilerWrapper = new JSClosureCompilerWrapper();
 
         GoogDepsWriter gdw = new GoogDepsWriter(intermediateDir, projectName, (JSGoogConfiguration) configuration);
@@ -258,7 +290,7 @@ public class MXMLVF2JSPublisher extends JSGoogPublisher implements
                 Collections.sort(subsetdeps, new DependencyLineComparator());
                 for (DependencyRecord subsetdeprec : subsetdeps)
                 {
-                    sb.append(subsetdeprec.line + "\n");
+                    sb.append(subsetdeprec.line).append("\n");
                 }
                 writeFile(depsTgtFilePath, sb.toString() + depsFileData.toString(), false);
                 // copy the required files
@@ -461,13 +493,14 @@ public class MXMLVF2JSPublisher extends JSGoogPublisher implements
         htmlFile.append("<head>\n");
         htmlFile.append("\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n");
         htmlFile.append("\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n");
-        htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\" href=\""
-                + projectName + ".css\">\n");
+        htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\" href=\"");
+        htmlFile.append(projectName);
+        htmlFile.append(".css\">\n");
 
         for (String s : additionalHTML)
-            htmlFile.append(s + "\n");
+            htmlFile.append(s).append("\n");
         
-        if (type == "intermediate")
+        if ("intermediate".equals(type))
         {
             htmlFile.append("\t<script type=\"text/javascript\" src=\"./library/closure/goog/base.js\"></script>\n");
             htmlFile.append("\t<script type=\"text/javascript\" src=\"./sdk-deps.js\"></script>\n");
@@ -525,7 +558,7 @@ public class MXMLVF2JSPublisher extends JSGoogPublisher implements
         htmlFile.append("\t\t\t	infoObject[\"currentDomain\"] = new flash.system.ApplicationDomain();\n");
         htmlFile.append("\t\t\t	infoObject[\"fonts\"] = '';\n");
         htmlFile.append("\t\t\t	infoObject[\"frames\"] = '';\n");
-        htmlFile.append("\t\t\t	infoObject[\"mainClassName\"] = '" + projectName + "';\n");
+        htmlFile.append("\t\t\t	infoObject[\"mainClassName\"] = '").append(projectName).append("';\n");
         htmlFile.append("\t\t\t	infoObject[\"mixins\"] = '';\n");
         htmlFile.append("\t\t\t	infoObject[\"preloader\"] = new mx.preloaders.DownloadProgressBar();\n");
         htmlFile.append("\t\t\t	infoObject[\"rsls\"] = '';\n");

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java b/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
index d5608ea..1b7efe1 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
@@ -57,13 +57,17 @@ public class JSGoogConfiguration extends JSConfiguration
 
     protected String closureLib = "";
 
+    public boolean isClosureLibSet() {
+        return !closureLib.isEmpty();
+    }
+
     public String getClosureLib()
     {
         try
         {
             if (closureLib.equals(""))
             {
-                closureLib = getAbsolutePathFromPathRelativeToMXMLC(
+                return getAbsolutePathFromPathRelativeToMXMLC(
                         "../../js/lib/google/closure-library");
             }
         }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java b/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
index cde5681..e390c5f 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
@@ -44,6 +44,7 @@ public class GoogDepsWriter {
 		this.outputFolderPath = outputFolder.getAbsolutePath();
 		this.mainName = mainClassName;
 		otherPaths = config.getSDKJSLib();
+		otherPaths.add(new File(outputFolder.getParent(), "flexjs/FlexJS/src").getPath());
 	}
 	
 	private ProblemQuery problems;
@@ -145,6 +146,9 @@ public class GoogDepsWriter {
 		GoogDep gd = new GoogDep();
 		gd.className = className;
 		gd.filePath = getFilePath(className);
+		if(gd.filePath.isEmpty()) {
+			throw new RuntimeException("Unable to find JavaScript filePath for class: " + className);
+		}
 		depMap.put(gd.className, gd);
 		ArrayList<String> deps = getDirectDependencies(gd.filePath);
 		
@@ -261,7 +265,7 @@ public class GoogDepsWriter {
     				FileUtils.copyFile(f, destFile);
     				
     				// (erikdebruin) copy class assets files
-    				if (className.indexOf("org.apache.flex") > -1)
+    				if (className.contains("org.apache.flex"))
     				{
     				    File assetsDir = new File(f.getParentFile(), "assets");
     				    if (assetsDir.exists())
@@ -269,32 +273,30 @@ public class GoogDepsWriter {
     				        String nameOfClass = className.substring(className.lastIndexOf('.') + 1);
     				        
     				        File[] assetsList = assetsDir.listFiles();
-    				        for (int i = 0; i < assetsList.length; i++) 
-    				        {
-    				            File assetFile = assetsList[i];
-    				            String assetFileName = assetFile.getName();
-    				            
-    				            if (assetFile.isFile() && assetFileName.indexOf(nameOfClass) == 0) 
-    				            {
-    				                String pathOfClass = "";
-    				                pathOfClass = className.substring(0, className.lastIndexOf('.'));
-    				                pathOfClass = pathOfClass.replace(".", File.separator);
-    				                
-                                    destFile = new File(outputFolderPath + 
-                                            File.separator + pathOfClass + 
-                                            File.separator + "assets" + 
-                                            File.separator + assetFileName);
-                                    FileUtils.copyFile(assetFile, destFile);
-                                    
-                                    destFile = new File(outputFolderPath.replace("js-debug", "js-release") + 
-                                            File.separator + pathOfClass + 
-                                            File.separator + "assets" + 
-                                            File.separator + assetFileName);
-                                    FileUtils.copyFile(assetFile, destFile);
-                                    
-    	                            System.out.println("Copied assets of the '" + nameOfClass + "' class");
-    				            }
-    				        }
+					        assert assetsList != null;
+					        for (File assetFile : assetsList) {
+						        String assetFileName = assetFile.getName();
+
+						        if (assetFile.isFile() && assetFileName.indexOf(nameOfClass) == 0) {
+							        String pathOfClass;
+							        pathOfClass = className.substring(0, className.lastIndexOf('.'));
+							        pathOfClass = pathOfClass.replace(".", File.separator);
+
+							        destFile = new File(outputFolderPath +
+									        File.separator + pathOfClass +
+									        File.separator + "assets" +
+									        File.separator + assetFileName);
+							        FileUtils.copyFile(assetFile, destFile);
+
+							        destFile = new File(outputFolderPath.replace("js-debug", "js-release") +
+									        File.separator + pathOfClass +
+									        File.separator + "assets" +
+									        File.separator + assetFileName);
+							        FileUtils.copyFile(assetFile, destFile);
+
+							        System.out.println("Copied assets of the '" + nameOfClass + "' class");
+						        }
+					        }
     				    }
     				}
     			} catch (IOException e) {
@@ -322,7 +324,7 @@ public class GoogDepsWriter {
 			while (scanner.hasNextLine())
 			{
 				String s = scanner.nextLine();
-				if (s.indexOf("goog.inherits") > -1)
+				if (s.contains("goog.inherits"))
 					break;
                 if (inInjectHTML)
                 {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler/downloads.xml
----------------------------------------------------------------------
diff --git a/compiler/downloads.xml b/compiler/downloads.xml
index d1b4d6a..d2c14f3 100644
--- a/compiler/downloads.xml
+++ b/compiler/downloads.xml
@@ -218,18 +218,18 @@
     </antcall>
 
       <!--  flex-tool-api -->
-      <property name="flexToolApi.name" value="flex-tool-api"/>
-      <property name="flexToolApi.version" value="1.0.0-SNAPSHOT"/>
-      <antcall target="download-dependency">
-          <param name="name" value="${flexToolApi.name}"/>
-          <param name="src.server" value="http://repository.apache.org/content/groups/snapshots"/>
-          <param name="src.folder" value="org/apache/flex/flex-tool-api/${flexToolApi.version}"/>
-          <param name="src.filename" value="flex-tool-api-1.0.0-20141110.132854-7.jar"/>
-          <param name="src.checksum" value="ea3468a0af7f7b5ef6a3bf91d768c78d"/>
-          <param name="dest.folder" value=""/>
-          <param name="dest.filename" value="${flexToolApi.name}.jar"/>
-          <param name="license.use.apache" value="true"/>
-      </antcall>
+    <property name="flexToolApi.name" value="flex-tool-api"/>
+    <property name="flexToolApi.version" value="1.0.0"/>
+    <antcall target="download-dependency">
+      <param name="name" value="${flexToolApi.name}"/>
+      <param name="src.server" value="${maven.search.url}"/>
+      <param name="src.folder" value="org/apache/flex/${flexToolApi.name}/${flexToolApi.version}"/>
+      <param name="src.filename" value="${flexToolApi.name}-${flexToolApi.version}.jar"/>
+      <param name="src.checksum" value="b8f76174b2c4d3b83e5c9fa78703c52b"/>
+      <param name="dest.folder" value=""/>
+      <param name="dest.filename" value="${flexToolApi.name}.jar"/>
+      <param name="license.use.apache" value="true"/>
+    </antcall>
   </target>
 
   <target name="maven-related" description="Downloads and copies all dependencies to the lib directory.">

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler/src/org/apache/flex/compiler/clients/COMPC.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/clients/COMPC.java b/compiler/src/org/apache/flex/compiler/clients/COMPC.java
index af55eac..547f40f 100644
--- a/compiler/src/org/apache/flex/compiler/clients/COMPC.java
+++ b/compiler/src/org/apache/flex/compiler/clients/COMPC.java
@@ -79,7 +79,7 @@ public class COMPC extends MXMLC implements FlexTool
 
     @Override
     public String getName() {
-        return "COMPC";
+        return FLEX_TOOL_COMPC;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler/src/org/apache/flex/compiler/clients/MXMLC.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/clients/MXMLC.java b/compiler/src/org/apache/flex/compiler/clients/MXMLC.java
index 2b7e97b..51830b1 100644
--- a/compiler/src/org/apache/flex/compiler/clients/MXMLC.java
+++ b/compiler/src/org/apache/flex/compiler/clients/MXMLC.java
@@ -177,7 +177,7 @@ public class MXMLC implements FlexTool
 
     @Override
     public String getName() {
-        return "MXMLC";
+        return FLEX_TOOL_MXMLC;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/compiler/src/org/apache/flex/compiler/clients/Optimizer.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/clients/Optimizer.java b/compiler/src/org/apache/flex/compiler/clients/Optimizer.java
index 1566cf5..fa62e0a 100644
--- a/compiler/src/org/apache/flex/compiler/clients/Optimizer.java
+++ b/compiler/src/org/apache/flex/compiler/clients/Optimizer.java
@@ -101,7 +101,7 @@ public class Optimizer implements FlexTool
 
     @Override
     public String getName() {
-        return "OPTIMIZER";
+        return FLEX_TOOL_OPTIMIZER;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e92a0e9c/maven/falcon-jx-compiler.pom
----------------------------------------------------------------------
diff --git a/maven/falcon-jx-compiler.pom b/maven/falcon-jx-compiler.pom
index 8753648..fb408d3 100644
--- a/maven/falcon-jx-compiler.pom
+++ b/maven/falcon-jx-compiler.pom
@@ -54,6 +54,11 @@
             <artifactId>closure-compiler</artifactId>
             <version>v20141023</version>
         </dependency>
+        <dependency>
+            <groupId>org.clojure</groupId>
+            <artifactId>google-closure-library</artifactId>
+            <version>0.0-20140718-946a7d39</version>
+        </dependency>
     </dependencies>
 
 </project>


[3/6] git commit: [flex-falcon] [refs/heads/develop] - - Added an implementation of the hasFlexTool method to the FlexToolGroup implementations.

Posted by cd...@apache.org.
- Added an implementation of the hasFlexTool method to the FlexToolGroup implementations.


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

Branch: refs/heads/develop
Commit: 3afa07b4e6e2b3c4ff76c79240fb144922985f2c
Parents: 8c2f634
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Mon Nov 10 13:57:20 2014 +0100
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Mon Nov 10 13:57:20 2014 +0100

----------------------------------------------------------------------
 .../src/org/apache/flex/compiler/clients/FlexJSToolGroup.java   | 5 +++++
 .../src/org/apache/flex/compiler/clients/VF2JSToolGroup.java    | 5 +++++
 compiler/downloads.xml                                          | 4 ++--
 .../src/org/apache/flex/compiler/clients/FalconToolGroup.java   | 5 +++++
 4 files changed, 17 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afa07b4/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java b/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
index f33e346..e0becfc 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
@@ -32,6 +32,11 @@ public class FlexJSToolGroup implements FlexToolGroup {
     }
 
     @Override
+    public boolean hasFlexTool(String toolName) {
+        return tools.containsKey(toolName);
+    }
+
+    @Override
     public FlexTool getFlexTool(String toolName) {
         return tools.get(toolName);
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afa07b4/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java b/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
index 2918e68..877ec9a 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
@@ -33,6 +33,11 @@ public class VF2JSToolGroup implements FlexToolGroup {
     }
 
     @Override
+    public boolean hasFlexTool(String toolName) {
+        return tools.containsKey(toolName);
+    }
+
+    @Override
     public FlexTool getFlexTool(String toolName) {
         return tools.get(toolName);
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afa07b4/compiler/downloads.xml
----------------------------------------------------------------------
diff --git a/compiler/downloads.xml b/compiler/downloads.xml
index 60b7f07..0d0f166 100644
--- a/compiler/downloads.xml
+++ b/compiler/downloads.xml
@@ -224,8 +224,8 @@
           <param name="name" value="${flexToolApi.name}"/>
           <param name="src.server" value="http://repository.apache.org/content/groups/snapshots"/>
           <param name="src.folder" value="org/apache/flex/flex-tool-api/${flexToolApi.version}"/>
-          <param name="src.filename" value="flex-tool-api-1.0.0-20141105.140704-1.jar"/>
-          <param name="src.checksum" value="b37c99011d06e1ff794d8ee9153ab2c4"/>
+          <param name="src.filename" value="flex-tool-api-1.0.0-20141110.124753-2.jar"/>
+          <param name="src.checksum" value="7a5edb19de574319862623f28dcb8e33"/>
           <param name="dest.folder" value=""/>
           <param name="dest.filename" value="${flexToolApi.name}.jar"/>
           <param name="license.use.apache" value="true"/>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afa07b4/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java b/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
index 3185155..ce859e1 100644
--- a/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
+++ b/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
@@ -32,6 +32,11 @@ public class FalconToolGroup implements FlexToolGroup {
     }
 
     @Override
+    public boolean hasFlexTool(String toolName) {
+        return tools.containsKey(toolName);
+    }
+
+    @Override
     public FlexTool getFlexTool(String toolName) {
         return tools.get(toolName);
     }


[4/6] git commit: [flex-falcon] [refs/heads/develop] - - Adjusted the implementation to the updated flex-tool-api version (Contains an abstract base FlexToolGroup). - Made the build include the ServiceLoader config files into the final jars.

Posted by cd...@apache.org.
- Adjusted the implementation to the updated flex-tool-api version (Contains an abstract base FlexToolGroup).
- Made the build include the ServiceLoader config files into the final jars.


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

Branch: refs/heads/develop
Commit: 8dec67448256e2185a9441b74d6bcc484d74a4ad
Parents: 3afa07b
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Mon Nov 10 16:25:42 2014 +0100
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Mon Nov 10 16:25:42 2014 +0100

----------------------------------------------------------------------
 compiler.jx/build.xml                           |  5 +-
 .../org.apache.flex.tools.FlexToolGroup         |  2 +
 .../flex/compiler/clients/FlexJSToolGroup.java  | 56 ++++++++-----------
 .../flex/compiler/clients/VF2JSToolGroup.java   | 57 ++++++++-----------
 compiler/build.xml                              |  5 +-
 compiler/downloads.xml                          |  4 +-
 .../flex/compiler/clients/FalconToolGroup.java  | 58 +++++++++-----------
 7 files changed, 85 insertions(+), 102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8dec6744/compiler.jx/build.xml
----------------------------------------------------------------------
diff --git a/compiler.jx/build.xml b/compiler.jx/build.xml
index 9a37be9..1f6b4e1 100644
--- a/compiler.jx/build.xml
+++ b/compiler.jx/build.xml
@@ -63,6 +63,9 @@
 				<file name="compiler.jar" />
 			</filelist>
 		</copy>
+		<!-- Copy the config file for the flex-tool-api. -->
+		<copy todir="${classes.dir}/META-INF/services"
+			  file="src/META-INF/services/org.apache.flex.tools.FlexToolGroup"/>
     </target>
 
 	<target name="compile">
@@ -90,7 +93,7 @@
 
 		<echo message="Building ${jsc.jar}" />
 		<jar file="${jsc.jar}" basedir="${classes.dir}"
-            includes="**/*.properties,org/apache/**/*"
+            includes="**/*.properties,org/apache/**/*,META-INF/**/*"
 			excludes="**/JSDriver*,**/IASNodeAdapter*,org/apache/flex/compiler/internal/parsing/abc/*" >
             <manifest>
                 <attribute name="Class-Path" value="${jar.classpath}" />

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8dec6744/compiler.jx/src/META-INF/services/org.apache.flex.tools.FlexToolGroup
----------------------------------------------------------------------
diff --git a/compiler.jx/src/META-INF/services/org.apache.flex.tools.FlexToolGroup b/compiler.jx/src/META-INF/services/org.apache.flex.tools.FlexToolGroup
new file mode 100644
index 0000000..b2ad16f
--- /dev/null
+++ b/compiler.jx/src/META-INF/services/org.apache.flex.tools.FlexToolGroup
@@ -0,0 +1,2 @@
+org.apache.flex.compiler.clients.FlexJSToolGroup
+org.apache.flex.compiler.clients.VF2JSToolGroup

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8dec6744/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java b/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
index e0becfc..1f10aa7 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
@@ -1,44 +1,36 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
 package org.apache.flex.compiler.clients;
 
 import org.apache.flex.compiler.internal.driver.mxml.flexjs.MXMLFlexJSBackend;
-import org.apache.flex.tools.FlexTool;
-import org.apache.flex.tools.FlexToolGroup;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.flex.tools.AbstractFlexToolGroup;
 
 /**
  * Created by christoferdutz on 10.11.14.
  */
-public class FlexJSToolGroup implements FlexToolGroup {
-
-    Map<String, FlexTool> tools;
+public class FlexJSToolGroup extends AbstractFlexToolGroup {
 
     public FlexJSToolGroup() {
-        tools = new HashMap<String, FlexTool>();
-        tools.put("COMPC", new COMPJSC(new MXMLFlexJSBackend()));
-        tools.put("MXMLC", new MXMLJSC(new MXMLFlexJSBackend()));
-    }
-
-    @Override
-    public String getName() {
-        return "FlexJS";
-    }
-
-    @Override
-    public Collection<String> getFlexToolNames() {
-        return tools.keySet();
-    }
-
-    @Override
-    public boolean hasFlexTool(String toolName) {
-        return tools.containsKey(toolName);
-    }
-
-    @Override
-    public FlexTool getFlexTool(String toolName) {
-        return tools.get(toolName);
+        super("FlexJS");
+        addFlexTool(new COMPJSC(new MXMLFlexJSBackend()));
+        addFlexTool(new COMPJSC(new MXMLFlexJSBackend()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8dec6744/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java b/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
index 877ec9a..12500da 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
@@ -1,45 +1,36 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
 package org.apache.flex.compiler.clients;
 
 import org.apache.flex.compiler.internal.driver.js.vf2js.VF2JSBackend;
-import org.apache.flex.compiler.internal.driver.mxml.flexjs.MXMLFlexJSBackend;
-import org.apache.flex.tools.FlexTool;
-import org.apache.flex.tools.FlexToolGroup;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.flex.tools.AbstractFlexToolGroup;
 
 /**
  * Created by christoferdutz on 10.11.14.
  */
-public class VF2JSToolGroup implements FlexToolGroup {
-
-    Map<String, FlexTool> tools;
+public class VF2JSToolGroup extends AbstractFlexToolGroup {
 
     public VF2JSToolGroup() {
-        tools = new HashMap<String, FlexTool>();
-        tools.put("COMPC", new COMPJSC(new VF2JSBackend()));
-        tools.put("MXMLC", new MXMLJSC(new VF2JSBackend()));
-    }
-
-    @Override
-    public String getName() {
-        return "VF2JS";
-    }
-
-    @Override
-    public Collection<String> getFlexToolNames() {
-        return tools.keySet();
-    }
-
-    @Override
-    public boolean hasFlexTool(String toolName) {
-        return tools.containsKey(toolName);
-    }
-
-    @Override
-    public FlexTool getFlexTool(String toolName) {
-        return tools.get(toolName);
+        super("VF2JS");
+        addFlexTool(new COMPJSC(new VF2JSBackend()));
+        addFlexTool(new COMPJSC(new VF2JSBackend()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8dec6744/compiler/build.xml
----------------------------------------------------------------------
diff --git a/compiler/build.xml b/compiler/build.xml
index 7c0172e..30e0bbb 100644
--- a/compiler/build.xml
+++ b/compiler/build.xml
@@ -556,6 +556,9 @@
         <copy todir="${compiler}/generated/classes">
             <fileset dir="${compiler}/src" includes="**/*.properties"/>
         </copy>
+        <!-- Copy the config file for the flex-tool-api. -->
+        <copy todir="${compiler}/generated/classes/META-INF/services"
+              file="src/META-INF/services/org.apache.flex.tools.FlexToolGroup"/>
     </target>
 	
 	<target name="set.messages.en.uptodate">
@@ -599,7 +602,7 @@
 	<target name="compiler.jar" depends="compile, localization, version-info, set.compiler.jar.uptodate" unless="compiler.jar.uptodate"
 		    description="Builds compiler.jar">
         <mkdir dir="${sdk}/lib"/>
-        <jar file="${sdk}/lib/compiler.jar" basedir="${compiler}/generated/classes" includes="**/*.properties,org/apache/**/*" excludes="${compiler.ant.binaries},${compiler.font.binaries}">
+        <jar file="${sdk}/lib/compiler.jar" basedir="${compiler}/generated/classes" includes="**/*.properties,org/apache/**/*,META-INF/**/*" excludes="${compiler.ant.binaries},${compiler.font.binaries}">
             <manifest>
                 <attribute name="Sealed" value="${manifest.sealed}"/>
                 <attribute name="Implementation-Title" value="${manifest.Implementation-Title}"/>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8dec6744/compiler/downloads.xml
----------------------------------------------------------------------
diff --git a/compiler/downloads.xml b/compiler/downloads.xml
index 0d0f166..d1b4d6a 100644
--- a/compiler/downloads.xml
+++ b/compiler/downloads.xml
@@ -224,8 +224,8 @@
           <param name="name" value="${flexToolApi.name}"/>
           <param name="src.server" value="http://repository.apache.org/content/groups/snapshots"/>
           <param name="src.folder" value="org/apache/flex/flex-tool-api/${flexToolApi.version}"/>
-          <param name="src.filename" value="flex-tool-api-1.0.0-20141110.124753-2.jar"/>
-          <param name="src.checksum" value="7a5edb19de574319862623f28dcb8e33"/>
+          <param name="src.filename" value="flex-tool-api-1.0.0-20141110.132854-7.jar"/>
+          <param name="src.checksum" value="ea3468a0af7f7b5ef6a3bf91d768c78d"/>
           <param name="dest.folder" value=""/>
           <param name="dest.filename" value="${flexToolApi.name}.jar"/>
           <param name="license.use.apache" value="true"/>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8dec6744/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java b/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
index ce859e1..3410bd0 100644
--- a/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
+++ b/compiler/src/org/apache/flex/compiler/clients/FalconToolGroup.java
@@ -1,44 +1,36 @@
-package org.apache.flex.compiler.clients;
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT 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;
+package org.apache.flex.compiler.clients;
 
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.flex.tools.AbstractFlexToolGroup;
 
 /**
  * FlexToolGroup exposing the implementations of the Falcon compilers tools.
  */
-public class FalconToolGroup implements FlexToolGroup {
-
-    Map<String, FlexTool> tools;
+public class FalconToolGroup extends AbstractFlexToolGroup {
 
     public FalconToolGroup() {
-        tools = new HashMap<String, FlexTool>();
-        tools.put("COMPC", new COMPC());
-        tools.put("MXMLC", new MXMLC());
-        tools.put("OPTIMIZER", new Optimizer());
-    }
-
-    @Override
-    public String getName() {
-        return "Falcon";
-    }
-
-    @Override
-    public Collection<String> getFlexToolNames() {
-        return tools.keySet();
-    }
-
-    @Override
-    public boolean hasFlexTool(String toolName) {
-        return tools.containsKey(toolName);
-    }
-
-    @Override
-    public FlexTool getFlexTool(String toolName) {
-        return tools.get(toolName);
+        super("Falcon");
+        addFlexTool(new COMPC());
+        addFlexTool(new MXMLC());
+        addFlexTool(new Optimizer());
     }
 
 }


[2/6] git commit: [flex-falcon] [refs/heads/develop] - Added FlexToolGroup and FlexTool implementations for: - Falcon - FlexJS - VF2JS

Posted by cd...@apache.org.
Added FlexToolGroup and FlexTool implementations for:
- Falcon
- FlexJS
- VF2JS


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

Branch: refs/heads/develop
Commit: 8c2f634dbb4bd472e0ea8d8a2468d090def6cb34
Parents: 7923ce9
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Mon Nov 10 11:44:33 2014 +0100
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Mon Nov 10 11:44:33 2014 +0100

----------------------------------------------------------------------
 compiler.jx/build.xml                           |  4 +-
 compiler.jx/downloads.xml                       | 14 +++++++
 .../apache/flex/compiler/clients/COMPJSC.java   | 13 ++++++-
 .../flex/compiler/clients/FlexJSToolGroup.java  | 39 +++++++++++++++++++
 .../apache/flex/compiler/clients/MXMLJSC.java   | 28 +++++++++++++-
 .../flex/compiler/clients/VF2JSToolGroup.java   | 40 ++++++++++++++++++++
 compiler/build.xml                              |  2 +-
 7 files changed, 135 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8c2f634d/compiler.jx/build.xml
----------------------------------------------------------------------
diff --git a/compiler.jx/build.xml b/compiler.jx/build.xml
index dc7d889..9a37be9 100644
--- a/compiler.jx/build.xml
+++ b/compiler.jx/build.xml
@@ -42,6 +42,7 @@
 			<file name="commons-io.jar" />
             <file name="guava.jar" />
             <file name="antlr.jar" />
+			<file name="flex-tool-api.jar" />
         </filelist>
 		<filelist dir="${build.lib.dir}/google/closure-compiler">
             <file name="compiler.jar" />
@@ -54,6 +55,7 @@
 				<file name="commons-io.jar" />
 				<file name="guava.jar" />
 				<file name="antlr.jar" />
+				<file name="flex-tool-api.jar"/>
 			</filelist>
 		</copy>
 		<copy todir="${build.lib.dir}/google/closure-compiler">
@@ -84,7 +86,7 @@
 	
 	<target name="main" depends="prebuild,copyFiles,compile">
         
-        <property name="jar.classpath" value="commons-io.jar ../../lib/external/guava.jar  ../../lib/external/antlr.jar google/closure-compiler/compiler.jar ../../compiler/generated/dist/sdk/lib/compiler.jar ../../lib/compiler.jar" />
+        <property name="jar.classpath" value="commons-io.jar ../../lib/external/guava.jar  ../../lib/external/antlr.jar ../../lib/external/flex-tool-api.jar google/closure-compiler/compiler.jar ../../compiler/generated/dist/sdk/lib/compiler.jar ../../lib/compiler.jar" />
 
 		<echo message="Building ${jsc.jar}" />
 		<jar file="${jsc.jar}" basedir="${classes.dir}"

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8c2f634d/compiler.jx/downloads.xml
----------------------------------------------------------------------
diff --git a/compiler.jx/downloads.xml b/compiler.jx/downloads.xml
index cc998a7..dd64945 100644
--- a/compiler.jx/downloads.xml
+++ b/compiler.jx/downloads.xml
@@ -150,6 +150,20 @@
       <param name="dest.folder" value=""/>
       <param name="dest.filename" value="${org.json.name}.jar"/>
     </antcall>
+
+      <!--  flex-tool-api -->
+      <property name="flexToolApi.name" value="flex-tool-api"/>
+      <property name="flexToolApi.version" value="1.0.0-SNAPSHOT"/>
+      <antcall target="download-dependency">
+          <param name="name" value="${flexToolApi.name}"/>
+          <param name="src.server" value="http://repository.apache.org/content/groups/snapshots"/>
+          <param name="src.folder" value="org/apache/flex/flex-tool-api/${flexToolApi.version}"/>
+          <param name="src.filename" value="flex-tool-api-1.0.0-20141105.140704-1.jar"/>
+          <param name="src.checksum" value="b37c99011d06e1ff794d8ee9153ab2c4"/>
+          <param name="dest.folder" value=""/>
+          <param name="dest.filename" value="${flexToolApi.name}.jar"/>
+          <param name="license.use.apache" value="true"/>
+      </antcall>
   </target>
 
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8c2f634d/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java b/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java
index 99140bb..068b2f3 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/COMPJSC.java
@@ -51,6 +51,7 @@ import org.apache.flex.compiler.problems.UnableToBuildSWFProblem;
 import org.apache.flex.compiler.targets.ITarget.TargetType;
 import org.apache.flex.compiler.targets.ITargetSettings;
 import org.apache.flex.compiler.units.ICompilationUnit;
+import org.apache.flex.tools.FlexTool;
 import org.apache.flex.utils.FileUtils;
 
 import sun.reflect.generics.reflectiveObjects.NotImplementedException;
@@ -60,7 +61,7 @@ import sun.reflect.generics.reflectiveObjects.NotImplementedException;
  * @author Erik de Bruin
  * @author Michael Schmalle
  */
-public class COMPJSC extends MXMLJSC
+public class COMPJSC extends MXMLJSC implements FlexTool
 {
     /*
      * Exit code enumerations.
@@ -81,6 +82,16 @@ public class COMPJSC extends MXMLJSC
         final int code;
     }
 
+    @Override
+    public String getName() {
+        return "COMPC";
+    }
+
+    @Override
+    public int execute(String[] args) {
+        return staticMainNoExit(args);
+    }
+
     /**
      * Java program entry point.
      * 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8c2f634d/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java b/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
new file mode 100644
index 0000000..f33e346
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/FlexJSToolGroup.java
@@ -0,0 +1,39 @@
+package org.apache.flex.compiler.clients;
+
+import org.apache.flex.compiler.internal.driver.mxml.flexjs.MXMLFlexJSBackend;
+import org.apache.flex.tools.FlexTool;
+import org.apache.flex.tools.FlexToolGroup;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by christoferdutz on 10.11.14.
+ */
+public class FlexJSToolGroup implements FlexToolGroup {
+
+    Map<String, FlexTool> tools;
+
+    public FlexJSToolGroup() {
+        tools = new HashMap<String, FlexTool>();
+        tools.put("COMPC", new COMPJSC(new MXMLFlexJSBackend()));
+        tools.put("MXMLC", new MXMLJSC(new MXMLFlexJSBackend()));
+    }
+
+    @Override
+    public String getName() {
+        return "FlexJS";
+    }
+
+    @Override
+    public Collection<String> getFlexToolNames() {
+        return tools.keySet();
+    }
+
+    @Override
+    public FlexTool getFlexTool(String toolName) {
+        return tools.get(toolName);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8c2f634d/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java b/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
index e08cd6c..2716aea 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
@@ -77,6 +77,7 @@ import org.apache.flex.compiler.targets.ITarget;
 import org.apache.flex.compiler.targets.ITarget.TargetType;
 import org.apache.flex.compiler.targets.ITargetSettings;
 import org.apache.flex.compiler.units.ICompilationUnit;
+import org.apache.flex.tools.FlexTool;
 import org.apache.flex.utils.FileUtils;
 import org.apache.flex.utils.FilenameNormalization;
 
@@ -88,7 +89,7 @@ import com.google.common.collect.Iterables;
  * @author Erik de Bruin
  * @author Michael Schmalle
  */
-public class MXMLJSC
+public class MXMLJSC implements FlexTool
 {
     /*
      * JS output type enumerations.
@@ -143,6 +144,17 @@ public class MXMLJSC
     public static JSOutputType jsOutputType;
     public static boolean keepASDoc;
 
+    @Override
+    public String getName() {
+        return "MXMLC";
+    }
+
+    @Override
+    public int execute(String[] args) {
+        final Set<ICompilerProblem> problems = new HashSet<ICompilerProblem>();
+        return mainNoExit(args, problems, true);
+    }
+
     /**
      * Java program entry point.
      * 
@@ -150,6 +162,18 @@ public class MXMLJSC
      */
     public static void main(final String[] args)
     {
+        int exitCode = staticMainNoExit(args);
+        System.exit(exitCode);
+    }
+
+    /**
+     * Entry point for the {@code <compc>} Ant task.
+     *
+     * @param args Command line arguments.
+     * @return An exit code.
+     */
+    public static int staticMainNoExit(final String[] args)
+    {
         long startTime = System.nanoTime();
 
         IBackend backend = new ASBackend();
@@ -193,7 +217,7 @@ public class MXMLJSC
         long endTime = System.nanoTime();
         JSSharedData.instance.stdout((endTime - startTime) / 1e9 + " seconds");
 
-        System.exit(exitCode);
+        return exitCode;
     }
 
     protected Workspace workspace;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8c2f634d/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java b/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
new file mode 100644
index 0000000..2918e68
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/VF2JSToolGroup.java
@@ -0,0 +1,40 @@
+package org.apache.flex.compiler.clients;
+
+import org.apache.flex.compiler.internal.driver.js.vf2js.VF2JSBackend;
+import org.apache.flex.compiler.internal.driver.mxml.flexjs.MXMLFlexJSBackend;
+import org.apache.flex.tools.FlexTool;
+import org.apache.flex.tools.FlexToolGroup;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by christoferdutz on 10.11.14.
+ */
+public class VF2JSToolGroup implements FlexToolGroup {
+
+    Map<String, FlexTool> tools;
+
+    public VF2JSToolGroup() {
+        tools = new HashMap<String, FlexTool>();
+        tools.put("COMPC", new COMPJSC(new VF2JSBackend()));
+        tools.put("MXMLC", new MXMLJSC(new VF2JSBackend()));
+    }
+
+    @Override
+    public String getName() {
+        return "VF2JS";
+    }
+
+    @Override
+    public Collection<String> getFlexToolNames() {
+        return tools.keySet();
+    }
+
+    @Override
+    public FlexTool getFlexTool(String toolName) {
+        return tools.get(toolName);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8c2f634d/compiler/build.xml
----------------------------------------------------------------------
diff --git a/compiler/build.xml b/compiler/build.xml
index 13d1ce8..7c0172e 100644
--- a/compiler/build.xml
+++ b/compiler/build.xml
@@ -605,7 +605,7 @@
                 <attribute name="Implementation-Title" value="${manifest.Implementation-Title}"/>
                 <attribute name="Implementation-Version" value="${manifest.Implementation-Version}.${build.number}"/>
                 <attribute name="Implementation-Vendor" value="${manifest.Implementation-Vendor}"/>
-                <attribute name="Class-Path" value="external/antlr.jar external/commons-cli.jar external/commons-io.jar external/guava.jar external/lzma-sdk.jar .."/>
+                <attribute name="Class-Path" value="external/antlr.jar external/commons-cli.jar external/commons-io.jar external/guava.jar external/lzma-sdk.jar external/flex-tool-api.jar .."/>
                 <!-- The .. in the line above allows the compiler to load the env.properties file -->
             </manifest>
         </jar>


[6/6] git commit: [flex-falcon] [refs/heads/develop] - Merge branch 'feature/flex-tool-api' into develop

Posted by cd...@apache.org.
Merge branch 'feature/flex-tool-api' into develop

Conflicts:
	compiler.jx/build.xml
	compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/MXMLVF2JSPublisher.java


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

Branch: refs/heads/develop
Commit: 18b403c9c20439faad4cbf6545edea3c863b738f
Parents: 461873b e92a0e9
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Sun Nov 23 12:42:52 2014 +0100
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Sun Nov 23 12:42:52 2014 +0100

----------------------------------------------------------------------
 compiler.jx/build.xml                           |   9 +-
 compiler.jx/downloads.xml                       |  14 ++
 .../org.apache.flex.tools.FlexToolGroup         |   2 +
 .../apache/flex/compiler/clients/COMPJSC.java   |  13 +-
 .../flex/compiler/clients/FlexJSToolGroup.java  |  36 ++++++
 .../apache/flex/compiler/clients/MXMLJSC.java   | 129 ++++++++-----------
 .../flex/compiler/clients/VF2JSToolGroup.java   |  36 ++++++
 .../codegen/js/goog/JSGoogPublisher.java        |  36 +++++-
 .../mxml/flexjs/MXMLFlexJSPublisher.java        | 125 ++++++++++++++----
 .../codegen/mxml/vf2js/MXMLVF2JSPublisher.java  |  81 ++++++++----
 .../driver/js/goog/JSGoogConfiguration.java     |   6 +-
 .../compiler/internal/graph/GoogDepsWriter.java |  58 +++++----
 compiler/build.xml                              |   7 +-
 compiler/downloads.xml                          |  14 ++
 .../org.apache.flex.tools.FlexToolGroup         |   1 +
 .../org/apache/flex/compiler/clients/COMPC.java |  15 ++-
 .../flex/compiler/clients/FalconToolGroup.java  |  36 ++++++
 .../org/apache/flex/compiler/clients/MXMLC.java |  16 ++-
 .../apache/flex/compiler/clients/Optimizer.java |  12 +-
 maven/falcon-jx-compiler.pom                    |   5 +
 20 files changed, 485 insertions(+), 166 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/18b403c9/compiler.jx/build.xml
----------------------------------------------------------------------
diff --cc compiler.jx/build.xml
index cdaf24b,1f6b4e1..82ccde8
--- a/compiler.jx/build.xml
+++ b/compiler.jx/build.xml
@@@ -88,7 -93,7 +93,7 @@@
  
  		<echo message="Building ${jsc.jar}" />
  		<jar file="${jsc.jar}" basedir="${classes.dir}"
-             includes="**/*.properties,org/apache/**/*,com/google/**/*"
 -            includes="**/*.properties,org/apache/**/*,META-INF/**/*"
++            includes="**/*.properties,org/apache/**/*,com/google/**/*,META-INF/**/*"
  			excludes="**/JSDriver*,**/IASNodeAdapter*,org/apache/flex/compiler/internal/parsing/abc/*" >
              <manifest>
                  <attribute name="Class-Path" value="${jar.classpath}" />

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/18b403c9/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/18b403c9/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/MXMLVF2JSPublisher.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/18b403c9/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
----------------------------------------------------------------------