You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@royale.apache.org by Harbs <ha...@gmail.com> on 2018/03/18 08:16:34 UTC
Re: [royale-compiler] branch develop updated: handle main MXML file
in packages
This commit appears to break things.
I’m getting the following error in Core tests:
https://paste.apache.org/Bmsg <https://paste.apache.org/Bmsg>
Harbs
> On Mar 17, 2018, at 5:16 PM, aharui@apache.org wrote:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> aharui 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 ac500b7 handle main MXML file in packages
> ac500b7 is described below
>
> commit ac500b75530fc9094768824e4339fbd7df95e7ed
> Author: Alex Harui <ah...@apache.org>
> AuthorDate: Sat Mar 17 08:16:12 2018 -0700
>
> handle main MXML file in packages
> ---
> .../internal/codegen/js/jsc/JSCPublisher.java | 10 ++--
> .../internal/codegen/js/node/NodePublisher.java | 14 ++---
> .../codegen/mxml/royale/MXMLRoyalePublisher.java | 61 ++++++++++++++--------
> .../compiler/internal/graph/GoogDepsWriter.java | 4 --
> .../internal/projects/SourceListManager.java | 4 +-
> .../internal/projects/SourcePathManager.java | 11 ++++
> 6 files changed, 64 insertions(+), 40 deletions(-)
>
> diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jsc/JSCPublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jsc/JSCPublisher.java
> index 8f530e2..4a54cfb 100644
> --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jsc/JSCPublisher.java
> +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jsc/JSCPublisher.java
> @@ -41,28 +41,28 @@ public class JSCPublisher extends MXMLRoyalePublisher
> private RoyaleJSProject project;
>
> @Override
> - protected String getTemplateBody(String projectName)
> + protected String getTemplateBody(String mainClassQName)
> {
> - IDefinition def = project.resolveQNameToDefinition(projectName);
> + IDefinition def = project.resolveQNameToDefinition(mainClassQName);
> IDefinitionNode node = def.getNode();
> if (node instanceof IMXMLDocumentNode)
> {
> //we should probably customize MXML too, but for now, pass it to the
> //default implementation -JT
> - return super.getTemplateBody(projectName);
> + return super.getTemplateBody(mainClassQName);
> }
> //for ActionScript classes, simply call the constructor by default
> StringBuilder bodyHTML = new StringBuilder();
> bodyHTML.append("\t<script type=\"text/javascript\">\n");
> bodyHTML.append("\t\tnew ");
> - bodyHTML.append(projectName);
> + bodyHTML.append(mainClassQName);
> bodyHTML.append("();\n");
> bodyHTML.append("\t</script>\n");
> return bodyHTML.toString();
> }
>
> @Override
> - protected void writeHTML(String type, String projectName, File targetDir,
> + protected void writeHTML(String type, String projectName, String mainClassQName, File targetDir,
> String deps, List<String> additionalHTML) throws IOException
> {
> if ("intermediate".equals(type))
> diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/node/NodePublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/node/NodePublisher.java
> index bb3515d..3c2eb6f 100644
> --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/node/NodePublisher.java
> +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/node/NodePublisher.java
> @@ -37,7 +37,7 @@ public class NodePublisher extends JSCPublisher
> }
>
> @Override
> - protected String getTemplateDependencies(String type, String projectName, String deps)
> + protected String getTemplateDependencies(String type, String projectName, String mainClassQName, String deps)
> {
> StringBuilder depsJS = new StringBuilder();
> if ("intermediate".equals(type))
> @@ -62,31 +62,31 @@ public class NodePublisher extends JSCPublisher
> }
>
> @Override
> - protected String getTemplateBody(String projectName)
> + protected String getTemplateBody(String mainClassQName)
> {
> StringBuilder bodyJS = new StringBuilder();
> if (exportModule)
> {
> bodyJS.append("module.exports = ");
> - bodyJS.append(projectName);
> + bodyJS.append(mainClassQName);
> bodyJS.append(";");
> }
> else
> {
> bodyJS.append("new ");
> - bodyJS.append(projectName);
> + bodyJS.append(mainClassQName);
> bodyJS.append("();");
> }
> return bodyJS.toString();
> }
>
> @Override
> - protected void writeHTML(String type, String projectName, File targetDir,
> + protected void writeHTML(String type, String projectName, String mainClassQName, File targetDir,
> String deps, List<String> additionalHTML) throws IOException
> {
> StringBuilder contents = new StringBuilder();
> - contents.append(getTemplateDependencies(type, projectName, deps));
> - contents.append(getTemplateBody(projectName));
> + contents.append(getTemplateDependencies(type, projectName, mainClassQName, deps));
> + contents.append(getTemplateBody(mainClassQName));
> writeFile(new File(targetDir, "index.js"), contents.toString(), false);
> }
> }
> diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
> index 1c3e943..6ad8bbb 100644
> --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
> +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
> @@ -96,11 +96,11 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> private boolean useStrictPublishing;
>
> private GoogDepsWriter getGoogDepsWriter(File intermediateDir,
> - String projectName,
> + String mainClassQName,
> JSGoogConfiguration googConfiguration,
> List<ISWC> swcs)
> {
> - return new GoogDepsWriter(intermediateDir, projectName, googConfiguration, swcs);
> + return new GoogDepsWriter(intermediateDir, mainClassQName, googConfiguration, swcs);
> }
>
> @Override
> @@ -159,7 +159,25 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> // The "intermediate" is the "js-debug" output.
> final File intermediateDir = outputFolder;
>
> + // The source directory is the source path entry containing the Main class.
> + List<File> sourcePaths = project.getSourcePath();
> + String targetFile = configuration.getTargetFile().toLowerCase();
> + File imageSrcDir = null;
> + for (File sp : sourcePaths)
> + {
> + String lowercasePath = sp.getAbsolutePath().toLowerCase();
> + if (targetFile.startsWith(lowercasePath))
> + imageSrcDir = sp;
> + }
> final String projectName = FilenameUtils.getBaseName(configuration.getTargetFile());
> + String qName = null;
> + try {
> + qName = project.mainCU.getQualifiedNames().get(0);
> + } catch (InterruptedException e) {
> + // TODO Auto-generated catch block
> + e.printStackTrace();
> + }
> + final String mainClassQName = qName;
> final String outputFileName = projectName + "." + project.getBackend().getOutputExtension();
>
> // The "release" is the "js-release" directory.
> @@ -184,11 +202,8 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> IOFileFilter assetFiles = FileFilterUtils.or(pngSuffixFilter, jpgSuffixFilter, jpegSuffixFilter, svgSuffixFilter, gifSuffixFilter,
> jsonSuffixFilter);
> IOFileFilter resourceFilter = FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, assetFiles);
> - // The source directory is the directory containing the Main class.
> - File imageSrcDir = new File(configuration.getTargetFile()).getAbsoluteFile().getParentFile();
> // FIXME: All images need to be located relative to the Main class ... for Maven this is a problem.
> FileUtils.copyDirectory(imageSrcDir, intermediateDir, resourceFilter);
> -
> // Iterate over all themes SWCs and add the contents of any included files in
> // an assets folder to an assets folder in the destination folder.
> final ISWCManager swcManager = project.getWorkspace().getSWCManager();
> @@ -347,7 +362,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> // Add all files generated by the compiler to the compilation unit.
> /////////////////////////////////////////////////////////////////////////////////
>
> - GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir, projectName, googConfiguration, allswcs);
> + GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir, mainClassQName, googConfiguration, allswcs);
> // This list contains all files generated by the compiler, this is both the
> // compiled js files created by the sources of the current project plus the
> // js files of used dependencies.
> @@ -365,10 +380,10 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> // is generated here so it can be used for outputting the html templates.
> String depsFileData = gdw.generateDeps(project, problems);
>
> - if (project.isModule(projectName))
> + if (project.isModule(mainClassQName))
> {
> // need better test someday
> - depsFileData += "\ngoog.require('" + projectName + "');\n";
> + depsFileData += "\ngoog.require('" + mainClassQName + "');\n";
> writeFile(new File(intermediateDir, projectName + "__deps.js"), depsFileData, false);
> Set<String> provideds = computeProvideds(depsFileData);
> compilerWrapper.setProvideds(provideds);
> @@ -380,17 +395,17 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> // Create the index.html for the debug-js version.
> if (!((JSGoogConfiguration)configuration).getSkipTranspile()) {
> if (template != null) {
> - writeTemplate(template, "intermediate", projectName, intermediateDir, depsFileData, gdw.additionalHTML);
> + writeTemplate(template, "intermediate", projectName, mainClassQName, intermediateDir, depsFileData, gdw.additionalHTML);
> } else {
> - writeHTML("intermediate", projectName, intermediateDir, depsFileData, gdw.additionalHTML);
> + writeHTML("intermediate", projectName, mainClassQName, intermediateDir, depsFileData, gdw.additionalHTML);
> }
> }
> // Create the index.html for the release-js version.
> if (configuration.release()) {
> if (template != null) {
> - writeTemplate(template, "release", projectName, releaseDir, depsFileData, gdw.additionalHTML);
> + writeTemplate(template, "release", projectName, mainClassQName, releaseDir, depsFileData, gdw.additionalHTML);
> } else {
> - writeHTML("release", projectName, releaseDir, null, gdw.additionalHTML);
> + writeHTML("release", projectName, mainClassQName, releaseDir, null, gdw.additionalHTML);
> }
> }
> }
> @@ -608,7 +623,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> return code;
> }
>
> - protected void writeTemplate(File template, String type, String projectName, File targetDir, String deps, List<String> additionalHTML)
> + protected void writeTemplate(File template, String type, String projectName, String mainClassQName, File targetDir, String deps, List<String> additionalHTML)
> throws IOException
> {
> // Check if the template exists.
> @@ -629,7 +644,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> bgcolor = ta.getBackgroundColor();
> pageTitle = ta.getPageTitle();
> }
> - String result = input.replaceAll("\\$\\{application\\}", projectName);
> + String result = input.replaceAll("\\$\\{application\\}", mainClassQName);
> if (bgcolor != null)
> result = result.replaceAll("\\$\\{bgcolor\\}", bgcolor);
> //result = result.replaceAll("\\$\\{expressInstallSwf\\}", expressInstallSwf);
> @@ -646,10 +661,10 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
>
> StringBuilder addHTML = new StringBuilder();
> addHTML.append(getTemplateAdditionalHTML(additionalHTML));
> - addHTML.append(getTemplateDependencies(type, projectName, deps));
> + addHTML.append(getTemplateDependencies(type, projectName, mainClassQName, deps));
> result = result.replaceAll("\\$\\{head\\}", addHTML.toString());
>
> - String templateBody = getTemplateBody(projectName);
> + String templateBody = getTemplateBody("release".equals(type) ? projectName : mainClassQName);
> result = result.replaceAll("\\$\\{body\\}", templateBody);
>
> writeFile(new File(targetDir, googConfiguration.getHtmlOutputFileName()), result, false);
> @@ -665,7 +680,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> return htmlFile.toString();
> }
>
> - protected String getTemplateDependencies(String type, String projectName, String deps)
> + protected String getTemplateDependencies(String type, String projectName, String mainClassQName, String deps)
> {
> StringBuilder depsHTML = new StringBuilder();
> if ("intermediate".equals(type))
> @@ -674,7 +689,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> depsHTML.append("\t<script type=\"text/javascript\">\n");
> depsHTML.append(deps);
> depsHTML.append("\t\tgoog.require(\"");
> - depsHTML.append(projectName);
> + depsHTML.append(mainClassQName);
> depsHTML.append("\");\n");
> depsHTML.append("\t</script>\n");
> }
> @@ -687,19 +702,19 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> return depsHTML.toString();
> }
>
> - protected String getTemplateBody(String projectName)
> + protected String getTemplateBody(String mainClassQName)
> {
> StringBuilder bodyHTML = new StringBuilder();
> bodyHTML.append("\t<script type=\"text/javascript\">\n");
> bodyHTML.append("\t\tnew ");
> - bodyHTML.append(projectName);
> + bodyHTML.append(mainClassQName);
> bodyHTML.append("()");
> bodyHTML.append(".start();\n");
> bodyHTML.append("\t</script>\n");
> return bodyHTML.toString();
> }
>
> - protected void writeHTML(String type, String projectName, File targetDir, String deps, List<String> additionalHTML)
> + protected void writeHTML(String type, String projectName, String mainClassQName, File targetDir, String deps, List<String> additionalHTML)
> throws IOException
> {
> StringBuilder htmlFile = new StringBuilder();
> @@ -711,12 +726,12 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSPublisher
> htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\" href=\"").append(projectName).append(".css\">\n");
>
> htmlFile.append(getTemplateAdditionalHTML(additionalHTML));
> - htmlFile.append(getTemplateDependencies(type, projectName, deps));
> + htmlFile.append(getTemplateDependencies(type, projectName, mainClassQName, deps));
>
> htmlFile.append("</head>\n");
> htmlFile.append("<body>\n");
>
> - htmlFile.append(getTemplateBody(projectName));
> + htmlFile.append(getTemplateBody(mainClassQName));
>
> htmlFile.append("</body>\n");
> htmlFile.append("</html>");
> 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 b412817..45f95b6 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
> @@ -703,10 +703,6 @@ public class GoogDepsWriter {
> File f;
>
> String classPath = className.replace(".", File.separator);
> - // special case app names with underscores, but hope that
> - // no other class names have underscores in them
> - if (className.equals(mainName))
> - classPath = className;
>
> fn = outputFolderPath + File.separator + classPath + ".js";
> f = new File(fn);
> diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourceListManager.java b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourceListManager.java
> index 21bd8a4..a42555a 100644
> --- a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourceListManager.java
> +++ b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourceListManager.java
> @@ -124,8 +124,10 @@ final class SourceListManager
> unitsToAdd = new ArrayList<ICompilationUnit>(newSourcesToCreate.size());
> for (File file : newSourcesToCreate)
> {
> + File sourcePath = sourcePathManager.getSourcePath(file);
> + String qname = sourcePathManager.computeQName(sourcePath, file);
> ICompilationUnit unit = project.getSourceCompilationUnitFactory().createCompilationUnit(
> - file, DefinitionPriority.BasePriority.SOURCE_LIST, 0, null, null);
> + file, DefinitionPriority.BasePriority.SOURCE_LIST, 0, qname, null);
>
> //It can be null in some cases, see #ResourceBundleSourceFileHandler
> if(unit != null)
> diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourcePathManager.java b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourcePathManager.java
> index 23f8bbc..366cab1 100644
> --- a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourcePathManager.java
> +++ b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourcePathManager.java
> @@ -95,6 +95,17 @@ public final class SourcePathManager
> return false;
> }
>
> + public File getSourcePath(File file)
> + {
> + for (final DirectoryID directory : sourcePaths.keySet())
> + {
> + if (directory.isParentOf(file))
> + return directory.getFile();
> + }
> +
> + return null;
> + }
> +
> private void accumulateQNameFiles(Set<QNameFile> qNameFiles, File directory, String baseQName, String locale,
> Collection<ICompilerProblem> problems, int order)
> {
>
> --
> To stop receiving notification emails like this one, please contact
> aharui@apache.org.
RE: [royale-compiler] branch develop updated: handle main MXML file
in packages
Posted by Yishay Weiss <yi...@hotmail.com>.
Going back to 8b0ee7192310c7f925b303ea4dab117ee9cd2b9b in compiler and rebuilding royale-compiler and royale-asjs fixes the issue.
From: Yishay Weiss<ma...@hotmail.com>
Sent: Monday, March 19, 2018 9:52 AM
To: dev@royale.apache.org<ma...@royale.apache.org>
Subject: RE: [royale-compiler] branch develop updated: handle main MXML file in packages
I’m still getting an error when compiling our app using the up2date compiler.
[mxmlc] Internal error: java.lang.NullPointerException: Source must not be null org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:1362)org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:1310)org.apache.royale.compiler.internal.codegen.mxml.royale.MXMLRoyalePublisher.publish(MXMLRoyalePublisher.java:206)org.apache.royale.compiler.clients.MXMLJSCRoyale.compile(MXMLJSCRoyale.java:384)org.apache.royale.compiler.clients.MXMLJSCRoyale._mainNoExit(MXMLJSCRoyale.java:240)org.apache.royale.compiler.clients.MXMLJSCRoyale.mainNoExit(MXMLJSCRoyale.java:197)org.apache.royale.compiler.clients.MXMLJSC._mainNoExit(MXMLJSC.java:345)org.apache.royale.compiler.clients.MXMLJSC.mainNoExit(MXMLJSC.java:281)org.apache.royale.compiler.clients.MXMLJSC.staticMainNoExit(MXMLJSC.java:240)org.apache.royale.compiler.clients.MXMLJSC.main(MXMLJSC.java:222)
________________________________
From: Alex Harui <ah...@adobe.com.INVALID>
Sent: Monday, March 19, 2018 2:40:38 AM
To: dev@royale.apache.org
Subject: Re: [royale-compiler] branch develop updated: handle main MXML file in packages
I took care of it.
On 3/18/18, 1:16 AM, "Harbs" <ha...@gmail.com> wrote:
>This commit appears to break things.
>
>I’m getting the following error in Core tests:
>
>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpaste.apa
>che.org%2FBmsg&data=02%7C01%7Caharui%40adobe.com%7C41c93109f528477fe9bb08d
>58ca8983b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636569578094796225&
>sdata=fanlDrBFFOSL0rpZNNR7IMZyFOxmeJeR5riVdFJcLH8%3D&reserved=0
><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpaste.ap
>ache.org%2FBmsg&data=02%7C01%7Caharui%40adobe.com%7C41c93109f528477fe9bb08
>d58ca8983b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636569578094796225
>&sdata=fanlDrBFFOSL0rpZNNR7IMZyFOxmeJeR5riVdFJcLH8%3D&reserved=0>
>
>Harbs
>
>> On Mar 17, 2018, at 5:16 PM, aharui@apache.org wrote:
>>
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> aharui pushed a commit to branch develop
>> in repository
>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.a
>>pache.org%2Frepos%2Fasf%2Froyale-compiler.git&data=02%7C01%7Caharui%40ado
>>be.com%7C41c93109f528477fe9bb08d58ca8983b%7Cfa7b1b5a7b34438794aed2c178dec
>>ee1%7C0%7C0%7C636569578094796225&sdata=hx1FTlGgdcEVSsfSfHW0gAVPVvFwwmJdeu
>>iIQQx2QtY%3D&reserved=0
>>
>>
>> The following commit(s) were added to refs/heads/develop by this push:
>> new ac500b7 handle main MXML file in packages
>> ac500b7 is described below
>>
>> commit ac500b75530fc9094768824e4339fbd7df95e7ed
>> Author: Alex Harui <ah...@apache.org>
>> AuthorDate: Sat Mar 17 08:16:12 2018 -0700
>>
>> handle main MXML file in packages
>> ---
>> .../internal/codegen/js/jsc/JSCPublisher.java | 10 ++--
>> .../internal/codegen/js/node/NodePublisher.java | 14 ++---
>> .../codegen/mxml/royale/MXMLRoyalePublisher.java | 61
>>++++++++++++++--------
>> .../compiler/internal/graph/GoogDepsWriter.java | 4 --
>> .../internal/projects/SourceListManager.java | 4 +-
>> .../internal/projects/SourcePathManager.java | 11 ++++
>> 6 files changed, 64 insertions(+), 40 deletions(-)
>>
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>> index 8f530e2..4a54cfb 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>> @@ -41,28 +41,28 @@ public class JSCPublisher extends
>>MXMLRoyalePublisher
>> private RoyaleJSProject project;
>>
>> @Override
>> - protected String getTemplateBody(String projectName)
>> + protected String getTemplateBody(String mainClassQName)
>> {
>> - IDefinition def =
>>project.resolveQNameToDefinition(projectName);
>> + IDefinition def =
>>project.resolveQNameToDefinition(mainClassQName);
>> IDefinitionNode node = def.getNode();
>> if (node instanceof IMXMLDocumentNode)
>> {
>> //we should probably customize MXML too, but for now, pass
>>it to the
>> //default implementation -JT
>> - return super.getTemplateBody(projectName);
>> + return super.getTemplateBody(mainClassQName);
>> }
>> //for ActionScript classes, simply call the constructor by
>>default
>> StringBuilder bodyHTML = new StringBuilder();
>> bodyHTML.append("\t<script type=\"text/javascript\">\n");
>> bodyHTML.append("\t\tnew ");
>> - bodyHTML.append(projectName);
>> + bodyHTML.append(mainClassQName);
>> bodyHTML.append("();\n");
>> bodyHTML.append("\t</script>\n");
>> return bodyHTML.toString();
>> }
>>
>> @Override
>> - protected void writeHTML(String type, String projectName, File
>>targetDir,
>> + protected void writeHTML(String type, String projectName, String
>>mainClassQName, File targetDir,
>> String deps, List<String> additionalHTML)
>>throws IOException
>> {
>> if ("intermediate".equals(type))
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>> index bb3515d..3c2eb6f 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>> @@ -37,7 +37,7 @@ public class NodePublisher extends JSCPublisher
>> }
>>
>> @Override
>> - protected String getTemplateDependencies(String type, String
>>projectName, String deps)
>> + protected String getTemplateDependencies(String type, String
>>projectName, String mainClassQName, String deps)
>> {
>> StringBuilder depsJS = new StringBuilder();
>> if ("intermediate".equals(type))
>> @@ -62,31 +62,31 @@ public class NodePublisher extends JSCPublisher
>> }
>>
>> @Override
>> - protected String getTemplateBody(String projectName)
>> + protected String getTemplateBody(String mainClassQName)
>> {
>> StringBuilder bodyJS = new StringBuilder();
>> if (exportModule)
>> {
>> bodyJS.append("module.exports = ");
>> - bodyJS.append(projectName);
>> + bodyJS.append(mainClassQName);
>> bodyJS.append(";");
>> }
>> else
>> {
>> bodyJS.append("new ");
>> - bodyJS.append(projectName);
>> + bodyJS.append(mainClassQName);
>> bodyJS.append("();");
>> }
>> return bodyJS.toString();
>> }
>>
>> @Override
>> - protected void writeHTML(String type, String projectName, File
>>targetDir,
>> + protected void writeHTML(String type, String projectName, String
>>mainClassQName, File targetDir,
>> String deps, List<String> additionalHTML)
>>throws IOException
>> {
>> StringBuilder contents = new StringBuilder();
>> - contents.append(getTemplateDependencies(type, projectName,
>>deps));
>> - contents.append(getTemplateBody(projectName));
>> + contents.append(getTemplateDependencies(type, projectName,
>>mainClassQName, deps));
>> + contents.append(getTemplateBody(mainClassQName));
>> writeFile(new File(targetDir, "index.js"), contents.toString(),
>>false);
>> }
>> }
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>> index 1c3e943..6ad8bbb 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>> @@ -96,11 +96,11 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> private boolean useStrictPublishing;
>>
>> private GoogDepsWriter getGoogDepsWriter(File intermediateDir,
>> - String projectName,
>> + String mainClassQName,
>> JSGoogConfiguration googConfiguration,
>> List<ISWC> swcs)
>> {
>> - return new GoogDepsWriter(intermediateDir, projectName,
>>googConfiguration, swcs);
>> + return new GoogDepsWriter(intermediateDir, mainClassQName,
>>googConfiguration, swcs);
>> }
>>
>> @Override
>> @@ -159,7 +159,25 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // The "intermediate" is the "js-debug" output.
>> final File intermediateDir = outputFolder;
>>
>> + // The source directory is the source path entry containing
>>the Main class.
>> + List<File> sourcePaths = project.getSourcePath();
>> + String targetFile =
>>configuration.getTargetFile().toLowerCase();
>> + File imageSrcDir = null;
>> + for (File sp : sourcePaths)
>> + {
>> + String lowercasePath = sp.getAbsolutePath().toLowerCase();
>> + if (targetFile.startsWith(lowercasePath))
>> + imageSrcDir = sp;
>> + }
>> final String projectName =
>>FilenameUtils.getBaseName(configuration.getTargetFile());
>> + String qName = null;
>> + try {
>> + qName = project.mainCU.getQualifiedNames().get(0);
>> + } catch (InterruptedException e) {
>> + // TODO Auto-generated catch block
>> + e.printStackTrace();
>> + }
>> + final String mainClassQName = qName;
>> final String outputFileName = projectName + "." +
>>project.getBackend().getOutputExtension();
>>
>> // The "release" is the "js-release" directory.
>> @@ -184,11 +202,8 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> IOFileFilter assetFiles = FileFilterUtils.or(pngSuffixFilter,
>>jpgSuffixFilter, jpegSuffixFilter, svgSuffixFilter, gifSuffixFilter,
>> jsonSuffixFilter);
>> IOFileFilter resourceFilter =
>>FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, assetFiles);
>> - // The source directory is the directory containing the Main
>>class.
>> - File imageSrcDir = new
>>File(configuration.getTargetFile()).getAbsoluteFile().getParentFile();
>> // FIXME: All images need to be located relative to the Main
>>class ... for Maven this is a problem.
>> FileUtils.copyDirectory(imageSrcDir, intermediateDir,
>>resourceFilter);
>> -
>> // Iterate over all themes SWCs and add the contents of any
>>included files in
>> // an assets folder to an assets folder in the destination
>>folder.
>> final ISWCManager swcManager =
>>project.getWorkspace().getSWCManager();
>> @@ -347,7 +362,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // Add all files generated by the compiler to the compilation
>>unit.
>>
>>/////////////////////////////////////////////////////////////////////////
>>////////
>>
>> - GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir,
>>projectName, googConfiguration, allswcs);
>> + GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir,
>>mainClassQName, googConfiguration, allswcs);
>> // This list contains all files generated by the compiler, this
>>is both the
>> // compiled js files created by the sources of the current
>>project plus the
>> // js files of used dependencies.
>> @@ -365,10 +380,10 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // is generated here so it can be used for outputting the html
>>templates.
>> String depsFileData = gdw.generateDeps(project, problems);
>>
>> - if (project.isModule(projectName))
>> + if (project.isModule(mainClassQName))
>> {
>> // need better test someday
>> - depsFileData += "\ngoog.require('" + projectName + "');\n";
>> + depsFileData += "\ngoog.require('" + mainClassQName + "');\n";
>> writeFile(new File(intermediateDir, projectName +
>>"__deps.js"), depsFileData, false);
>> Set<String> provideds = computeProvideds(depsFileData);
>> compilerWrapper.setProvideds(provideds);
>> @@ -380,17 +395,17 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // Create the index.html for the debug-js version.
>> if (!((JSGoogConfiguration)configuration).getSkipTranspile()) {
>> if (template != null) {
>> - writeTemplate(template, "intermediate", projectName,
>>intermediateDir, depsFileData, gdw.additionalHTML);
>> + writeTemplate(template, "intermediate", projectName,
>>mainClassQName, intermediateDir, depsFileData, gdw.additionalHTML);
>> } else {
>> - writeHTML("intermediate", projectName,
>>intermediateDir, depsFileData, gdw.additionalHTML);
>> + writeHTML("intermediate", projectName,
>>mainClassQName, intermediateDir, depsFileData, gdw.additionalHTML);
>> }
>> }
>> // Create the index.html for the release-js version.
>> if (configuration.release()) {
>> if (template != null) {
>> - writeTemplate(template, "release", projectName,
>>releaseDir, depsFileData, gdw.additionalHTML);
>> + writeTemplate(template, "release", projectName,
>>mainClassQName, releaseDir, depsFileData, gdw.additionalHTML);
>> } else {
>> - writeHTML("release", projectName, releaseDir, null,
>>gdw.additionalHTML);
>> + writeHTML("release", projectName, mainClassQName,
>>releaseDir, null, gdw.additionalHTML);
>> }
>> }
>> }
>> @@ -608,7 +623,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> return code;
>> }
>>
>> - protected void writeTemplate(File template, String type, String
>>projectName, File targetDir, String deps, List<String> additionalHTML)
>> + protected void writeTemplate(File template, String type, String
>>projectName, String mainClassQName, File targetDir, String deps,
>>List<String> additionalHTML)
>> throws IOException
>> {
>> // Check if the template exists.
>> @@ -629,7 +644,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> bgcolor = ta.getBackgroundColor();
>> pageTitle = ta.getPageTitle();
>> }
>> - String result = input.replaceAll("\\$\\{application\\}",
>>projectName);
>> + String result = input.replaceAll("\\$\\{application\\}",
>>mainClassQName);
>> if (bgcolor != null)
>> result = result.replaceAll("\\$\\{bgcolor\\}", bgcolor);
>> //result = result.replaceAll("\\$\\{expressInstallSwf\\}",
>>expressInstallSwf);
>> @@ -646,10 +661,10 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>>
>> StringBuilder addHTML = new StringBuilder();
>> addHTML.append(getTemplateAdditionalHTML(additionalHTML));
>> - addHTML.append(getTemplateDependencies(type, projectName, deps));
>> + addHTML.append(getTemplateDependencies(type, projectName,
>>mainClassQName, deps));
>> result = result.replaceAll("\\$\\{head\\}", addHTML.toString());
>>
>> - String templateBody = getTemplateBody(projectName);
>> + String templateBody = getTemplateBody("release".equals(type) ?
>>projectName : mainClassQName);
>> result = result.replaceAll("\\$\\{body\\}", templateBody);
>>
>> writeFile(new File(targetDir,
>>googConfiguration.getHtmlOutputFileName()), result, false);
>> @@ -665,7 +680,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> return htmlFile.toString();
>> }
>>
>> - protected String getTemplateDependencies(String type, String
>>projectName, String deps)
>> + protected String getTemplateDependencies(String type, String
>>projectName, String mainClassQName, String deps)
>> {
>> StringBuilder depsHTML = new StringBuilder();
>> if ("intermediate".equals(type))
>> @@ -674,7 +689,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> depsHTML.append("\t<script type=\"text/javascript\">\n");
>> depsHTML.append(deps);
>> depsHTML.append("\t\tgoog.require(\"");
>> - depsHTML.append(projectName);
>> + depsHTML.append(mainClassQName);
>> depsHTML.append("\");\n");
>> depsHTML.append("\t</script>\n");
>> }
>> @@ -687,19 +702,19 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> return depsHTML.toString();
>> }
>>
>> - protected String getTemplateBody(String projectName)
>> + protected String getTemplateBody(String mainClassQName)
>> {
>> StringBuilder bodyHTML = new StringBuilder();
>> bodyHTML.append("\t<script type=\"text/javascript\">\n");
>> bodyHTML.append("\t\tnew ");
>> - bodyHTML.append(projectName);
>> + bodyHTML.append(mainClassQName);
>> bodyHTML.append("()");
>> bodyHTML.append(".start();\n");
>> bodyHTML.append("\t</script>\n");
>> return bodyHTML.toString();
>> }
>>
>> - protected void writeHTML(String type, String projectName, File
>>targetDir, String deps, List<String> additionalHTML)
>> + protected void writeHTML(String type, String projectName, String
>>mainClassQName, File targetDir, String deps, List<String> additionalHTML)
>> throws IOException
>> {
>> StringBuilder htmlFile = new StringBuilder();
>> @@ -711,12 +726,12 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\"
>>href=\"").append(projectName).append(".css\">\n");
>>
>> htmlFile.append(getTemplateAdditionalHTML(additionalHTML));
>> - htmlFile.append(getTemplateDependencies(type, projectName,
>>deps));
>> + htmlFile.append(getTemplateDependencies(type, projectName,
>>mainClassQName, deps));
>>
>> htmlFile.append("</head>\n");
>> htmlFile.append("<body>\n");
>>
>> - htmlFile.append(getTemplateBody(projectName));
>> + htmlFile.append(getTemplateBody(mainClassQName));
>>
>> htmlFile.append("</body>\n");
>> htmlFile.append("</html>");
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>> index b412817..45f95b6 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>> @@ -703,10 +703,6 @@ public class GoogDepsWriter {
>> File f;
>>
>> String classPath = className.replace(".", File.separator);
>> - // special case app names with underscores, but hope that
>> - // no other class names have underscores in them
>> - if (className.equals(mainName))
>> - classPath = className;
>>
>> fn = outputFolderPath + File.separator + classPath + ".js";
>> f = new File(fn);
>> diff --git
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>> index 21bd8a4..a42555a 100644
>> ---
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>> +++
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>> @@ -124,8 +124,10 @@ final class SourceListManager
>> unitsToAdd = new
>>ArrayList<ICompilationUnit>(newSourcesToCreate.size());
>> for (File file : newSourcesToCreate)
>> {
>> + File sourcePath = sourcePathManager.getSourcePath(file);
>> + String qname = sourcePathManager.computeQName(sourcePath,
>>file);
>> ICompilationUnit unit =
>>project.getSourceCompilationUnitFactory().createCompilationUnit(
>> - file, DefinitionPriority.BasePriority.SOURCE_LIST,
>>0, null, null);
>> + file, DefinitionPriority.BasePriority.SOURCE_LIST,
>>0, qname, null);
>>
>> //It can be null in some cases, see
>>#ResourceBundleSourceFileHandler
>> if(unit != null)
>> diff --git
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>> index 23f8bbc..366cab1 100644
>> ---
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>> +++
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>> @@ -95,6 +95,17 @@ public final class SourcePathManager
>> return false;
>> }
>>
>> + public File getSourcePath(File file)
>> + {
>> + for (final DirectoryID directory : sourcePaths.keySet())
>> + {
>> + if (directory.isParentOf(file))
>> + return directory.getFile();
>> + }
>> +
>> + return null;
>> + }
>> +
>> private void accumulateQNameFiles(Set<QNameFile> qNameFiles, File
>>directory, String baseQName, String locale,
>> Collection<ICompilerProblem> problems, int order)
>> {
>>
>> --
>> To stop receiving notification emails like this one, please contact
>> aharui@apache.org.
>
RE: [royale-compiler] branch develop updated: handle main MXML file
in packages
Posted by Yishay Weiss <yi...@hotmail.com>.
I’m still getting an error when compiling our app using the up2date compiler.
[mxmlc] Internal error: java.lang.NullPointerException: Source must not be null org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:1362)org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:1310)org.apache.royale.compiler.internal.codegen.mxml.royale.MXMLRoyalePublisher.publish(MXMLRoyalePublisher.java:206)org.apache.royale.compiler.clients.MXMLJSCRoyale.compile(MXMLJSCRoyale.java:384)org.apache.royale.compiler.clients.MXMLJSCRoyale._mainNoExit(MXMLJSCRoyale.java:240)org.apache.royale.compiler.clients.MXMLJSCRoyale.mainNoExit(MXMLJSCRoyale.java:197)org.apache.royale.compiler.clients.MXMLJSC._mainNoExit(MXMLJSC.java:345)org.apache.royale.compiler.clients.MXMLJSC.mainNoExit(MXMLJSC.java:281)org.apache.royale.compiler.clients.MXMLJSC.staticMainNoExit(MXMLJSC.java:240)org.apache.royale.compiler.clients.MXMLJSC.main(MXMLJSC.java:222)
________________________________
From: Alex Harui <ah...@adobe.com.INVALID>
Sent: Monday, March 19, 2018 2:40:38 AM
To: dev@royale.apache.org
Subject: Re: [royale-compiler] branch develop updated: handle main MXML file in packages
I took care of it.
On 3/18/18, 1:16 AM, "Harbs" <ha...@gmail.com> wrote:
>This commit appears to break things.
>
>I’m getting the following error in Core tests:
>
>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpaste.apa
>che.org%2FBmsg&data=02%7C01%7Caharui%40adobe.com%7C41c93109f528477fe9bb08d
>58ca8983b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636569578094796225&
>sdata=fanlDrBFFOSL0rpZNNR7IMZyFOxmeJeR5riVdFJcLH8%3D&reserved=0
><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpaste.ap
>ache.org%2FBmsg&data=02%7C01%7Caharui%40adobe.com%7C41c93109f528477fe9bb08
>d58ca8983b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636569578094796225
>&sdata=fanlDrBFFOSL0rpZNNR7IMZyFOxmeJeR5riVdFJcLH8%3D&reserved=0>
>
>Harbs
>
>> On Mar 17, 2018, at 5:16 PM, aharui@apache.org wrote:
>>
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> aharui pushed a commit to branch develop
>> in repository
>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.a
>>pache.org%2Frepos%2Fasf%2Froyale-compiler.git&data=02%7C01%7Caharui%40ado
>>be.com%7C41c93109f528477fe9bb08d58ca8983b%7Cfa7b1b5a7b34438794aed2c178dec
>>ee1%7C0%7C0%7C636569578094796225&sdata=hx1FTlGgdcEVSsfSfHW0gAVPVvFwwmJdeu
>>iIQQx2QtY%3D&reserved=0
>>
>>
>> The following commit(s) were added to refs/heads/develop by this push:
>> new ac500b7 handle main MXML file in packages
>> ac500b7 is described below
>>
>> commit ac500b75530fc9094768824e4339fbd7df95e7ed
>> Author: Alex Harui <ah...@apache.org>
>> AuthorDate: Sat Mar 17 08:16:12 2018 -0700
>>
>> handle main MXML file in packages
>> ---
>> .../internal/codegen/js/jsc/JSCPublisher.java | 10 ++--
>> .../internal/codegen/js/node/NodePublisher.java | 14 ++---
>> .../codegen/mxml/royale/MXMLRoyalePublisher.java | 61
>>++++++++++++++--------
>> .../compiler/internal/graph/GoogDepsWriter.java | 4 --
>> .../internal/projects/SourceListManager.java | 4 +-
>> .../internal/projects/SourcePathManager.java | 11 ++++
>> 6 files changed, 64 insertions(+), 40 deletions(-)
>>
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>> index 8f530e2..4a54cfb 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>> @@ -41,28 +41,28 @@ public class JSCPublisher extends
>>MXMLRoyalePublisher
>> private RoyaleJSProject project;
>>
>> @Override
>> - protected String getTemplateBody(String projectName)
>> + protected String getTemplateBody(String mainClassQName)
>> {
>> - IDefinition def =
>>project.resolveQNameToDefinition(projectName);
>> + IDefinition def =
>>project.resolveQNameToDefinition(mainClassQName);
>> IDefinitionNode node = def.getNode();
>> if (node instanceof IMXMLDocumentNode)
>> {
>> //we should probably customize MXML too, but for now, pass
>>it to the
>> //default implementation -JT
>> - return super.getTemplateBody(projectName);
>> + return super.getTemplateBody(mainClassQName);
>> }
>> //for ActionScript classes, simply call the constructor by
>>default
>> StringBuilder bodyHTML = new StringBuilder();
>> bodyHTML.append("\t<script type=\"text/javascript\">\n");
>> bodyHTML.append("\t\tnew ");
>> - bodyHTML.append(projectName);
>> + bodyHTML.append(mainClassQName);
>> bodyHTML.append("();\n");
>> bodyHTML.append("\t</script>\n");
>> return bodyHTML.toString();
>> }
>>
>> @Override
>> - protected void writeHTML(String type, String projectName, File
>>targetDir,
>> + protected void writeHTML(String type, String projectName, String
>>mainClassQName, File targetDir,
>> String deps, List<String> additionalHTML)
>>throws IOException
>> {
>> if ("intermediate".equals(type))
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>> index bb3515d..3c2eb6f 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>> @@ -37,7 +37,7 @@ public class NodePublisher extends JSCPublisher
>> }
>>
>> @Override
>> - protected String getTemplateDependencies(String type, String
>>projectName, String deps)
>> + protected String getTemplateDependencies(String type, String
>>projectName, String mainClassQName, String deps)
>> {
>> StringBuilder depsJS = new StringBuilder();
>> if ("intermediate".equals(type))
>> @@ -62,31 +62,31 @@ public class NodePublisher extends JSCPublisher
>> }
>>
>> @Override
>> - protected String getTemplateBody(String projectName)
>> + protected String getTemplateBody(String mainClassQName)
>> {
>> StringBuilder bodyJS = new StringBuilder();
>> if (exportModule)
>> {
>> bodyJS.append("module.exports = ");
>> - bodyJS.append(projectName);
>> + bodyJS.append(mainClassQName);
>> bodyJS.append(";");
>> }
>> else
>> {
>> bodyJS.append("new ");
>> - bodyJS.append(projectName);
>> + bodyJS.append(mainClassQName);
>> bodyJS.append("();");
>> }
>> return bodyJS.toString();
>> }
>>
>> @Override
>> - protected void writeHTML(String type, String projectName, File
>>targetDir,
>> + protected void writeHTML(String type, String projectName, String
>>mainClassQName, File targetDir,
>> String deps, List<String> additionalHTML)
>>throws IOException
>> {
>> StringBuilder contents = new StringBuilder();
>> - contents.append(getTemplateDependencies(type, projectName,
>>deps));
>> - contents.append(getTemplateBody(projectName));
>> + contents.append(getTemplateDependencies(type, projectName,
>>mainClassQName, deps));
>> + contents.append(getTemplateBody(mainClassQName));
>> writeFile(new File(targetDir, "index.js"), contents.toString(),
>>false);
>> }
>> }
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>> index 1c3e943..6ad8bbb 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>> @@ -96,11 +96,11 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> private boolean useStrictPublishing;
>>
>> private GoogDepsWriter getGoogDepsWriter(File intermediateDir,
>> - String projectName,
>> + String mainClassQName,
>> JSGoogConfiguration googConfiguration,
>> List<ISWC> swcs)
>> {
>> - return new GoogDepsWriter(intermediateDir, projectName,
>>googConfiguration, swcs);
>> + return new GoogDepsWriter(intermediateDir, mainClassQName,
>>googConfiguration, swcs);
>> }
>>
>> @Override
>> @@ -159,7 +159,25 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // The "intermediate" is the "js-debug" output.
>> final File intermediateDir = outputFolder;
>>
>> + // The source directory is the source path entry containing
>>the Main class.
>> + List<File> sourcePaths = project.getSourcePath();
>> + String targetFile =
>>configuration.getTargetFile().toLowerCase();
>> + File imageSrcDir = null;
>> + for (File sp : sourcePaths)
>> + {
>> + String lowercasePath = sp.getAbsolutePath().toLowerCase();
>> + if (targetFile.startsWith(lowercasePath))
>> + imageSrcDir = sp;
>> + }
>> final String projectName =
>>FilenameUtils.getBaseName(configuration.getTargetFile());
>> + String qName = null;
>> + try {
>> + qName = project.mainCU.getQualifiedNames().get(0);
>> + } catch (InterruptedException e) {
>> + // TODO Auto-generated catch block
>> + e.printStackTrace();
>> + }
>> + final String mainClassQName = qName;
>> final String outputFileName = projectName + "." +
>>project.getBackend().getOutputExtension();
>>
>> // The "release" is the "js-release" directory.
>> @@ -184,11 +202,8 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> IOFileFilter assetFiles = FileFilterUtils.or(pngSuffixFilter,
>>jpgSuffixFilter, jpegSuffixFilter, svgSuffixFilter, gifSuffixFilter,
>> jsonSuffixFilter);
>> IOFileFilter resourceFilter =
>>FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, assetFiles);
>> - // The source directory is the directory containing the Main
>>class.
>> - File imageSrcDir = new
>>File(configuration.getTargetFile()).getAbsoluteFile().getParentFile();
>> // FIXME: All images need to be located relative to the Main
>>class ... for Maven this is a problem.
>> FileUtils.copyDirectory(imageSrcDir, intermediateDir,
>>resourceFilter);
>> -
>> // Iterate over all themes SWCs and add the contents of any
>>included files in
>> // an assets folder to an assets folder in the destination
>>folder.
>> final ISWCManager swcManager =
>>project.getWorkspace().getSWCManager();
>> @@ -347,7 +362,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // Add all files generated by the compiler to the compilation
>>unit.
>>
>>/////////////////////////////////////////////////////////////////////////
>>////////
>>
>> - GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir,
>>projectName, googConfiguration, allswcs);
>> + GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir,
>>mainClassQName, googConfiguration, allswcs);
>> // This list contains all files generated by the compiler, this
>>is both the
>> // compiled js files created by the sources of the current
>>project plus the
>> // js files of used dependencies.
>> @@ -365,10 +380,10 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // is generated here so it can be used for outputting the html
>>templates.
>> String depsFileData = gdw.generateDeps(project, problems);
>>
>> - if (project.isModule(projectName))
>> + if (project.isModule(mainClassQName))
>> {
>> // need better test someday
>> - depsFileData += "\ngoog.require('" + projectName + "');\n";
>> + depsFileData += "\ngoog.require('" + mainClassQName + "');\n";
>> writeFile(new File(intermediateDir, projectName +
>>"__deps.js"), depsFileData, false);
>> Set<String> provideds = computeProvideds(depsFileData);
>> compilerWrapper.setProvideds(provideds);
>> @@ -380,17 +395,17 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // Create the index.html for the debug-js version.
>> if (!((JSGoogConfiguration)configuration).getSkipTranspile()) {
>> if (template != null) {
>> - writeTemplate(template, "intermediate", projectName,
>>intermediateDir, depsFileData, gdw.additionalHTML);
>> + writeTemplate(template, "intermediate", projectName,
>>mainClassQName, intermediateDir, depsFileData, gdw.additionalHTML);
>> } else {
>> - writeHTML("intermediate", projectName,
>>intermediateDir, depsFileData, gdw.additionalHTML);
>> + writeHTML("intermediate", projectName,
>>mainClassQName, intermediateDir, depsFileData, gdw.additionalHTML);
>> }
>> }
>> // Create the index.html for the release-js version.
>> if (configuration.release()) {
>> if (template != null) {
>> - writeTemplate(template, "release", projectName,
>>releaseDir, depsFileData, gdw.additionalHTML);
>> + writeTemplate(template, "release", projectName,
>>mainClassQName, releaseDir, depsFileData, gdw.additionalHTML);
>> } else {
>> - writeHTML("release", projectName, releaseDir, null,
>>gdw.additionalHTML);
>> + writeHTML("release", projectName, mainClassQName,
>>releaseDir, null, gdw.additionalHTML);
>> }
>> }
>> }
>> @@ -608,7 +623,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> return code;
>> }
>>
>> - protected void writeTemplate(File template, String type, String
>>projectName, File targetDir, String deps, List<String> additionalHTML)
>> + protected void writeTemplate(File template, String type, String
>>projectName, String mainClassQName, File targetDir, String deps,
>>List<String> additionalHTML)
>> throws IOException
>> {
>> // Check if the template exists.
>> @@ -629,7 +644,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> bgcolor = ta.getBackgroundColor();
>> pageTitle = ta.getPageTitle();
>> }
>> - String result = input.replaceAll("\\$\\{application\\}",
>>projectName);
>> + String result = input.replaceAll("\\$\\{application\\}",
>>mainClassQName);
>> if (bgcolor != null)
>> result = result.replaceAll("\\$\\{bgcolor\\}", bgcolor);
>> //result = result.replaceAll("\\$\\{expressInstallSwf\\}",
>>expressInstallSwf);
>> @@ -646,10 +661,10 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>>
>> StringBuilder addHTML = new StringBuilder();
>> addHTML.append(getTemplateAdditionalHTML(additionalHTML));
>> - addHTML.append(getTemplateDependencies(type, projectName, deps));
>> + addHTML.append(getTemplateDependencies(type, projectName,
>>mainClassQName, deps));
>> result = result.replaceAll("\\$\\{head\\}", addHTML.toString());
>>
>> - String templateBody = getTemplateBody(projectName);
>> + String templateBody = getTemplateBody("release".equals(type) ?
>>projectName : mainClassQName);
>> result = result.replaceAll("\\$\\{body\\}", templateBody);
>>
>> writeFile(new File(targetDir,
>>googConfiguration.getHtmlOutputFileName()), result, false);
>> @@ -665,7 +680,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> return htmlFile.toString();
>> }
>>
>> - protected String getTemplateDependencies(String type, String
>>projectName, String deps)
>> + protected String getTemplateDependencies(String type, String
>>projectName, String mainClassQName, String deps)
>> {
>> StringBuilder depsHTML = new StringBuilder();
>> if ("intermediate".equals(type))
>> @@ -674,7 +689,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> depsHTML.append("\t<script type=\"text/javascript\">\n");
>> depsHTML.append(deps);
>> depsHTML.append("\t\tgoog.require(\"");
>> - depsHTML.append(projectName);
>> + depsHTML.append(mainClassQName);
>> depsHTML.append("\");\n");
>> depsHTML.append("\t</script>\n");
>> }
>> @@ -687,19 +702,19 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> return depsHTML.toString();
>> }
>>
>> - protected String getTemplateBody(String projectName)
>> + protected String getTemplateBody(String mainClassQName)
>> {
>> StringBuilder bodyHTML = new StringBuilder();
>> bodyHTML.append("\t<script type=\"text/javascript\">\n");
>> bodyHTML.append("\t\tnew ");
>> - bodyHTML.append(projectName);
>> + bodyHTML.append(mainClassQName);
>> bodyHTML.append("()");
>> bodyHTML.append(".start();\n");
>> bodyHTML.append("\t</script>\n");
>> return bodyHTML.toString();
>> }
>>
>> - protected void writeHTML(String type, String projectName, File
>>targetDir, String deps, List<String> additionalHTML)
>> + protected void writeHTML(String type, String projectName, String
>>mainClassQName, File targetDir, String deps, List<String> additionalHTML)
>> throws IOException
>> {
>> StringBuilder htmlFile = new StringBuilder();
>> @@ -711,12 +726,12 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\"
>>href=\"").append(projectName).append(".css\">\n");
>>
>> htmlFile.append(getTemplateAdditionalHTML(additionalHTML));
>> - htmlFile.append(getTemplateDependencies(type, projectName,
>>deps));
>> + htmlFile.append(getTemplateDependencies(type, projectName,
>>mainClassQName, deps));
>>
>> htmlFile.append("</head>\n");
>> htmlFile.append("<body>\n");
>>
>> - htmlFile.append(getTemplateBody(projectName));
>> + htmlFile.append(getTemplateBody(mainClassQName));
>>
>> htmlFile.append("</body>\n");
>> htmlFile.append("</html>");
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>> index b412817..45f95b6 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>> @@ -703,10 +703,6 @@ public class GoogDepsWriter {
>> File f;
>>
>> String classPath = className.replace(".", File.separator);
>> - // special case app names with underscores, but hope that
>> - // no other class names have underscores in them
>> - if (className.equals(mainName))
>> - classPath = className;
>>
>> fn = outputFolderPath + File.separator + classPath + ".js";
>> f = new File(fn);
>> diff --git
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>> index 21bd8a4..a42555a 100644
>> ---
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>> +++
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>> @@ -124,8 +124,10 @@ final class SourceListManager
>> unitsToAdd = new
>>ArrayList<ICompilationUnit>(newSourcesToCreate.size());
>> for (File file : newSourcesToCreate)
>> {
>> + File sourcePath = sourcePathManager.getSourcePath(file);
>> + String qname = sourcePathManager.computeQName(sourcePath,
>>file);
>> ICompilationUnit unit =
>>project.getSourceCompilationUnitFactory().createCompilationUnit(
>> - file, DefinitionPriority.BasePriority.SOURCE_LIST,
>>0, null, null);
>> + file, DefinitionPriority.BasePriority.SOURCE_LIST,
>>0, qname, null);
>>
>> //It can be null in some cases, see
>>#ResourceBundleSourceFileHandler
>> if(unit != null)
>> diff --git
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>> index 23f8bbc..366cab1 100644
>> ---
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>> +++
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>> @@ -95,6 +95,17 @@ public final class SourcePathManager
>> return false;
>> }
>>
>> + public File getSourcePath(File file)
>> + {
>> + for (final DirectoryID directory : sourcePaths.keySet())
>> + {
>> + if (directory.isParentOf(file))
>> + return directory.getFile();
>> + }
>> +
>> + return null;
>> + }
>> +
>> private void accumulateQNameFiles(Set<QNameFile> qNameFiles, File
>>directory, String baseQName, String locale,
>> Collection<ICompilerProblem> problems, int order)
>> {
>>
>> --
>> To stop receiving notification emails like this one, please contact
>> aharui@apache.org.
>
Re: [royale-compiler] branch develop updated: handle main MXML file
in packages
Posted by Alex Harui <ah...@adobe.com.INVALID>.
I took care of it.
On 3/18/18, 1:16 AM, "Harbs" <ha...@gmail.com> wrote:
>This commit appears to break things.
>
>I’m getting the following error in Core tests:
>
>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpaste.apa
>che.org%2FBmsg&data=02%7C01%7Caharui%40adobe.com%7C41c93109f528477fe9bb08d
>58ca8983b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636569578094796225&
>sdata=fanlDrBFFOSL0rpZNNR7IMZyFOxmeJeR5riVdFJcLH8%3D&reserved=0
><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpaste.ap
>ache.org%2FBmsg&data=02%7C01%7Caharui%40adobe.com%7C41c93109f528477fe9bb08
>d58ca8983b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636569578094796225
>&sdata=fanlDrBFFOSL0rpZNNR7IMZyFOxmeJeR5riVdFJcLH8%3D&reserved=0>
>
>Harbs
>
>> On Mar 17, 2018, at 5:16 PM, aharui@apache.org wrote:
>>
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> aharui pushed a commit to branch develop
>> in repository
>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.a
>>pache.org%2Frepos%2Fasf%2Froyale-compiler.git&data=02%7C01%7Caharui%40ado
>>be.com%7C41c93109f528477fe9bb08d58ca8983b%7Cfa7b1b5a7b34438794aed2c178dec
>>ee1%7C0%7C0%7C636569578094796225&sdata=hx1FTlGgdcEVSsfSfHW0gAVPVvFwwmJdeu
>>iIQQx2QtY%3D&reserved=0
>>
>>
>> The following commit(s) were added to refs/heads/develop by this push:
>> new ac500b7 handle main MXML file in packages
>> ac500b7 is described below
>>
>> commit ac500b75530fc9094768824e4339fbd7df95e7ed
>> Author: Alex Harui <ah...@apache.org>
>> AuthorDate: Sat Mar 17 08:16:12 2018 -0700
>>
>> handle main MXML file in packages
>> ---
>> .../internal/codegen/js/jsc/JSCPublisher.java | 10 ++--
>> .../internal/codegen/js/node/NodePublisher.java | 14 ++---
>> .../codegen/mxml/royale/MXMLRoyalePublisher.java | 61
>>++++++++++++++--------
>> .../compiler/internal/graph/GoogDepsWriter.java | 4 --
>> .../internal/projects/SourceListManager.java | 4 +-
>> .../internal/projects/SourcePathManager.java | 11 ++++
>> 6 files changed, 64 insertions(+), 40 deletions(-)
>>
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>> index 8f530e2..4a54cfb 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/jsc/JSCPublisher.java
>> @@ -41,28 +41,28 @@ public class JSCPublisher extends
>>MXMLRoyalePublisher
>> private RoyaleJSProject project;
>>
>> @Override
>> - protected String getTemplateBody(String projectName)
>> + protected String getTemplateBody(String mainClassQName)
>> {
>> - IDefinition def =
>>project.resolveQNameToDefinition(projectName);
>> + IDefinition def =
>>project.resolveQNameToDefinition(mainClassQName);
>> IDefinitionNode node = def.getNode();
>> if (node instanceof IMXMLDocumentNode)
>> {
>> //we should probably customize MXML too, but for now, pass
>>it to the
>> //default implementation -JT
>> - return super.getTemplateBody(projectName);
>> + return super.getTemplateBody(mainClassQName);
>> }
>> //for ActionScript classes, simply call the constructor by
>>default
>> StringBuilder bodyHTML = new StringBuilder();
>> bodyHTML.append("\t<script type=\"text/javascript\">\n");
>> bodyHTML.append("\t\tnew ");
>> - bodyHTML.append(projectName);
>> + bodyHTML.append(mainClassQName);
>> bodyHTML.append("();\n");
>> bodyHTML.append("\t</script>\n");
>> return bodyHTML.toString();
>> }
>>
>> @Override
>> - protected void writeHTML(String type, String projectName, File
>>targetDir,
>> + protected void writeHTML(String type, String projectName, String
>>mainClassQName, File targetDir,
>> String deps, List<String> additionalHTML)
>>throws IOException
>> {
>> if ("intermediate".equals(type))
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>> index bb3515d..3c2eb6f 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/j
>>s/node/NodePublisher.java
>> @@ -37,7 +37,7 @@ public class NodePublisher extends JSCPublisher
>> }
>>
>> @Override
>> - protected String getTemplateDependencies(String type, String
>>projectName, String deps)
>> + protected String getTemplateDependencies(String type, String
>>projectName, String mainClassQName, String deps)
>> {
>> StringBuilder depsJS = new StringBuilder();
>> if ("intermediate".equals(type))
>> @@ -62,31 +62,31 @@ public class NodePublisher extends JSCPublisher
>> }
>>
>> @Override
>> - protected String getTemplateBody(String projectName)
>> + protected String getTemplateBody(String mainClassQName)
>> {
>> StringBuilder bodyJS = new StringBuilder();
>> if (exportModule)
>> {
>> bodyJS.append("module.exports = ");
>> - bodyJS.append(projectName);
>> + bodyJS.append(mainClassQName);
>> bodyJS.append(";");
>> }
>> else
>> {
>> bodyJS.append("new ");
>> - bodyJS.append(projectName);
>> + bodyJS.append(mainClassQName);
>> bodyJS.append("();");
>> }
>> return bodyJS.toString();
>> }
>>
>> @Override
>> - protected void writeHTML(String type, String projectName, File
>>targetDir,
>> + protected void writeHTML(String type, String projectName, String
>>mainClassQName, File targetDir,
>> String deps, List<String> additionalHTML)
>>throws IOException
>> {
>> StringBuilder contents = new StringBuilder();
>> - contents.append(getTemplateDependencies(type, projectName,
>>deps));
>> - contents.append(getTemplateBody(projectName));
>> + contents.append(getTemplateDependencies(type, projectName,
>>mainClassQName, deps));
>> + contents.append(getTemplateBody(mainClassQName));
>> writeFile(new File(targetDir, "index.js"), contents.toString(),
>>false);
>> }
>> }
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>> index 1c3e943..6ad8bbb 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/m
>>xml/royale/MXMLRoyalePublisher.java
>> @@ -96,11 +96,11 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> private boolean useStrictPublishing;
>>
>> private GoogDepsWriter getGoogDepsWriter(File intermediateDir,
>> - String projectName,
>> + String mainClassQName,
>> JSGoogConfiguration googConfiguration,
>> List<ISWC> swcs)
>> {
>> - return new GoogDepsWriter(intermediateDir, projectName,
>>googConfiguration, swcs);
>> + return new GoogDepsWriter(intermediateDir, mainClassQName,
>>googConfiguration, swcs);
>> }
>>
>> @Override
>> @@ -159,7 +159,25 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // The "intermediate" is the "js-debug" output.
>> final File intermediateDir = outputFolder;
>>
>> + // The source directory is the source path entry containing
>>the Main class.
>> + List<File> sourcePaths = project.getSourcePath();
>> + String targetFile =
>>configuration.getTargetFile().toLowerCase();
>> + File imageSrcDir = null;
>> + for (File sp : sourcePaths)
>> + {
>> + String lowercasePath = sp.getAbsolutePath().toLowerCase();
>> + if (targetFile.startsWith(lowercasePath))
>> + imageSrcDir = sp;
>> + }
>> final String projectName =
>>FilenameUtils.getBaseName(configuration.getTargetFile());
>> + String qName = null;
>> + try {
>> + qName = project.mainCU.getQualifiedNames().get(0);
>> + } catch (InterruptedException e) {
>> + // TODO Auto-generated catch block
>> + e.printStackTrace();
>> + }
>> + final String mainClassQName = qName;
>> final String outputFileName = projectName + "." +
>>project.getBackend().getOutputExtension();
>>
>> // The "release" is the "js-release" directory.
>> @@ -184,11 +202,8 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> IOFileFilter assetFiles = FileFilterUtils.or(pngSuffixFilter,
>>jpgSuffixFilter, jpegSuffixFilter, svgSuffixFilter, gifSuffixFilter,
>> jsonSuffixFilter);
>> IOFileFilter resourceFilter =
>>FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, assetFiles);
>> - // The source directory is the directory containing the Main
>>class.
>> - File imageSrcDir = new
>>File(configuration.getTargetFile()).getAbsoluteFile().getParentFile();
>> // FIXME: All images need to be located relative to the Main
>>class ... for Maven this is a problem.
>> FileUtils.copyDirectory(imageSrcDir, intermediateDir,
>>resourceFilter);
>> -
>> // Iterate over all themes SWCs and add the contents of any
>>included files in
>> // an assets folder to an assets folder in the destination
>>folder.
>> final ISWCManager swcManager =
>>project.getWorkspace().getSWCManager();
>> @@ -347,7 +362,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // Add all files generated by the compiler to the compilation
>>unit.
>>
>>/////////////////////////////////////////////////////////////////////////
>>////////
>>
>> - GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir,
>>projectName, googConfiguration, allswcs);
>> + GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir,
>>mainClassQName, googConfiguration, allswcs);
>> // This list contains all files generated by the compiler, this
>>is both the
>> // compiled js files created by the sources of the current
>>project plus the
>> // js files of used dependencies.
>> @@ -365,10 +380,10 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // is generated here so it can be used for outputting the html
>>templates.
>> String depsFileData = gdw.generateDeps(project, problems);
>>
>> - if (project.isModule(projectName))
>> + if (project.isModule(mainClassQName))
>> {
>> // need better test someday
>> - depsFileData += "\ngoog.require('" + projectName + "');\n";
>> + depsFileData += "\ngoog.require('" + mainClassQName + "');\n";
>> writeFile(new File(intermediateDir, projectName +
>>"__deps.js"), depsFileData, false);
>> Set<String> provideds = computeProvideds(depsFileData);
>> compilerWrapper.setProvideds(provideds);
>> @@ -380,17 +395,17 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> // Create the index.html for the debug-js version.
>> if (!((JSGoogConfiguration)configuration).getSkipTranspile()) {
>> if (template != null) {
>> - writeTemplate(template, "intermediate", projectName,
>>intermediateDir, depsFileData, gdw.additionalHTML);
>> + writeTemplate(template, "intermediate", projectName,
>>mainClassQName, intermediateDir, depsFileData, gdw.additionalHTML);
>> } else {
>> - writeHTML("intermediate", projectName,
>>intermediateDir, depsFileData, gdw.additionalHTML);
>> + writeHTML("intermediate", projectName,
>>mainClassQName, intermediateDir, depsFileData, gdw.additionalHTML);
>> }
>> }
>> // Create the index.html for the release-js version.
>> if (configuration.release()) {
>> if (template != null) {
>> - writeTemplate(template, "release", projectName,
>>releaseDir, depsFileData, gdw.additionalHTML);
>> + writeTemplate(template, "release", projectName,
>>mainClassQName, releaseDir, depsFileData, gdw.additionalHTML);
>> } else {
>> - writeHTML("release", projectName, releaseDir, null,
>>gdw.additionalHTML);
>> + writeHTML("release", projectName, mainClassQName,
>>releaseDir, null, gdw.additionalHTML);
>> }
>> }
>> }
>> @@ -608,7 +623,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> return code;
>> }
>>
>> - protected void writeTemplate(File template, String type, String
>>projectName, File targetDir, String deps, List<String> additionalHTML)
>> + protected void writeTemplate(File template, String type, String
>>projectName, String mainClassQName, File targetDir, String deps,
>>List<String> additionalHTML)
>> throws IOException
>> {
>> // Check if the template exists.
>> @@ -629,7 +644,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> bgcolor = ta.getBackgroundColor();
>> pageTitle = ta.getPageTitle();
>> }
>> - String result = input.replaceAll("\\$\\{application\\}",
>>projectName);
>> + String result = input.replaceAll("\\$\\{application\\}",
>>mainClassQName);
>> if (bgcolor != null)
>> result = result.replaceAll("\\$\\{bgcolor\\}", bgcolor);
>> //result = result.replaceAll("\\$\\{expressInstallSwf\\}",
>>expressInstallSwf);
>> @@ -646,10 +661,10 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>>
>> StringBuilder addHTML = new StringBuilder();
>> addHTML.append(getTemplateAdditionalHTML(additionalHTML));
>> - addHTML.append(getTemplateDependencies(type, projectName, deps));
>> + addHTML.append(getTemplateDependencies(type, projectName,
>>mainClassQName, deps));
>> result = result.replaceAll("\\$\\{head\\}", addHTML.toString());
>>
>> - String templateBody = getTemplateBody(projectName);
>> + String templateBody = getTemplateBody("release".equals(type) ?
>>projectName : mainClassQName);
>> result = result.replaceAll("\\$\\{body\\}", templateBody);
>>
>> writeFile(new File(targetDir,
>>googConfiguration.getHtmlOutputFileName()), result, false);
>> @@ -665,7 +680,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> return htmlFile.toString();
>> }
>>
>> - protected String getTemplateDependencies(String type, String
>>projectName, String deps)
>> + protected String getTemplateDependencies(String type, String
>>projectName, String mainClassQName, String deps)
>> {
>> StringBuilder depsHTML = new StringBuilder();
>> if ("intermediate".equals(type))
>> @@ -674,7 +689,7 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> depsHTML.append("\t<script type=\"text/javascript\">\n");
>> depsHTML.append(deps);
>> depsHTML.append("\t\tgoog.require(\"");
>> - depsHTML.append(projectName);
>> + depsHTML.append(mainClassQName);
>> depsHTML.append("\");\n");
>> depsHTML.append("\t</script>\n");
>> }
>> @@ -687,19 +702,19 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> return depsHTML.toString();
>> }
>>
>> - protected String getTemplateBody(String projectName)
>> + protected String getTemplateBody(String mainClassQName)
>> {
>> StringBuilder bodyHTML = new StringBuilder();
>> bodyHTML.append("\t<script type=\"text/javascript\">\n");
>> bodyHTML.append("\t\tnew ");
>> - bodyHTML.append(projectName);
>> + bodyHTML.append(mainClassQName);
>> bodyHTML.append("()");
>> bodyHTML.append(".start();\n");
>> bodyHTML.append("\t</script>\n");
>> return bodyHTML.toString();
>> }
>>
>> - protected void writeHTML(String type, String projectName, File
>>targetDir, String deps, List<String> additionalHTML)
>> + protected void writeHTML(String type, String projectName, String
>>mainClassQName, File targetDir, String deps, List<String> additionalHTML)
>> throws IOException
>> {
>> StringBuilder htmlFile = new StringBuilder();
>> @@ -711,12 +726,12 @@ public class MXMLRoyalePublisher extends
>>JSGoogPublisher implements IJSPublisher
>> htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\"
>>href=\"").append(projectName).append(".css\">\n");
>>
>> htmlFile.append(getTemplateAdditionalHTML(additionalHTML));
>> - htmlFile.append(getTemplateDependencies(type, projectName,
>>deps));
>> + htmlFile.append(getTemplateDependencies(type, projectName,
>>mainClassQName, deps));
>>
>> htmlFile.append("</head>\n");
>> htmlFile.append("<body>\n");
>>
>> - htmlFile.append(getTemplateBody(projectName));
>> + htmlFile.append(getTemplateBody(mainClassQName));
>>
>> htmlFile.append("</body>\n");
>> htmlFile.append("</html>");
>> diff --git
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>> index b412817..45f95b6 100644
>> ---
>>a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>> +++
>>b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/Goo
>>gDepsWriter.java
>> @@ -703,10 +703,6 @@ public class GoogDepsWriter {
>> File f;
>>
>> String classPath = className.replace(".", File.separator);
>> - // special case app names with underscores, but hope that
>> - // no other class names have underscores in them
>> - if (className.equals(mainName))
>> - classPath = className;
>>
>> fn = outputFolderPath + File.separator + classPath + ".js";
>> f = new File(fn);
>> diff --git
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>> index 21bd8a4..a42555a 100644
>> ---
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>> +++
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rceListManager.java
>> @@ -124,8 +124,10 @@ final class SourceListManager
>> unitsToAdd = new
>>ArrayList<ICompilationUnit>(newSourcesToCreate.size());
>> for (File file : newSourcesToCreate)
>> {
>> + File sourcePath = sourcePathManager.getSourcePath(file);
>> + String qname = sourcePathManager.computeQName(sourcePath,
>>file);
>> ICompilationUnit unit =
>>project.getSourceCompilationUnitFactory().createCompilationUnit(
>> - file, DefinitionPriority.BasePriority.SOURCE_LIST,
>>0, null, null);
>> + file, DefinitionPriority.BasePriority.SOURCE_LIST,
>>0, qname, null);
>>
>> //It can be null in some cases, see
>>#ResourceBundleSourceFileHandler
>> if(unit != null)
>> diff --git
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>> index 23f8bbc..366cab1 100644
>> ---
>>a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>> +++
>>b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/Sou
>>rcePathManager.java
>> @@ -95,6 +95,17 @@ public final class SourcePathManager
>> return false;
>> }
>>
>> + public File getSourcePath(File file)
>> + {
>> + for (final DirectoryID directory : sourcePaths.keySet())
>> + {
>> + if (directory.isParentOf(file))
>> + return directory.getFile();
>> + }
>> +
>> + return null;
>> + }
>> +
>> private void accumulateQNameFiles(Set<QNameFile> qNameFiles, File
>>directory, String baseQName, String locale,
>> Collection<ICompilerProblem> problems, int order)
>> {
>>
>> --
>> To stop receiving notification emails like this one, please contact
>> aharui@apache.org.
>