multiple target compiling

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

Branch: refs/heads/dual
Commit: 283e87ec2c0b4a3724ae0578c3a327436b08b221
Parents: 55ee968
Author: Alex Harui <[email protected]>
Authored: Sat Jan 28 22:29:47 2017 -0800
Committer: Alex Harui <[email protected]>
Committed: Sat Jan 28 22:29:47 2017 -0800

----------------------------------------------------------------------
 .../flex/compiler/clients/JSConfiguration.java  | 57 ++++++++++++++++++++
 .../apache/flex/compiler/clients/MXMLJSC.java   |  2 +
 .../mxml/flexjs/TestFlexJSMXMLApplication.java  | 33 ++++++++++++
 .../flexjs/files/FlexJSTest_again_Flash.mxml    | 51 ++++++++++++++++++
 .../flex/compiler/config/Configuration.java     |  4 +-
 5 files changed, 145 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/283e87ec/compiler-jx/src/main/java/org/apache/flex/compiler/clients/JSConfiguration.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/JSConfiguration.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/JSConfiguration.java
index a06698d..35d3a4b 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/JSConfiguration.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/JSConfiguration.java
@@ -33,6 +33,7 @@ import 
org.apache.flex.compiler.internal.config.annotations.Arguments;
 import org.apache.flex.compiler.internal.config.annotations.Config;
 import org.apache.flex.compiler.internal.config.annotations.InfiniteArguments;
 import org.apache.flex.compiler.internal.config.annotations.Mapping;
+import org.apache.flex.compiler.internal.config.annotations.SoftPrerequisites;
 
 import com.google.common.collect.ImmutableList;
 
@@ -111,4 +112,60 @@ public class JSConfiguration extends Configuration
         sourceMap = value;
     }
 
+    //
+    // 'compiler.js-external-library-path' option
+    //
+
+    private final List<String> jsexternalLibraryPath = new ArrayList<String>();
+
+    @Override
+    public List<String> getCompilerExternalLibraryPath()
+    {
+       if (jsexternalLibraryPath.size() > 0)
+               return jsexternalLibraryPath;
+       return super.getCompilerExternalLibraryPath();
+    }
+
+    @Config(allowMultiple = true, isPath = true)
+    @Mapping({ "compiler", "js-external-library-path" })
+    @Arguments(Arguments.PATH_ELEMENT)
+    @InfiniteArguments
+    public void setCompilerJsExternalLibraryPath(ConfigurationValue cv, 
String[] pathlist) throws ConfigurationException
+    {
+        final ImmutableList<String> pathElements = 
ImmutableList.copyOf(pathlist);
+        final ImmutableList<String> resolvedPaths = expandTokens(pathElements, 
locales, cv,
+                !reportMissingCompilerLibraries);
+        jsexternalLibraryPath.addAll(resolvedPaths);
+    }
+
+    //
+    // 'compiler.js-library-path' option
+    //
+
+    private final List<String> jslibraryPath = new ArrayList<String>();
+
+    @Override
+    public List<String> getCompilerLibraryPath()
+    {
+       if (jslibraryPath.size() > 0)
+               return jslibraryPath;
+       return super.getCompilerLibraryPath();
+    }
+
+    /**
+     * Links SWC files to the resulting application SWF file. The compiler 
only links in those classes for the SWC file
+     * that are required. You can specify a directory or individual SWC files.
+     */
+    @Config(allowMultiple = true, isPath = true)
+    @Mapping({ "compiler", "js-library-path" })
+    @Arguments(Arguments.PATH_ELEMENT)
+    @InfiniteArguments
+    public void setCompilerJsLibraryPath(ConfigurationValue cv, String[] 
pathlist) throws CannotOpen
+    {
+        final ImmutableList<String> resolvedPaths = 
expandTokens(Arrays.asList(pathlist), locales, cv,
+                !reportMissingCompilerLibraries);
+        jslibraryPath.addAll(resolvedPaths);
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/283e87ec/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 8a96d6d..12ac04f 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
@@ -395,6 +395,8 @@ public class MXMLJSC implements JSCompilerEntryPoint, 
ProblemQueryProvider,
                if (!(arg.startsWith("-compiler.targets") ||
                          arg.startsWith("-closure-lib") ||
                          arg.startsWith("-remove-circulars") ||
+                         arg.startsWith("-compiler.js-external-library-path") 
||
+                         arg.startsWith("-compiler.js-library-path") ||
                          arg.startsWith("-source-map")))
                        list.add(arg);                                          
        }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/283e87ec/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
index 70dec15..0f4e0de 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
@@ -811,6 +811,39 @@ public class TestFlexJSMXMLApplication extends 
FlexJSTestBase
         assertThat(result, is(0));
     }
 
+    @Test
+    public void testFlexJSMainFileDualFlash()
+    {
+       /* this should error because a Flash APi is used */
+        MXMLJSC mxmlc = new MXMLJSC();
+        String[] args = new String[18];
+        args[0] = "-compiler.targets=SWF,JSFlex";
+        args[1] = "-remove-circulars";
+        args[2] = "-library-path=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/libs/Core.swc")).getPath();
+        args[3] = "-library-path+=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/libs/Binding.swc")).getPath();
+        args[4] = "-library-path+=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/libs/Network.swc")).getPath();
+        args[5] = "-library-path+=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/libs/Collections.swc")).getPath();
+        args[6] = "-library-path+=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/projects/Basic/target/Basic.swc")).getPath();
+        args[7] = "-external-library-path+=" + 
testAdapter.getPlayerglobal().getPath();
+        args[8] = "-output=" + new File(testAdapter.getTempDir(), 
"bin-debug/FlexJSTest_again_Flash.swf").getPath();
+        if (env.GOOG != null)
+               args[9] = "-closure-lib=" + new 
File(FilenameNormalization.normalize(env.GOOG)).getPath();
+        else
+               args[9] = "-define=COMPILE::temp,false";
+        args[10] = "-compiler.allow-subclass-overrides";
+        args[11] = "-compiler.js-library-path=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/js/FlexJS/libs/CoreJS.swc")).getPath();
+        args[12] = "-compiler.js-library-path+=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/js/FlexJS/libs/BindingJS.swc")).getPath();
+        args[13] = "-compiler.js-library-path+=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/js/FlexJS/libs/NetworkJS.swc")).getPath();
+        args[14] = "-compiler.js-library-path+=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/js/FlexJS/libs/CollectionsJS.swc")).getPath();
+        args[15] = "-compiler.js-library-path+=" + new 
File(FilenameNormalization.normalize(env.ASJS + 
"/frameworks/js/FlexJS/libs/BasicJS.swc")).getPath();
+        args[16] = "-compiler.js-external-library-path=" + new 
File(FilenameNormalization.normalize(env.ASJS + "/js/libs/js.swc")).getPath();
+        args[17] = new File(testAdapter.getUnitTestBaseDir(), 
"flexjs/files/FlexJSTest_again_Flash.mxml").getPath();
+
+        int result = mxmlc.mainNoExit(args, errors, true);
+        assertThat(result, is(3));
+        assertErrors("Access of possibly undefined property scrollRect.");
+    }
+
     @Override
     protected void addSourcePaths(List<File> sourcePaths)
     {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/283e87ec/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again_Flash.mxml
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again_Flash.mxml 
b/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again_Flash.mxml
new file mode 100644
index 0000000..286664d
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again_Flash.mxml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<basic:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
+                                  xmlns:local="*"
+                                  
xmlns:basic="library://ns.apache.org/flexjs/basic" 
+                                  xmlns:models="models.*" 
+                                  xmlns:controllers="controllers.*"
+                                  initialize="MyModel(model).labelText='Hello 
World'; scrollRect = null"
+                                  >
+       <basic:valuesImpl>
+               <basic:SimpleCSSValuesImpl />
+       </basic:valuesImpl>
+       <basic:initialView>
+               <local:MyInitialView />
+       </basic:initialView>
+       <basic:model>
+               <models:MyModel />
+       </basic:model>
+       <basic:controller>
+               <controllers:MyController />
+       </basic:controller>
+    <basic:beads>
+        <basic:HTTPService id="service">
+            <basic:LazyCollection id="collection">
+                <basic:inputParser>
+                    <basic:JSONInputParser />
+                </basic:inputParser>
+                <basic:itemConverter>
+                    <local:StockDataJSONItemConverter />
+                </basic:itemConverter> 
+            </basic:LazyCollection>
+        </basic:HTTPService>
+    </basic:beads>
+</basic:Application>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/283e87ec/compiler/src/main/java/org/apache/flex/compiler/config/Configuration.java
----------------------------------------------------------------------
diff --git 
a/compiler/src/main/java/org/apache/flex/compiler/config/Configuration.java 
b/compiler/src/main/java/org/apache/flex/compiler/config/Configuration.java
index 3fbf713..7d9f3d7 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/config/Configuration.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/config/Configuration.java
@@ -2224,7 +2224,7 @@ public class Configuration
     //
 
     private final List<String> libraryPath = new ArrayList<String>();
-    private boolean reportMissingCompilerLibraries = true;
+    protected boolean reportMissingCompilerLibraries = true;
 
     /**
      * Sets whether to report missing libraries in the configuration. If this 
is false any missing libraries will not be
@@ -2264,7 +2264,7 @@ public class Configuration
     // 'compiler.locale' option
     //
 
-    private final List<String> locales = new ArrayList<String>();
+    protected final List<String> locales = new ArrayList<String>();
 
     public List<String> getCompilerLocales()
     {

Reply via email to