Repository: flex-falcon
Updated Branches:
  refs/heads/feature/maven-migration 39cad676d -> bb85fc248


changes to generate info() structure on main class


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

Branch: refs/heads/feature/maven-migration
Commit: 272be3df34d07ddb131e8d394c39f492ce593e06
Parents: 2135f68
Author: Alex Harui <[email protected]>
Authored: Mon Apr 11 21:49:41 2016 -0700
Committer: Alex Harui <[email protected]>
Committed: Mon Apr 11 21:49:41 2016 -0700

----------------------------------------------------------------------
 .../apache/flex/compiler/clients/MXMLJSC.java   |  6 ++-
 .../codegen/js/flexjs/JSFlexJSEmitter.java      |  3 ++
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java  | 50 +++++++++++++++++++-
 .../flex/compiler/internal/targets/Target.java  |  2 +-
 .../apache/flex/compiler/targets/ITarget.java   |  9 ++++
 5 files changed, 67 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/272be3df/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 98cd4d2..3ca2f03 100644
--- a/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
+++ b/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
@@ -434,7 +434,11 @@ public class MXMLJSC implements JSCompilerEntryPoint, 
ProblemQueryProvider,
 
                 File outputFolder = jsPublisher.getOutputFolder();
 
-                List<ICompilationUnit> reachableCompilationUnits = 
project.getReachableCompilationUnitsInSWFOrder(ImmutableSet.of(mainCU));
+                ArrayList<ICompilationUnit> roots = new 
ArrayList<ICompilationUnit>();
+                roots.add(mainCU);
+                Set<ICompilationUnit> incs = 
target.getIncludesCompilationUnits();
+                roots.addAll(incs);
+                List<ICompilationUnit> reachableCompilationUnits = 
project.getReachableCompilationUnitsInSWFOrder(roots);
                 for (final ICompilationUnit cu : reachableCompilationUnits)
                 {
                     ICompilationUnit.UnitType cuType = 
cu.getCompilationUnitType();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/272be3df/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index f23f83a..bfc3bfe 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -22,6 +22,7 @@ package org.apache.flex.compiler.internal.codegen.js.flexjs;
 import java.io.FilterWriter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.flex.compiler.codegen.js.flexjs.IJSFlexJSEmitter;
 import org.apache.flex.compiler.codegen.js.goog.IJSGoogDocEmitter;
@@ -31,6 +32,7 @@ import org.apache.flex.compiler.definitions.IDefinition;
 import org.apache.flex.compiler.definitions.IPackageDefinition;
 import org.apache.flex.compiler.definitions.ITypeDefinition;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitter;
 import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.jx.AccessorEmitter;
@@ -249,6 +251,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter 
implements IJSFlexJSEmitter
                }
                finalLines.add(line);
        }
+       
        return Joiner.on("\n").join(finalLines);
     }
     

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/272be3df/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index dde558f..094f5c7 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -161,6 +161,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter 
implements
         boolean foundXML = false;
        String[] lines = output.split("\n");
        ArrayList<String> finalLines = new ArrayList<String>();
+       int endRequires = -1;
        boolean sawRequires = false;
        boolean stillSearching = true;
        for (String line : lines)
@@ -181,7 +182,10 @@ public class MXMLFlexJSEmitter extends MXMLEmitter 
implements
                                        continue;
                        }
                        else if (sawRequires)
+                       {
                                stillSearching = false;
+                               endRequires = finalLines.size();
+                       }
                }
                finalLines.add(line);
        }
@@ -196,9 +200,53 @@ public class MXMLFlexJSEmitter extends MXMLEmitter 
implements
             appendString.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
             appendString.append(ASEmitterTokens.PAREN_CLOSE.getToken());
             appendString.append(ASEmitterTokens.SEMICOLON.getToken());
-            finalLines.add(appendString.toString());
+            finalLines.add(endRequires, appendString.toString());
             // TODO (aharui) addLineToMappings(finalLines.size());
         }
+       // append info() structure if main CU
+        ICompilerProject project = getMXMLWalker().getProject();
+        if (project instanceof FlexJSProject)
+        {
+            FlexJSProject flexJSProject = (FlexJSProject) project;
+            String mainDef = null;
+                       try {
+                               mainDef = 
flexJSProject.mainCU.getQualifiedNames().get(0);
+                       } catch (InterruptedException e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       }
+            String thisDef = documentDefinition.getQualifiedName();
+            if (mainDef != null && mainDef.equals(thisDef))
+            {
+               Set<String> mixins = flexJSProject.config.getIncludes();
+               if (mixins.size() > 0)
+               {
+                       String infoInject = "\n\n" + thisDef + ".prototype.info 
= function() {\n" +
+                                                               "  return { 
mixins: [";
+                       boolean firstOne = true;
+                       for (String mixin : mixins)
+                       {
+                               if (!firstOne)
+                                       infoInject += ", "; 
+                               infoInject += mixin;
+                               firstOne = false;
+                           StringBuilder appendString = new StringBuilder();
+                           
appendString.append(JSGoogEmitterTokens.GOOG_REQUIRE.getToken());
+                           
appendString.append(ASEmitterTokens.PAREN_OPEN.getToken());
+                           
appendString.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
+                           appendString.append(mixin);
+                           
appendString.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
+                           
appendString.append(ASEmitterTokens.PAREN_CLOSE.getToken());
+                           
appendString.append(ASEmitterTokens.SEMICOLON.getToken());
+                        finalLines.add(endRequires, appendString.toString());
+                        //addLineToMappings(finalLines.size());
+                       }
+                       infoInject += "]}};";
+                    finalLines.add(infoInject);
+                    //addLineToMappings(finalLines.size());                    
+               }
+            }
+        }
        return Joiner.on("\n").join(finalLines);
     }
     

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/272be3df/compiler/src/org/apache/flex/compiler/internal/targets/Target.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/internal/targets/Target.java 
b/compiler/src/org/apache/flex/compiler/internal/targets/Target.java
index 0f3a578..cd5a62e 100644
--- a/compiler/src/org/apache/flex/compiler/internal/targets/Target.java
+++ b/compiler/src/org/apache/flex/compiler/internal/targets/Target.java
@@ -444,7 +444,7 @@ public abstract class Target implements ITarget
      * @return a set of {@link ICompilationUnit}s that are included into the
      * build process by -include-classes compiler argument.
      */
-    protected final Set<ICompilationUnit> getIncludesCompilationUnits() throws 
InterruptedException
+    public final Set<ICompilationUnit> getIncludesCompilationUnits() throws 
InterruptedException
     {
         Workspace workspace = project.getWorkspace();
         Set<IResolvedQualifiersReference> includesReferences = new 
HashSet<IResolvedQualifiersReference>();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/272be3df/compiler/src/org/apache/flex/compiler/targets/ITarget.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/targets/ITarget.java 
b/compiler/src/org/apache/flex/compiler/targets/ITarget.java
index 3ccaba9..485a59d 100644
--- a/compiler/src/org/apache/flex/compiler/targets/ITarget.java
+++ b/compiler/src/org/apache/flex/compiler/targets/ITarget.java
@@ -21,6 +21,8 @@ package org.apache.flex.compiler.targets;
 
 import java.util.Set;
 
+import org.apache.flex.compiler.units.ICompilationUnit;
+
 /**
  * An ITarget is a promise to build a particular output from the
  * CompilationUnits in an IProject. All ITargets are capable of traversing the
@@ -75,6 +77,13 @@ public interface ITarget
     ITargetSettings getTargetSettings();
 
     /**
+     * Returns mixins.
+     * 
+     * @return settings for this target
+     */
+    Set<ICompilationUnit> getIncludesCompilationUnits() throws 
InterruptedException;
+
+    /**
      * Returns a report specific to this target.  If the target has been 
created
      * but not built before getTargetReport() has been called, this method will
      * return null.  If the Target could not be built, null will be returned.

Reply via email to