add class aliases to JS info structure

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

Branch: refs/heads/feature/amf
Commit: a9e09f4bc3aae17a6df461fa6bb1e8dc88570e32
Parents: 135b749
Author: Alex Harui <[email protected]>
Authored: Thu Aug 31 21:09:26 2017 -0700
Committer: Alex Harui <[email protected]>
Committed: Thu Aug 31 21:09:26 2017 -0700

----------------------------------------------------------------------
 .../apache/flex/compiler/clients/MXMLJSC.java   |  3 +++
 .../flex/compiler/clients/MXMLJSCFlex.java      |  3 +++
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java  | 20 ++++++++++++++++++++
 .../internal/projects/FlexJSProject.java        |  2 +-
 .../compiler/internal/targets/FlexJSTarget.java | 14 ++++++++++++++
 .../targets/FlexApplicationFrame1Info.java      | 20 ++++++++++++++++++++
 6 files changed, 61 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a9e09f4b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java 
b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
index cd67a51..3c97c78 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
@@ -28,6 +28,7 @@ import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
@@ -519,8 +520,10 @@ public class MXMLJSC implements JSCompilerEntryPoint, 
ProblemQueryProvider,
                        Set<ICompilationUnit> incs = 
target.getIncludesCompilationUnits();
                        roots.addAll(incs);
                        project.mixinClassNames = new TreeSet<String>();
+                       project.remoteClassAliasMap = new HashMap<String, 
String>();
                        List<ICompilationUnit> reachableCompilationUnits = 
project.getReachableCompilationUnitsInSWFOrder(roots);
                        
((FlexJSTarget)target).collectMixinMetaData(project.mixinClassNames, 
reachableCompilationUnits);
+                       
((FlexJSTarget)target).collectRemoteClassMetaData(project.remoteClassAliasMap, 
reachableCompilationUnits);
                        for (final ICompilationUnit cu : 
reachableCompilationUnits)
                        {
                            ICompilationUnit.UnitType cuType = 
cu.getCompilationUnitType();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a9e09f4b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCFlex.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCFlex.java 
b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCFlex.java
index 49de954..659e83d 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCFlex.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCFlex.java
@@ -27,6 +27,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
@@ -330,8 +331,10 @@ public class MXMLJSCFlex implements JSCompilerEntryPoint, 
ProblemQueryProvider,
                        Set<ICompilationUnit> incs = 
target.getIncludesCompilationUnits();
                        roots.addAll(incs);
                        project.mixinClassNames = new TreeSet<String>();
+                       project.remoteClassAliasMap = new HashMap<String, 
String>();
                        List<ICompilationUnit> reachableCompilationUnits = 
project.getReachableCompilationUnitsInSWFOrder(roots);
                        
((FlexJSTarget)target).collectMixinMetaData(project.mixinClassNames, 
reachableCompilationUnits);
+                       
((FlexJSTarget)target).collectRemoteClassMetaData(project.remoteClassAliasMap, 
reachableCompilationUnits);
                        for (final ICompilationUnit cu : 
reachableCompilationUnits)
                        {
                            ICompilationUnit.UnitType cuType = 
cu.getCompilationUnitType();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a9e09f4b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index 77bbf52..549d40e 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -301,6 +301,26 @@ public class MXMLFlexJSEmitter extends MXMLEmitter 
implements
                                infoInject += mixinInject;
                                sep = ",\n";
                        }
+                       Map<String, String> aliases = 
flexJSProject.remoteClassAliasMap;
+                       if (aliases != null && aliases.size() > 0)
+                       {
+                               String aliasInject = "remoteClassAliases: {";
+                               boolean firstOne = true;
+                               for (String className : aliases.keySet())
+                               {
+                                       if (isExternal(className))
+                                               continue;
+                                       if (!firstOne)
+                                               aliasInject += ", "; 
+                                       aliasInject += "\"" + className + "\": 
";
+                                       String alias = aliases.get(className);
+                                       aliasInject += "\"" + alias + "\"";
+                                       firstOne = false;
+                               }
+                               aliasInject += "}";
+                               infoInject += aliasInject;
+                               sep = ",\n";
+                       }
                        boolean isMX = false;
                        List<ISWC> swcs = flexJSProject.getLibraries();
                        for (ISWC swc : swcs)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a9e09f4b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
index 4d905bf..6714d44 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
@@ -84,7 +84,7 @@ public class FlexJSProject extends FlexProject
     private HashMap<ICompilationUnit, HashMap<String, DependencyType>> 
requires = new HashMap<ICompilationUnit, HashMap<String, DependencyType>>();
     private HashMap<ICompilationUnit, HashMap<String, DependencyType>> 
jsModules = new HashMap<ICompilationUnit, HashMap<String, DependencyType>>();
     public TreeSet<String> mixinClassNames;
-
+    public HashMap<String, String> remoteClassAliasMap;
     public JSGoogConfiguration config;
     public Configurator configurator;
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a9e09f4b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/targets/FlexJSTarget.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/targets/FlexJSTarget.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/targets/FlexJSTarget.java
index b3c5bd2..560deb1 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/targets/FlexJSTarget.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/targets/FlexJSTarget.java
@@ -306,4 +306,18 @@ public class FlexJSTarget extends JSTarget implements 
IJSTarget
                        }
        }
     }
+    
+    public void collectRemoteClassMetaData(Map<String, String> 
remoteClassAliasMap, List<ICompilationUnit> units)
+    {
+       for (ICompilationUnit unit : units)
+       {
+               try {
+                               
FlexApplicationFrame1Info.collectRemoteClassMetaData(remoteClassAliasMap, unit);
+                       } catch (InterruptedException e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       }
+       }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a9e09f4b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexApplicationFrame1Info.java
----------------------------------------------------------------------
diff --git 
a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexApplicationFrame1Info.java
 
b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexApplicationFrame1Info.java
index 08c1f79..9392cc6 100644
--- 
a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexApplicationFrame1Info.java
+++ 
b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexApplicationFrame1Info.java
@@ -21,6 +21,7 @@ package org.apache.flex.compiler.internal.targets;
 
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 
@@ -135,6 +136,25 @@ final class FlexApplicationFrame1Info extends 
FlexFrame1Info
     }
     
     /**
+     * Collects names of classes that are mix-ins.
+     * 
+     * @param compilationUnit
+     * @throws InterruptedException
+     */
+    public static void collectRemoteClassMetaData(Map<String, String> 
remoteClassNames, ICompilationUnit compilationUnit) throws InterruptedException
+    {
+        IFileScopeRequestResult result = 
compilationUnit.getFileScopeRequest().get();
+
+        for(IDefinition def : result.getExternallyVisibleDefinitions()) 
+        {
+            IMetaTag md = 
def.getMetaTagByName(IMetaAttributeConstants.ATTRIBUTE_REMOTECLASS);
+            if (md != null)
+                remoteClassNames.put(def.getQualifiedName(), 
md.getAttributeValue("alias"));
+        }
+    }
+    
+
+    /**
      * Collect the swcs that are contributing compilation units to this swf.
      * 
      * @param cu

Reply via email to