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 2016/11/05 08:50:46 UTC
[04/23] git commit: [flex-falcon]
[refs/heads/feature-autobuild/example-maven-dirs] - - Refactored the way the
closure resources are passed in to the compiler for maven builds - Made the
flexjs-compiler use a white-list to dump only a hand full of files
- Refactored the way the closure resources are passed in to the compiler for maven builds
- Made the flexjs-compiler use a white-list to dump only a hand full of files of the closure library instead of the entire content
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/43595eac
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/43595eac
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/43595eac
Branch: refs/heads/feature-autobuild/example-maven-dirs
Commit: 43595eacdfe152826e9274f684eca96e5e006666
Parents: 9694d69
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Sat Oct 29 21:14:39 2016 +0200
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Sat Oct 29 21:14:39 2016 +0200
----------------------------------------------------------------------
compiler-jx/pom.xml | 5 +
.../codegen/js/goog/JSGoogPublisher.java | 55 ++++-
.../internal/codegen/js/goog/JarSourceFile.java | 117 +++++++++
.../mxml/flexjs/MXMLFlexJSPublisher.java | 245 ++++++-------------
.../compiler/internal/graph/GoogDepsWriter.java | 19 +-
.../utils/JSClosureCompilerWrapper.java | 11 +-
.../flexjs/closure-whitelist.properites | 44 ++++
7 files changed, 301 insertions(+), 195 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/43595eac/compiler-jx/pom.xml
----------------------------------------------------------------------
diff --git a/compiler-jx/pom.xml b/compiler-jx/pom.xml
index 85a0175..01a307b 100644
--- a/compiler-jx/pom.xml
+++ b/compiler-jx/pom.xml
@@ -82,6 +82,11 @@
<artifactId>compiler</artifactId>
<version>0.8.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-compress</artifactId>
+ <version>1.11</version>
+ </dependency>
<dependency>
<groupId>args4j</groupId>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/43595eac/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java
index ea39e45..85abdef 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogPublisher.java
@@ -23,14 +23,13 @@ import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.List;
+import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.RegexFileFilter;
import org.apache.flex.compiler.clients.JSConfiguration;
@@ -271,6 +270,54 @@ public class JSGoogPublisher extends JSPublisher implements IJSPublisher
fw.close();
}
+ protected List<SourceFile> addClasspathResources(File jarFile) throws IOException {
+ return addClasspathResources(jarFile, null);
+ }
+
+ protected List<SourceFile> addClasspathResources(File jarFile, Properties whiteList) throws IOException {
+ List<SourceFile> sourceFiles = new LinkedList<SourceFile>();
+
+ JarFile jar = null;
+ try {
+ jar = new JarFile(jarFile);
+ for (Enumeration<JarEntry> jarEntries = jar.entries(); jarEntries.hasMoreElements(); ) {
+ JarEntry jarEntry = jarEntries.nextElement();
+ String fileName = jarEntry.getName();
+ // Add only JS files and if a white-list is specified, only files on that white-list.
+ if (fileName.endsWith(".js") && ((whiteList == null) || (whiteList.containsKey(fileName)))) {
+ // Dump the file.
+ InputStream is = jar.getInputStream(jarEntry);
+ String code = IOUtils.toString(is, "UTF-8");
+ SourceFile sourceFile = new JarSourceFile(jarEntry.getName(), code, false);
+ is.close();
+ sourceFiles.add(sourceFile);
+ }
+ }
+ } finally {
+ if(jar != null) {
+ jar.close();
+ }
+ }
+
+ return sourceFiles;
+ }
+
+ protected List<SourceFile> addDirectoryResources(File directory) throws IOException {
+ List<SourceFile> sourceFiles = new LinkedList<SourceFile>();
+
+ Collection<File> files = org.apache.commons.io.FileUtils.listFiles(directory,
+ new RegexFileFilter("^.*(\\.js)"), DirectoryFileFilter.DIRECTORY);
+ for (File file : files)
+ {
+ String relative = directory.toURI().relativize(file.toURI()).getPath();
+ String code = FileUtils.readFileToString(file, "UTF-8");
+ SourceFile sourceFile = new JarSourceFile(relative, code, false);
+ sourceFiles.add(sourceFile);
+ }
+
+ return sourceFiles;
+ }
+
protected void dumpJar(File jarFile, File outputDir) throws IOException
{
// TODO (mschmalle) for some reason ide thinks this has not been closed
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/43595eac/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java
new file mode 100644
index 0000000..8db5bc9
--- /dev/null
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java
@@ -0,0 +1,117 @@
+/*
+ *
+ * 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.internal.codegen.js.goog;
+
+import com.google.common.io.CharSource;
+import com.google.javascript.jscomp.Region;
+import com.google.javascript.jscomp.SourceFile;
+import org.apache.commons.io.IOUtils;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+
+/**
+ * Created by christoferdutz on 28.10.16.
+ */
+public class JarSourceFile extends SourceFile {
+
+ private String fileName;
+ private boolean isExtern;
+ private String code;
+
+ public JarSourceFile(String fileName, String code, boolean isExtern) {
+ super(fileName);
+ this.fileName = fileName;
+ this.isExtern = isExtern;
+ this.code = code;
+ }
+
+ @Override
+ public int getLineOffset(int lineno) {
+ return super.getLineOffset(lineno);
+ }
+
+ @Override
+ public String getCode() throws IOException {
+ return code;
+ }
+
+ @Override
+ public CharSource getCodeCharSource() {
+ return CharSource.wrap(code);
+ }
+
+ @Override
+ public Reader getCodeReader() throws IOException {
+ return new StringReader(code);
+ }
+
+ @Override
+ public String getOriginalPath() {
+ return fileName;
+ }
+
+ @Override
+ public void setOriginalPath(String originalPath) {
+ throw new RuntimeException("Not implemented");
+ }
+
+ @Override
+ public void clearCachedSource() {
+ // Ignore as we don't do caching.
+ }
+
+ @Override
+ public String getName() {
+ return fileName;
+ }
+
+ @Override
+ public boolean isExtern() {
+ return isExtern;
+ }
+
+ @Override
+ public int getLineOfOffset(int offset) {
+ return super.getLineOfOffset(offset);
+ }
+
+ @Override
+ public int getColumnOfOffset(int offset) {
+ throw new RuntimeException("Not implemented");
+ }
+
+ @Override
+ public String getLine(int lineNumber) {
+ throw new RuntimeException("Not implemented");
+ }
+
+ @Override
+ public Region getRegion(int lineNumber) {
+ throw new RuntimeException("Not implemented");
+ }
+
+ @Override
+ public String toString() {
+ return fileName;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/43595eac/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
index adc7e8b..491bdb1 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
@@ -18,28 +18,14 @@
*/
package org.apache.flex.compiler.internal.codegen.mxml.flexjs;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
+import com.google.javascript.jscomp.SourceFile;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.FileFileFilter;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
-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;
@@ -47,6 +33,7 @@ import org.apache.flex.compiler.css.ICSSPropertyValue;
import org.apache.flex.compiler.internal.codegen.js.JSSharedData;
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.codegen.js.goog.JarSourceFile;
import org.apache.flex.compiler.internal.css.CSSArrayPropertyValue;
import org.apache.flex.compiler.internal.css.CSSFontFace;
import org.apache.flex.compiler.internal.css.CSSFunctionCallPropertyValue;
@@ -59,6 +46,11 @@ import org.apache.flex.compiler.utils.JSClosureCompilerWrapper;
import org.apache.flex.swc.ISWC;
import org.apache.flex.swc.ISWCFileEntry;
+import java.io.*;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.util.*;
+
public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
{
@@ -172,7 +164,9 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
}
}
}
-
+
+ JSClosureCompilerWrapper compilerWrapper = new JSClosureCompilerWrapper(((JSGoogConfiguration) configuration).getJSCompilerOptions());
+
// 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
@@ -187,40 +181,34 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
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())
+ // 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();
+ resourceJarPath = URLDecoder.decode(resourceJarPath, "UTF-8");
+ if (resourceJarPath.contains(":"))
{
- 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();
- resourceJarPath = URLDecoder.decode(resourceJarPath, "UTF-8");
- if (resourceJarPath.contains(":"))
- {
- resourceJarPath = resourceJarPath.substring(resourceJarPath.lastIndexOf(":") + 1);
- }
- if (resourceJarPath.contains("!"))
- {
- resourceJarPath = resourceJarPath.substring(0, resourceJarPath.indexOf("!"));
- }
- File resourceJar = new File(resourceJarPath);
+ 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);
+ // We don't want to add all files to the classpath, so we only output the
+ // resources contained in 'closure-whitelist.properites' to the output.
+ Properties whiteList = new Properties();
+ whiteList.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(
+ "flexjs/closure-whitelist.properites"));
+
+ // Add the closure files from classpath.
+ for(SourceFile sourceFile : addClasspathResources(resourceJar, whiteList)) {
+ compilerWrapper.addJSSourceFile(sourceFile);
+ // And dump a copy to the output directory (we will need them to execute the application)
+ FileUtils.write(new File(new File(intermediateDirPath, "library/closure"),
+ sourceFile.getName()), sourceFile.getCode());
}
- // 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
@@ -229,12 +217,13 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
}
}
- // Dump FlexJS to the target directory.
@SuppressWarnings("unused")
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 it exists, dump FlexJS to the target directory.
if (resource != null)
{
File flexJsLibDir = new File(intermediateDir.getParent(), "flexjs");
@@ -266,17 +255,8 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
// 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 closureGoogSrcLibDirPath = closureLibDirPath + "/closure/goog/";
- final String closureGoogTgtLibDirPath = intermediateDirPath + "/library/closure/goog";
- // final String depsSrcFilePath = intermediateDirPath
- // + "/library/closure/goog/deps.js";
- @SuppressWarnings("unused")
- final String depsTgtFilePath = intermediateDirPath + "/deps.js";
final String projectIntermediateJSFilePath = intermediateDirPath + File.separator + outputFileName;
final String projectReleaseJSFilePath = releaseDirPath + File.separator + outputFileName;
@@ -290,16 +270,13 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
// (erikdebruin) We need to leave the 'goog' files and dependencies well
// 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));
+// FileUtils.copyDirectory(new File(closureGoogSrcLibDirPath), new File(closureGoogTgtLibDirPath));
// }
}
-
- JSClosureCompilerWrapper compilerWrapper = new JSClosureCompilerWrapper(((JSGoogConfiguration) configuration).getJSCompilerOptions());
+ // Iterate over all swc dependencies and add all the externs they contain.
+ // (Externs are located in a "externs" directory in the root of the SWC)
List<ISWC> swcs = project.getLibraries();
-
- // (erikdebruin) We don't want to forget that we need to tell the GCC
- // about them fancy externs we've been working so hard on
for (ISWC swc : swcs)
{
Map<String, ISWCFileEntry> files = swc.getFiles();
@@ -310,100 +287,31 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
ISWCFileEntry fileEntry = swc.getFile(key);
if (fileEntry != null)
{
- File destFile = new File(intermediateDirPath + File.separator + key);
- InputStream inStream = fileEntry.createInputStream();
- OutputStream outStream = FileUtils.openOutputStream(destFile);
- byte[] b = new byte[1024 * 1024];
- int bytes_read;
- while ((bytes_read = inStream.read(b)) != -1)
- {
- outStream.write(b, 0, bytes_read);
- }
- outStream.flush();
- outStream.close();
- inStream.close();
-
- String destPath = destFile.getAbsolutePath();
-
- System.out.println("using extern: " + destPath);
-
- compilerWrapper.addJSExternsFile(destPath);
+ InputStream is = fileEntry.createInputStream();
+ String code = IOUtils.toString(is, "UTF-8");
+ is.close();
+ JarSourceFile sexternFile = new JarSourceFile(key, code,true);
+ System.out.println("using extern: " + key);
+ compilerWrapper.addJSExternsFile(sexternFile);
}
}
}
}
GoogDepsWriter gdw = new GoogDepsWriter(intermediateDir, projectName, (JSGoogConfiguration) configuration, swcs);
- StringBuilder depsFileData = new StringBuilder();
- try
- {
- ArrayList<String> fileList = gdw.getListOfFiles(problems);
- for (String file : fileList)
- {
- compilerWrapper.addJSSourceFile(file);
- }
- ok = gdw.generateDeps(problems, depsFileData);
- /*
- * if (!subsetGoog) { writeFile(depsTgtFilePath,
- * depsFileData.toString(), false); } else { String s =
- * depsFileData.toString(); int c = s.indexOf("'goog.");
- * ArrayList<String> googreqs = new ArrayList<String>(); while (c !=
- * -1) { int c2 = s.indexOf("'", c + 1); String googreq =
- * s.substring(c, c2 + 1); googreqs.add(googreq); c =
- * s.indexOf("'goog.", c2); } HashMap<String, DependencyRecord>
- * defmap = new HashMap<String, DependencyRecord>(); // read in
- * goog's deps.js FileInputStream fis = new
- * FileInputStream(closureGoogSrcLibDirPath + "/deps.js"); Scanner
- * scanner = new Scanner(fis, "UTF-8"); String addDependency =
- * "goog.addDependency('"; int currentLine = 0; while
- * (scanner.hasNextLine()) { String googline = scanner.nextLine();
- * if (googline.indexOf(addDependency) == 0) { int c1 =
- * googline.indexOf("'", addDependency.length() + 1); String
- * googpath = googline.substring(addDependency.length(), c1); String
- * googdefs = googline.substring(googline.indexOf("[") + 1,
- * googline.indexOf("]")); String googdeps =
- * googline.substring(googline.lastIndexOf("[") + 1,
- * googline.lastIndexOf("]")); String[] thedefs =
- * googdefs.split(","); DependencyRecord deprec = new
- * DependencyRecord(); deprec.path = googpath; deprec.deps =
- * googdeps; deprec.line = googline; deprec.lineNumber =
- * currentLine; for (String def : thedefs) { def = def.trim();
- * defmap.put(def, deprec); } } currentLine++; } // (erikdebruin)
- * Prevent 'Resource leak' warning on line 212: scanner.close();
- * ArrayList<DependencyRecord> subsetdeps = new
- * ArrayList<DependencyRecord>(); HashMap<String, String> gotgoog =
- * new HashMap<String, String>(); for (String req : googreqs) {
- * DependencyRecord deprec = defmap.get(req); // if we've already
- * processed this file, skip if (!gotgoog.containsKey(deprec.path))
- * { gotgoog.put(deprec.path, null); subsetdeps.add(deprec);
- * addDeps(subsetdeps, gotgoog, defmap, deprec.deps); } } // now we
- * should have the subset of files we need in the order needed
- * StringBuilder sb = new StringBuilder();
- * sb.append("goog.addDependency('base.js', ['goog'], []);\n"); File
- * file = new File(closureGoogSrcLibDirPath + "/base.js");
- * FileUtils.copyFileToDirectory(file, new
- * File(closureGoogTgtLibDirPath));
- * compilerWrapper.addJSSourceFile(file.getCanonicalPath());
- * Collections.sort(subsetdeps, new DependencyLineComparator()); for
- * (DependencyRecord subsetdeprec : subsetdeps) {
- * sb.append(subsetdeprec.line).append("\n"); }
- * writeFile(depsTgtFilePath, sb.toString() +
- * depsFileData.toString(), false); // copy the required files for
- * (String googfn : gotgoog.keySet()) { file = new
- * File(closureGoogSrcLibDirPath + File.separator + googfn); String
- * dir = closureGoogTgtLibDirPath; if (googfn.contains("/")) { dir
- * += File.separator + googfn.substring(0, googfn.lastIndexOf("/"));
- * } FileUtils.copyFileToDirectory(file, new File(dir));
- * compilerWrapper.addJSSourceFile(file.getCanonicalPath()); } }
- */
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- return false;
+
+ // Add all the js-files generated by the compiler to to config.
+ ArrayList<String> fileList = gdw.getListOfFiles(problems);
+ for (String file : fileList) {
+ compilerWrapper.addJSSourceFile(file);
}
+
+ // Generate the content for the deps-file
+ String depsFileData = gdw.generateDeps(problems);
+
project.needCSS = gdw.needCSS;
-
+
+ // Copy static resources to the intermediate directory.
IOFileFilter pngSuffixFilter = FileFilterUtils.and(FileFileFilter.FILE,
FileFilterUtils.suffixFileFilter(".png"));
IOFileFilter gifSuffixFilter = FileFilterUtils.and(FileFileFilter.FILE,
@@ -415,12 +323,10 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
IOFileFilter assetFiles = FileFilterUtils.or(pngSuffixFilter, jpgSuffixFilter, gifSuffixFilter,
jsonSuffixFilter);
IOFileFilter subdirs = FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, assetFiles);
-
FileUtils.copyDirectory(srcDir, intermediateDir, subdirs);
- if (!configuration.debug())
- FileUtils.copyDirectory(srcDir, releaseDir, subdirs);
-
- // File srcDeps = new File(depsSrcFilePath);
+ if (!configuration.debug()) {
+ FileUtils.copyDirectory(srcDir, releaseDir, subdirs);
+ }
File template = ((JSGoogConfiguration)configuration).getHtmlTemplate();
if (!((JSGoogConfiguration)configuration).getSkipTranspile())
@@ -448,26 +354,15 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
if (!configuration.debug())
{
- /*
- * if (!subsetGoog) { // (erikdebruin) add 'goog' files Collection<File>
- * files = org.apache.commons.io.FileUtils.listFiles(new File(
- * closureGoogTgtLibDirPath), new RegexFileFilter("^.*(\\.js)"),
- * DirectoryFileFilter.DIRECTORY); for (File file : files) {
- * compilerWrapper.addJSSourceFile(file.getCanonicalPath()); } }
- */
- Collection<File> files = org.apache.commons.io.FileUtils.listFiles(new File(closureGoogSrcLibDirPath),
- new RegexFileFilter("^.*(\\.js)"), DirectoryFileFilter.DIRECTORY);
- for (File file : files)
- {
- compilerWrapper.addJSSourceFile(file.getCanonicalPath());
- }
-
- /*
- * // (erikdebruin) add project files for (String filePath :
- * gdw.filePathsInOrder) { compilerWrapper.addJSSourceFile( new
- * File(filePath).getCanonicalPath()); }
- */
-
+
+// sourceFiles.addAll(addDirectoryResources(new File(closureGoogSrcLibDirPath)));
+
+ // Add all SourceFiles to the compiler.
+/* for(SourceFile sourceFile : sourceFiles) {
+ compilerWrapper.addJSSourceFile(sourceFile);
+ }
+*/
+
compilerWrapper.setOptions(projectReleaseJSFilePath, useStrictPublishing, projectName);
/*
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/43595eac/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
index 7bf9e95..8b49a88 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
@@ -74,7 +74,7 @@ public class GoogDepsWriter {
public boolean needCSS = false;
- public ArrayList<String> getListOfFiles(ProblemQuery problems) throws InterruptedException
+ public ArrayList<String> getListOfFiles(ProblemQuery problems)
{
problemsFound = false;
this.problems = problems;
@@ -92,7 +92,7 @@ public class GoogDepsWriter {
return files;
}
- public boolean generateDeps(ProblemQuery problems, StringBuilder depsFileData) throws InterruptedException, FileNotFoundException
+ public String generateDeps(ProblemQuery problems) throws FileNotFoundException
{
problemsFound = false;
this.problems = problems;
@@ -101,25 +101,18 @@ public class GoogDepsWriter {
buildDB();
dps = sort(mainName);
}
- String outString = "// generated by FalconJX" + "\n";
+ StringBuilder sb = new StringBuilder("// generated by FalconJX\n");
int n = dps.size();
for (int i = n - 1; i >= 0; i--)
{
GoogDep gd = dps.get(i);
if (!isGoogClass(gd.className))
{
- String s = "goog.addDependency('";
- s += relativePath(gd.filePath);
- s += "', ['";
- s += gd.className;
- s += "'], [";
- s += getDependencies(gd.deps);
- s += "]);\n";
- outString += s;
+ sb.append("goog.addDependency('").append(relativePath(gd.filePath)).append("', ['")
+ .append(gd.className).append("'], [").append(getDependencies(gd.deps)).append("]);\n");
}
}
- depsFileData.append(outString);
- return !problemsFound;
+ return sb.toString();
}
private boolean isGoogClass(String className)
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/43595eac/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java b/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
index f39382d..fa372fd 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
@@ -91,9 +91,14 @@ public class JSClosureCompilerWrapper
public void addJSSourceFile(String fileName)
{
- jsSourceFiles_.add(SourceFile.fromFile(fileName));
+ addJSSourceFile(SourceFile.fromFile(fileName));
}
-
+
+ public void addJSSourceFile(SourceFile file)
+ {
+ jsSourceFiles_.add(file);
+ }
+
public void compile()
{
compiler_.compile(jsExternsFiles_, jsSourceFiles_, options_);
@@ -103,7 +108,7 @@ public class JSClosureCompilerWrapper
FileWriter targetFile = new FileWriter(targetFilePath);
targetFile.write(compiler_.toSource());
targetFile.close();
-
+
FileWriter sourceMapFile = new FileWriter(options_.sourceMapOutputPath);
compiler_.getSourceMap().appendTo(sourceMapFile, "");
sourceMapFile.close();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/43595eac/compiler-jx/src/main/resources/flexjs/closure-whitelist.properites
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/resources/flexjs/closure-whitelist.properites b/compiler-jx/src/main/resources/flexjs/closure-whitelist.properites
new file mode 100644
index 0000000..5fd746b
--- /dev/null
+++ b/compiler-jx/src/main/resources/flexjs/closure-whitelist.properites
@@ -0,0 +1,44 @@
+
+# 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.
+
+goog/array/array.js
+goog/asserts/asserts.js
+goog/base.js
+goog/deps.js
+goog/debug/entrypointregistry.js
+goog/debug/error.js
+goog/disposable/disposable.js
+goog/disposable/idisposable.js
+goog/dom/nodetype.js
+goog/events/browserevent.js
+goog/events/browserfeature.js
+goog/events/event.js
+goog/events/eventid.js
+goog/events/events.js
+goog/events/eventtarget.js
+goog/events/eventtype.js
+goog/events/listenable.js
+goog/events/listener.js
+goog/events/listenermap.js
+goog/labs/useragent/browser.js
+goog/labs/useragent/engine.js
+goog/labs/useragent/platform.js
+goog/labs/useragent/util.js
+goog/object/object.js
+goog/reflect/reflect.js
+goog/string/string.js
+goog/useragent/useragent.js
+goog/bootstrap/nodejs.js
\ No newline at end of file