This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/develop by this push:
new ecfd694 GoogDepsWriter: rewrites sourceRoot for framework source maps
so that it points to the local SDK path instead of CI server SDK path
ecfd694 is described below
commit ecfd694e2b3064839e9a41dc864ec8b5321ec334
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Oct 28 10:28:00 2020 -0700
GoogDepsWriter: rewrites sourceRoot for framework source maps so that it
points to the local SDK path instead of CI server SDK path
---
.../compiler/internal/graph/GoogDepsWriter.java | 58 +++++++++++++++++++---
1 file changed, 51 insertions(+), 7 deletions(-)
diff --git
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
index e64e17b..da29ceb 100644
---
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
+++
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
@@ -34,6 +34,7 @@ import java.util.Map;
import java.util.Set;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
import org.apache.royale.compiler.clients.problems.ProblemQuery;
import org.apache.royale.compiler.common.DependencyType;
import org.apache.royale.compiler.common.DependencyTypeSet;
@@ -1351,15 +1352,43 @@ public class GoogDepsWriter {
String sourceMapFn =
outputFolderPath + File.separator + classPath + ".js.map";
File sourceMapDestFile
= new File(sourceMapFn);
inStream =
sourceMapFileEntry.createInputStream();
- outStream =
FileUtils.openOutputStream(sourceMapDestFile);
- b = new byte[1024 *
1024];
- while ((bytes_read =
inStream.read(b)) != -1)
+ String
sourceMapContents = IOUtils.toString(inStream, Charset.forName("utf8"));
+ SourceMapConsumerV3
sourceMapConsumer = new SourceMapConsumerV3();
+ try
{
-
outStream.write(b, 0, bytes_read);
+
sourceMapConsumer.parse(sourceMapContents);
+ }
+
catch(SourceMapParseException e)
+ {
+
sourceMapConsumer = null;
+ }
+ if(sourceMapConsumer !=
null)
+ {
+ String
sourceRoot = sourceMapConsumer.getSourceRoot();
+ int index =
sourceRoot.indexOf("/frameworks/js/projects/");
+ if(index != -1)
+ {
+ File
royalelib = new File(System.getProperty("royalelib"));
+ File
newSourceRoot = new File(royalelib.getParent(), sourceRoot.substring(index +
1));
+
SourceMapGeneratorV3 sourceMapGenerator =
sourceMapConsumerToGenerator(sourceMapConsumer);
+ String
newSourceRootUri = convertSourcePathToURI(newSourceRoot.getAbsolutePath());
+
sourceMapGenerator.setSourceRoot(newSourceRootUri);
+
StringBuilder builder = new StringBuilder();
+ try
+ {
+
sourceMapGenerator.appendTo(builder, destFile.getName());
+ }
+
catch(IOException e)
+ {
+
return "";
+ }
+
FileUtils.writeStringToFile(sourceMapDestFile, builder.toString(),
Charset.forName("utf8"));
+ }
+ else
+ {
+
FileUtils.writeStringToFile(sourceMapDestFile, sourceMapContents,
Charset.forName("utf8"));
+ }
}
- outStream.flush();
- outStream.close();
- inStream.close();
}
}
@@ -1533,6 +1562,21 @@ public class GoogDepsWriter {
path = path.replace('\\', '/');
return path;
}
+
+ private String convertSourcePathToURI(String sourcePath)
+ {
+ if (sourcePath == null)
+ {
+ return null;
+ }
+ File file = new File(sourcePath);
+ if (file.isAbsolute())
+ {
+ sourcePath = "file:///" + sourcePath;
+ }
+ //prefer forward slash because web browser devtools expect it
+ return sourcePath.replace('\\', '/');
+ }
boolean isGoogProvided(String className)
{