You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2015/06/14 08:14:50 UTC
git commit: [flex-falcon] [refs/heads/develop] - try revisiting main
class to inject Language require if needed. The flag may be set after the
mainCU gets written
Repository: flex-falcon
Updated Branches:
refs/heads/develop 1f72b5451 -> 53ed68ef7
try revisiting main class to inject Language require if needed. The flag may be set after the mainCU gets written
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/53ed68ef
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/53ed68ef
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/53ed68ef
Branch: refs/heads/develop
Commit: 53ed68ef76b7289a8cd024c24497f59e15b99f24
Parents: 1f72b54
Author: Alex Harui <ah...@apache.org>
Authored: Sat Jun 13 23:13:47 2015 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Sat Jun 13 23:14:33 2015 -0700
----------------------------------------------------------------------
.../flex/compiler/internal/test/TestBase.java | 87 ++++++++++++++++++++
.../mxml/flexjs/MXMLFlexJSPublisher.java | 33 +++++++-
2 files changed, 119 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/53ed68ef/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/TestBase.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/TestBase.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/TestBase.java
index 2a2e90b..cd69242 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/TestBase.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/TestBase.java
@@ -41,7 +41,10 @@ import org.apache.flex.compiler.codegen.as.IASEmitter;
import org.apache.flex.compiler.codegen.mxml.IMXMLEmitter;
import org.apache.flex.compiler.config.Configurator;
import org.apache.flex.compiler.driver.IBackend;
+import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
import org.apache.flex.compiler.internal.codegen.as.ASFilterWriter;
+import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
import org.apache.flex.compiler.internal.projects.FlexJSProject;
import org.apache.flex.compiler.internal.projects.FlexProject;
import org.apache.flex.compiler.internal.projects.FlexProjectConfigurator;
@@ -277,9 +280,93 @@ public class TestBase implements ITestBase
}
}
+ File outputRootDir = new File(
+ FilenameNormalization.normalize(tempDir
+ + File.separator + inputDirName));
+ String qname;
+ try {
+ qname = mainCU.getQualifiedNames().get(0);
+ final File outputClassFile = getOutputClassFile(qname
+ + "_output", outputRootDir);
+ appendLanguage(outputClassFile.getAbsolutePath(), qname);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
return compiledFileNames;
}
+ protected void writeFile(String path, String content, boolean append)
+ throws IOException
+ {
+ File tgtFile = new File(path);
+
+ if (!tgtFile.exists())
+ tgtFile.createNewFile();
+
+ FileWriter fw = new FileWriter(tgtFile, append);
+ fw.write(content);
+ fw.close();
+ }
+
+ private void appendLanguage(String path, String projectName)
+ throws IOException
+ {
+ StringBuilder appendString = new StringBuilder();
+ appendString.append(JSGoogEmitterTokens.GOOG_REQUIRE.getToken());
+ appendString.append(ASEmitterTokens.PAREN_OPEN.getToken());
+ appendString.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
+ appendString.append(JSFlexJSEmitterTokens.LANGUAGE_QNAME.getToken());
+ appendString.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
+ appendString.append(ASEmitterTokens.PAREN_CLOSE.getToken());
+ appendString.append(ASEmitterTokens.SEMICOLON.getToken());
+
+ String fileData = readCode(new File(path));
+ int reqidx = fileData.indexOf(appendString.toString());
+
+ if (reqidx == -1 && project instanceof FlexJSProject && ((FlexJSProject)project).needLanguage)
+ {
+ reqidx = fileData.lastIndexOf(JSGoogEmitterTokens.GOOG_REQUIRE.getToken());
+ if (reqidx == -1)
+ reqidx = fileData.lastIndexOf(JSGoogEmitterTokens.GOOG_PROVIDE.getToken());
+ reqidx = fileData.indexOf(";", reqidx);
+ String after = fileData.substring(reqidx + 1);
+ String before = fileData.substring(0, reqidx + 1);
+ String s = before + "\n" + appendString.toString() + after;
+ writeFile(path, s, false);
+ }
+ }
+
+ protected String readCode(File file)
+ {
+ String code = "";
+ try
+ {
+ BufferedReader in = new BufferedReader(new InputStreamReader(
+ new FileInputStream(file), "UTF8"));
+
+ String line = in.readLine();
+
+ while (line != null)
+ {
+ code += line + "\n";
+ line = in.readLine();
+ }
+ code = code.substring(0, code.length() - 1);
+
+ in.close();
+ }
+ catch (Exception e)
+ {
+ // nothing to see, move along...
+ }
+
+ return code;
+ }
+
protected File getOutputClassFile(String qname, File outputFolder)
{
String[] cname = qname.split("\\.");
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/53ed68ef/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 53a6181..4292534 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
@@ -39,7 +39,9 @@ import org.apache.commons.io.filefilter.RegexFileFilter;
import org.apache.flex.compiler.clients.problems.ProblemQuery;
import org.apache.flex.compiler.codegen.js.IJSPublisher;
import org.apache.flex.compiler.config.Configuration;
+import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.JSSharedData;
+import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogPublisher;
import org.apache.flex.compiler.internal.driver.js.flexjs.JSCSSCompilationSession;
@@ -255,6 +257,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
appendExportSymbol(projectIntermediateJSFilePath, projectName);
appendEncodedCSS(projectIntermediateJSFilePath, projectName);
+ appendLanguage(projectIntermediateJSFilePath, projectName);
//if (!subsetGoog)
//{
@@ -522,7 +525,35 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
writeFile(path, appendString.toString(), true);
}
}
-
+
+ private void appendLanguage(String path, String projectName)
+ throws IOException
+ {
+ StringBuilder appendString = new StringBuilder();
+ appendString.append(JSGoogEmitterTokens.GOOG_REQUIRE.getToken());
+ appendString.append(ASEmitterTokens.PAREN_OPEN.getToken());
+ appendString.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
+ appendString.append(JSFlexJSEmitterTokens.LANGUAGE_QNAME.getToken());
+ appendString.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
+ appendString.append(ASEmitterTokens.PAREN_CLOSE.getToken());
+ appendString.append(ASEmitterTokens.SEMICOLON.getToken());
+ appendString.append(File.separator);
+
+ String fileData = readCode(new File(path));
+ int reqidx = fileData.indexOf(appendString.toString());
+ if (reqidx == -1 && project.needLanguage)
+ {
+ reqidx = fileData.lastIndexOf(JSGoogEmitterTokens.GOOG_REQUIRE.getToken());
+ if (reqidx == -1)
+ reqidx = fileData.lastIndexOf(JSGoogEmitterTokens.GOOG_PROVIDE.getToken());
+ reqidx = fileData.indexOf(";", reqidx);
+ String after = fileData.substring(reqidx + 1);
+ String before = fileData.substring(0, reqidx + 1);
+ String s = before + "\n" + appendString.toString() + after;
+ writeFile(path, s, false);
+ }
+ }
+
protected String readCode(File file)
{
String code = "";