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)
        {

Reply via email to