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 2018/11/02 18:28:55 UTC

[royale-compiler] branch develop updated: compiler-jx: refactored IJSWriter writeTo() to accept an OutputStream for the source map so that it can be written to something other than a file, if desired

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 e14f37f  compiler-jx: refactored IJSWriter writeTo() to accept an OutputStream for the source map so that it can be written to something other than a file, if desired
e14f37f is described below

commit e14f37fd63883a79294dc042e2a4cb5ff64aef3a
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Fri Nov 2 11:28:51 2018 -0700

    compiler-jx: refactored IJSWriter writeTo() to accept an OutputStream for the source map so that it can be written to something other than a file, if desired
    
    The will eventually allow SWC files to include source maps so that libraries can be debugged
---
 .../apache/royale/compiler/clients/MXMLJSC.java    | 12 ++++++++++--
 .../royale/compiler/clients/MXMLJSCNative.java     | 10 +++++++++-
 .../royale/compiler/clients/MXMLJSCNode.java       | 10 +++++++++-
 .../royale/compiler/clients/MXMLJSCRoyale.java     | 14 +++++++++++---
 .../compiler/clients/MXMLJSCRoyaleCordova.java     | 10 +++++++++-
 .../royale/compiler/codegen/js/IJSWriter.java      |  6 +++---
 .../compiler/internal/codegen/js/JSWriter.java     | 22 +++++++++++-----------
 .../compiler/internal/codegen/mxml/MXMLWriter.java | 16 +++++++++-------
 8 files changed, 71 insertions(+), 29 deletions(-)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
index 5d89c97..8129274 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
@@ -577,16 +577,24 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider,
 	                        BufferedOutputStream out = new BufferedOutputStream(
 	                                new FileOutputStream(outputClassFile));
 	
+                            BufferedOutputStream sourceMapOut = null;
 	                        File outputSourceMapFile = null;
 	                        if (project.config.getSourceMap())
 	                        {
 	                            outputSourceMapFile = getOutputSourceMapFile(
 	                                    cu.getQualifiedNames().get(0), outputFolder);
+                                sourceMapOut = new BufferedOutputStream(
+                                        new FileOutputStream(outputSourceMapFile));
 	                        }
 	                        
-	                        writer.writeTo(out, outputSourceMapFile);
+	                        writer.writeTo(out, sourceMapOut, outputSourceMapFile);
 	                        out.flush();
-	                        out.close();
+                            out.close();
+                            if (sourceMapOut != null)
+                            {
+                                sourceMapOut.flush();
+                                sourceMapOut.close();
+                            }
 	                        writer.close();
 	                    }
 	                }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java
index f0f3c3a..6bae88f 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java
@@ -356,16 +356,24 @@ public class MXMLJSCNative implements JSCompilerEntryPoint, ProblemQueryProvider
 	                        BufferedOutputStream out = new BufferedOutputStream(
 	                                new FileOutputStream(outputClassFile));
 	
+                            BufferedOutputStream sourceMapOut = null;
 	                        File outputSourceMapFile = null;
 	                        if (project.config.getSourceMap())
 	                        {
 	                            outputSourceMapFile = getOutputSourceMapFile(
 	                                    cu.getQualifiedNames().get(0), outputFolder);
+                                sourceMapOut = new BufferedOutputStream(
+                                        new FileOutputStream(outputSourceMapFile));
 	                        }
 	                        
-	                        writer.writeTo(out, outputSourceMapFile);
+	                        writer.writeTo(out, sourceMapOut, outputSourceMapFile);
 	                        out.flush();
 	                        out.close();
+                            if (sourceMapOut != null)
+                            {
+                                sourceMapOut.flush();
+                                sourceMapOut.close();
+                            }
 	                        writer.close();
 	                    }
 	                }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java
index 463aa35..ed98d56 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java
@@ -358,16 +358,24 @@ public class MXMLJSCNode implements JSCompilerEntryPoint, ProblemQueryProvider,
 	                        BufferedOutputStream out = new BufferedOutputStream(
 	                                new FileOutputStream(outputClassFile));
 	
+                            BufferedOutputStream sourceMapOut = null;
 	                        File outputSourceMapFile = null;
 	                        if (project.config.getSourceMap())
 	                        {
 	                            outputSourceMapFile = getOutputSourceMapFile(
 	                                    cu.getQualifiedNames().get(0), outputFolder);
+                                sourceMapOut = new BufferedOutputStream(
+                                        new FileOutputStream(outputSourceMapFile));
 	                        }
 	                        
-	                        writer.writeTo(out, outputSourceMapFile);
+	                        writer.writeTo(out, sourceMapOut, outputSourceMapFile);
 	                        out.flush();
 	                        out.close();
+                            if (sourceMapOut != null)
+                            {
+                                sourceMapOut.flush();
+                                sourceMapOut.close();
+                            }
 	                        writer.close();
 	                    }
 	                }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java
index 475082f..cbcfa28 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java
@@ -382,17 +382,25 @@ public class MXMLJSCRoyale implements JSCompilerEntryPoint, ProblemQueryProvider
 	
 	                        BufferedOutputStream out = new BufferedOutputStream(
 	                                new FileOutputStream(outputClassFile));
-	
+
+                            BufferedOutputStream sourceMapOut = null;
 	                        File outputSourceMapFile = null;
 	                        if (project.config.getSourceMap())
 	                        {
 	                            outputSourceMapFile = getOutputSourceMapFile(
-	                                    cu.getQualifiedNames().get(0), outputFolder);
+                                        cu.getQualifiedNames().get(0), outputFolder);
+                                sourceMapOut = new BufferedOutputStream(
+	                                    new FileOutputStream(outputSourceMapFile));
 	                        }
 	                        
-	                        writer.writeTo(out, outputSourceMapFile);
+	                        writer.writeTo(out, sourceMapOut, outputSourceMapFile);
 	                        out.flush();
 	                        out.close();
+                            if (sourceMapOut != null)
+                            {
+                                sourceMapOut.flush();
+                                sourceMapOut.close();
+                            }
 	                        writer.close();
 	                    }
 	                }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java
index 503d75f..6e91ea0 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java
@@ -361,16 +361,24 @@ public class MXMLJSCRoyaleCordova implements JSCompilerEntryPoint, ProblemQueryP
 	                        BufferedOutputStream out = new BufferedOutputStream(
 	                                new FileOutputStream(outputClassFile));
 	
+                            BufferedOutputStream sourceMapOut = null;
 	                        File outputSourceMapFile = null;
 	                        if (project.config.getSourceMap())
 	                        {
 	                            outputSourceMapFile = getOutputSourceMapFile(
 	                                    cu.getQualifiedNames().get(0), outputFolder);
+                                sourceMapOut = new BufferedOutputStream(
+                                        new FileOutputStream(outputSourceMapFile));
 	                        }
 	                        
-	                        writer.writeTo(out, outputSourceMapFile);
+	                        writer.writeTo(out, sourceMapOut, outputSourceMapFile);
 	                        out.flush();
 	                        out.close();
+                            if (sourceMapOut != null)
+                            {
+                                sourceMapOut.flush();
+                                sourceMapOut.close();
+                            }
 	                        writer.close();
 	                    }
 	                }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/IJSWriter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/IJSWriter.java
index 50ea5cc..09524f2 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/IJSWriter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/IJSWriter.java
@@ -36,8 +36,8 @@ public interface IJSWriter extends IASWriter
      * Write JS file and source map.
      *
      * @param jsOut JS output stream
-     * @param sourceMapOut Source map file
+     * @param sourceMapOut Source map output stream
+     * @param sourceMapFile Source map file
      */
-    void writeTo(OutputStream jsOut, File sourceMapOut);
-
+    void writeTo(OutputStream jsOut, OutputStream sourceMapOut, File sourceMapFile);
 }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSWriter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSWriter.java
index d16a3fc..50b0be2 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSWriter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSWriter.java
@@ -19,9 +19,7 @@
 
 package org.apache.royale.compiler.internal.codegen.js;
 
-import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.List;
@@ -79,7 +77,7 @@ public class JSWriter implements IJSWriter
     @Override
     public void writeTo(OutputStream out)
     {
-        writeTo(out, null);
+        writeTo(out, null, null);
     }
 
     @Override
@@ -88,7 +86,7 @@ public class JSWriter implements IJSWriter
         return 0;
     }
 
-    public void writeTo(OutputStream jsOut, File sourceMapOut)
+    public void writeTo(OutputStream jsOut, OutputStream jsSourceMapOut, File sourceMapFile)
     {
         IJSBackend backend = (IJSBackend) project.getBackend();
         JSFilterWriter writer = (JSFilterWriter) backend.createWriterBuffer(project);
@@ -108,9 +106,14 @@ public class JSWriter implements IJSWriter
             e.printStackTrace();
         }
 
-        if (sourceMapOut != null)
+        if (jsSourceMapOut != null)
         {
-            convertMappingSourcePathsToRelative(emitter, sourceMapOut);
+            String sourceMapFilePath = null;
+            if (sourceMapFile != null)
+            {
+                sourceMapFilePath = sourceMapFile.getAbsolutePath();
+                convertMappingSourcePathsToRelative(emitter, sourceMapFile);
+            }
 
             File compilationUnitFile = new File(compilationUnit.getAbsoluteFilename());
             ISourceMapEmitter sourceMapEmitter = backend.createSourceMapEmitter(emitter);
@@ -118,11 +121,8 @@ public class JSWriter implements IJSWriter
             {
                 String fileName = compilationUnitFile.getName();
                 fileName = fileName.replace(".as", ".js");
-                String sourceMap = sourceMapEmitter.emitSourceMap(fileName, sourceMapOut.getAbsolutePath(), null);
-                BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(sourceMapOut));
-                outStream.write(sourceMap.getBytes());
-                outStream.flush();
-                outStream.close();
+                String sourceMap = sourceMapEmitter.emitSourceMap(fileName, sourceMapFilePath, null);
+                jsSourceMapOut.write(sourceMap.getBytes());
             } catch (Exception e)
             {
                 e.printStackTrace();
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLWriter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLWriter.java
index 77c8959..6274d53 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLWriter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLWriter.java
@@ -54,7 +54,7 @@ public class MXMLWriter extends JSWriter
     }
 
     @Override
-    public void writeTo(OutputStream out, File sourceMapOut)
+    public void writeTo(OutputStream out, OutputStream sourceMapOut, File sourceMapFile)
     {
         IJSBackend backend = (IJSBackend) project.getBackend();
         JSFilterWriter writer = (JSFilterWriter) backend.createWriterBuffer(project);
@@ -81,7 +81,12 @@ public class MXMLWriter extends JSWriter
 
         if (sourceMapOut != null)
         {
-            convertMappingSourcePathsToRelative((IMappingEmitter) mxmlEmitter, sourceMapOut);
+            String sourceMapFilePath = null;
+            if (sourceMapFile != null)
+            {
+                sourceMapFilePath = sourceMapFile.getAbsolutePath();
+                convertMappingSourcePathsToRelative((IMappingEmitter) mxmlEmitter, sourceMapFile);
+            }
 
             File compilationUnitFile = new File(compilationUnit.getAbsoluteFilename());
             ISourceMapEmitter sourceMapEmitter = backend.createSourceMapEmitter((IMappingEmitter) mxmlEmitter);
@@ -89,11 +94,8 @@ public class MXMLWriter extends JSWriter
             {
                 String fileName = compilationUnitFile.getName();
                 fileName = fileName.replace(".mxml", ".js");
-                String sourceMap = sourceMapEmitter.emitSourceMap(fileName, sourceMapOut.getAbsolutePath(), null);
-                BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(sourceMapOut));
-                outStream.write(sourceMap.getBytes());
-                outStream.flush();
-                outStream.close();
+                String sourceMap = sourceMapEmitter.emitSourceMap(fileName, sourceMapFilePath, null);
+                sourceMapOut.write(sourceMap.getBytes());
             } catch (Exception e)
             {
                 e.printStackTrace();