You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2020/10/29 17:15:33 UTC

[royale-compiler] branch develop updated: GoogDepsWriter: rewriting framework sourceRoot in source maps now also checks for /frameworks/projects/

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 8ab9808  GoogDepsWriter: rewriting framework sourceRoot in source maps now also checks for /frameworks/projects/
8ab9808 is described below

commit 8ab9808355d477acd6a7c6a25a9492725c3507bb
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Thu Oct 29 10:15:23 2020 -0700

    GoogDepsWriter: rewriting framework sourceRoot in source maps now also checks for /frameworks/projects/
    
    This is in addition to the previous check for /frameworks/js/projects/
---
 .../compiler/internal/graph/GoogDepsWriter.java    | 134 ++++++++++++++-------
 1 file changed, 90 insertions(+), 44 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 5f2f828..8bcf02a 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
@@ -125,9 +125,16 @@ public class GoogDepsWriter {
 			else
 				files.add(gd.filePath);
 			visited.put(gd.className, gd);
-			if(sourceMaps && sourceMapsSourceRoot != null)
+			if(sourceMaps)
 			{
-				rewriteSourceMapSourceRoot(gd);
+				if(sourceMapsSourceRoot != null && sourceMapsSourceRoot.length() > 0)
+				{
+					rewriteSourceMapSourceRoot(gd);
+				}
+				else
+				{
+					rewriteSourceMapSourceRootForFramework(gd);
+				}
 			}
 		}
 		rewriteSourceMapSourceRoot(depMap.get(mainName));
@@ -150,6 +157,70 @@ public class GoogDepsWriter {
 		return files;
 	}
 
+	private void rewriteSourceMapSourceRootForFramework(GoogDep gd)
+	{
+		if (!sourceMaps)
+		{
+			return;
+		}
+		File sourceMapFile = new File(gd.filePath + ".map");
+		if (!sourceMapFile.exists())
+		{
+			return;
+		}
+		String sourceMapContents = null;
+		try
+		{
+			sourceMapContents = FileUtils.readFileToString(sourceMapFile, Charset.forName("utf8"));
+		}
+		catch(IOException e)
+		{
+			return;
+		}
+		SourceMapConsumerV3 sourceMapConsumer = new SourceMapConsumerV3();
+		try
+		{
+			sourceMapConsumer.parse(sourceMapContents);
+		}
+		catch(SourceMapParseException e)
+		{
+			sourceMapConsumer = null;
+		}
+		if (sourceMapConsumer == null)
+		{
+			return;
+		}
+		String sourceRoot = sourceMapConsumer.getSourceRoot();
+		int index = sourceRoot.indexOf("/frameworks/js/projects/");
+		if(index == -1)
+		{
+			index = sourceRoot.indexOf("/frameworks/projects/");
+		}
+		if(index == -1)
+		{
+			return;
+		}
+		File royalelib = new File(System.getProperty("royalelib"));
+		File newSourceRoot = new File(royalelib.getParent(), sourceRoot.substring(index + 1));
+		String newSourceRootUri = convertSourcePathToURI(newSourceRoot.getAbsolutePath());
+		if (newSourceRootUri.equals(sourceMapConsumer.getSourceRoot()))
+		{
+			//no need to rewrite
+			return;
+		}
+		SourceMapGeneratorV3 sourceMapGenerator = SourceMapUtils.sourceMapConsumerToGenerator(sourceMapConsumer);
+		sourceMapGenerator.setSourceRoot(newSourceRootUri);
+		String newSourceMapContents = SourceMapUtils.sourceMapGeneratorToString(sourceMapGenerator, new File(gd.filePath).getName());
+		try
+		{
+			FileUtils.write(sourceMapFile, newSourceMapContents, "utf8");
+		}
+		catch(IOException e)
+		{
+			return;
+		}
+	}
+
 	private void rewriteSourceMapSourceRoot(GoogDep gd)
 	{
 		if (!sourceMaps || sourceMapsSourceRoot == null || sourceMapsSourceRoot.length() == 0)
@@ -179,23 +250,24 @@ public class GoogDepsWriter {
 		{
 			sourceMapConsumer = null;
 		}
-		if (sourceMapConsumer != null)
+		if (sourceMapConsumer == null)
 		{
-			if (sourceMapsSourceRoot.equals(sourceMapConsumer.getSourceRoot()))
-			{
-				//no need to rewrite
-				return;
-			}
-			SourceMapGeneratorV3 sourceMapGenerator = SourceMapUtils.sourceMapConsumerToGeneratorWithRemappedSourceRoot(sourceMapConsumer, sourceMapsSourceRoot, gd.className);
-			String newSourceMapContents = SourceMapUtils.sourceMapGeneratorToString(sourceMapGenerator, new File(gd.filePath).getName());
-			try
-			{
-				FileUtils.write(sourceMapFile, newSourceMapContents, "utf8");
-			}
-			catch(IOException e)
-			{
-				return;
-			}
+			return;
+		}
+		if (sourceMapsSourceRoot.equals(sourceMapConsumer.getSourceRoot()))
+		{
+			//no need to rewrite
+			return;
+		}
+		SourceMapGeneratorV3 sourceMapGenerator = SourceMapUtils.sourceMapConsumerToGeneratorWithRemappedSourceRoot(sourceMapConsumer, sourceMapsSourceRoot, gd.className);
+		String newSourceMapContents = SourceMapUtils.sourceMapGeneratorToString(sourceMapGenerator, new File(gd.filePath).getName());
+		try
+		{
+			FileUtils.write(sourceMapFile, newSourceMapContents, "utf8");
+		}
+		catch(IOException e)
+		{
+			return;
 		}
 	}
 	
@@ -1229,32 +1301,6 @@ public class GoogDepsWriter {
 							File sourceMapDestFile = new File(sourceMapFn);
 							inStream = sourceMapFileEntry.createInputStream();
 							String sourceMapContents = IOUtils.toString(inStream, Charset.forName("utf8"));
-							if (sourceMapsSourceRoot == null)
-							{
-								SourceMapConsumerV3 sourceMapConsumer = new SourceMapConsumerV3();
-								try
-								{
-									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 = SourceMapUtils.sourceMapConsumerToGenerator(sourceMapConsumer);
-										String newSourceRootUri = convertSourcePathToURI(newSourceRoot.getAbsolutePath());
-										sourceMapGenerator.setSourceRoot(newSourceRootUri);
-										sourceMapContents = SourceMapUtils.sourceMapGeneratorToString(sourceMapGenerator, destFile.getName());
-									}
-								}
-							}
 							FileUtils.writeStringToFile(sourceMapDestFile, sourceMapContents, Charset.forName("utf8"));
 						}
 					}