From 79bb475048b6b2875ce814cb2900a755efb142c5 Mon Sep 17 00:00:00 2001 From: Renaud Pawlak Date: Sun, 10 Sep 2017 08:21:30 +0200 Subject: [PATCH] fix for #364 + other fixes - support for options in configuration file - add a configurationFile parameter to JSweet transpiler that may be used by launchers to select a configuration file other than default - fix doc --- doc/jsweet-language-specifications.md | 2 +- doc/jsweet-language-specifications.pdf | Bin 339013 -> 339074 bytes doc/jsweet-language-specifications.tex | 2 +- .../main/java/org/jsweet/JSweetConfig.java | 2 +- .../org/jsweet/transpiler/JSweetContext.java | 7 +- .../org/jsweet/transpiler/JSweetOptions.java | 10 +- .../jsweet/transpiler/JSweetTranspiler.java | 167 +++++++++++------- .../transpiler/candy/CandyProcessor.java | 19 +- .../jsweet/test/transpiler/AbstractTest.java | 6 +- .../test/transpiler/TranspilerTests.java | 34 ++++ .../transpiler/configuration-bundle.json | 9 + .../transpiler/configuration-nobundle.json | 8 + 12 files changed, 193 insertions(+), 73 deletions(-) create mode 100644 transpiler/src/test/java/source/transpiler/configuration-bundle.json create mode 100644 transpiler/src/test/java/source/transpiler/configuration-nobundle.json diff --git a/doc/jsweet-language-specifications.md b/doc/jsweet-language-specifications.md index 5e6bf96d..c77163a0 100644 --- a/doc/jsweet-language-specifications.md +++ b/doc/jsweet-language-specifications.md @@ -1507,7 +1507,7 @@ Here is a more complete example with a full `jsweetconfig.json` configuration fi "include": [ "x.y.z" ] }, // do not generate any TypeScript code for Java-specific methods - "@Erase": { + "@Erased": { "include": [ "**.writeObject(..)", "**.readObject(..)", "**.hashCode(..)" ] }, // inject logging in all setters and getters of the x.y.z.A class diff --git a/doc/jsweet-language-specifications.pdf b/doc/jsweet-language-specifications.pdf index 462ef0e194fe75e361c087f471cd50b579d2c0a3..ad0a61033945bd024fc55ee3a0a78f3726e45e22 100644 GIT binary patch delta 49069 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 X`M@s4h7}PT70iLgz#yY4i}t?&EHK!F diff --git a/doc/jsweet-language-specifications.tex b/doc/jsweet-language-specifications.tex index c998f8fe..0ec1a003 100644 --- a/doc/jsweet-language-specifications.tex +++ b/doc/jsweet-language-specifications.tex @@ -1521,7 +1521,7 @@ Here is a more complete example with a full \texttt{jsweetconfig.json} configura "include": [ "x.y.z" ] }, // do not generate any TypeScript code for Java-specific methods - "@Erase": { + "@Erased": { "include": [ "**.writeObject(..)", "**.readObject(..)", "**.hashCode(..)" ] }, // inject logging in all setters and getters of the x.y.z.A class diff --git a/transpiler/src/main/java/org/jsweet/JSweetConfig.java b/transpiler/src/main/java/org/jsweet/JSweetConfig.java index 6d2e8976..1d705d68 100644 --- a/transpiler/src/main/java/org/jsweet/JSweetConfig.java +++ b/transpiler/src/main/java/org/jsweet/JSweetConfig.java @@ -450,7 +450,7 @@ public abstract class JSweetConfig { public static final String FIELD_METHOD_CLASH_RESOLVER_PREFIX = "__"; /** - * The configuration file name. + * The default configuration file name. */ public static final String CONFIGURATION_FILE_NAME = "jsweetconfig.json"; diff --git a/transpiler/src/main/java/org/jsweet/transpiler/JSweetContext.java b/transpiler/src/main/java/org/jsweet/transpiler/JSweetContext.java index a96f699a..41264c78 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/JSweetContext.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/JSweetContext.java @@ -904,7 +904,7 @@ public class JSweetContext extends Context { footerStatements.add(0, footerStatement); } - private Map headers = new LinkedHashMap(); + private Map headers = new LinkedHashMap(); /** * Gets and clears the headers. @@ -938,7 +938,7 @@ public class JSweetContext extends Context { public String getHeader(String key) { return headers.get(key); } - + private Map globalsMapping = new HashMap<>(); /** @@ -1148,6 +1148,9 @@ public class JSweetContext extends Context { Collection filterDescriptors = annotationFilters.get(annotationType); if (filterDescriptors != null) { for (AnnotationFilterDescriptor filterDescriptor : filterDescriptors) { + if (filterDescriptor.inclusionPatterns == null) { + logger.error("no inclusion patterns found for annotation filter: " + annotationType); + } for (Pattern include : filterDescriptor.inclusionPatterns) { if (include.matcher(signature).matches()) { boolean excluded = false; diff --git a/transpiler/src/main/java/org/jsweet/transpiler/JSweetOptions.java b/transpiler/src/main/java/org/jsweet/transpiler/JSweetOptions.java index 5b19080c..c7c3abd9 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/JSweetOptions.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/JSweetOptions.java @@ -50,7 +50,7 @@ public interface JSweetOptions { /** * Constant string for the 'encoding' option. */ - String encoding = "bundle"; + String encoding = "encoding"; /** * Constant string for the 'enableAssertions' option. */ @@ -103,7 +103,7 @@ public interface JSweetOptions { * Constant string for the 'extraSystemPath' option. */ String extraSystemPath = "extraSystemPath"; - + /** * All the supported options. */ @@ -287,4 +287,10 @@ public interface JSweetOptions { */ ModuleResolution getModuleResolution(); + /** + * The configuration file, which is by default the + * jsweetconfig.json file in the current project. + */ + File getConfigurationFile(); + } \ No newline at end of file diff --git a/transpiler/src/main/java/org/jsweet/transpiler/JSweetTranspiler.java b/transpiler/src/main/java/org/jsweet/transpiler/JSweetTranspiler.java index 4ad4a0f1..de617297 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/JSweetTranspiler.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/JSweetTranspiler.java @@ -222,6 +222,7 @@ public class JSweetTranspiler implements JSweetOptions { private boolean skipTypeScriptChecks = false; private boolean disableSingleFloatPrecision = false; private ArrayList adapters = new ArrayList<>(); + private File configurationFile; /** * Manually sets the transpiler to use (or not use) a Java runtime. @@ -287,81 +288,91 @@ public class JSweetTranspiler implements JSweetOptions { private Map configuration; @SuppressWarnings("unchecked") - private T getConfigurationValue(String key) { - return (T) configuration.get(key); + private T getMapValue(Map map, String key) { + return (T) map.get(key); } /** * Applies the current configuration map. */ - public void applyConfiguration() { - for (String key : configuration.keySet()) { - if (!ArrayUtils.contains(JSweetOptions.options, key)) { - logger.error("unsupported option: " + key); + private void applyConfiguration() { + if (configuration.containsKey("options")) { + + @SuppressWarnings("unchecked") + Map options = (Map) configuration.get("options"); + + for (String key : options.keySet()) { + if (!ArrayUtils.contains(JSweetOptions.options, key)) { + logger.error("unsupported option: " + key); + } + } + if (options.containsKey(JSweetOptions.bundle)) { + setBundle(getMapValue(options, JSweetOptions.bundle)); + } + if (options.containsKey(JSweetOptions.noRootDirectories)) { + setNoRootDirectories(getMapValue(options, JSweetOptions.noRootDirectories)); + } + if (options.containsKey(JSweetOptions.sourceMap)) { + setGenerateSourceMaps(getMapValue(options, JSweetOptions.sourceMap)); + } + if (options.containsKey(JSweetOptions.module)) { + setModuleKind(ModuleKind.valueOf(getMapValue(options, JSweetOptions.module))); + } + if (options.containsKey(JSweetOptions.encoding)) { + setEncoding(getMapValue(options, JSweetOptions.encoding)); + } + if (options.containsKey(JSweetOptions.enableAssertions)) { + setIgnoreAssertions(!(Boolean) getMapValue(options, JSweetOptions.enableAssertions)); + } + if (options.containsKey(JSweetOptions.declaration)) { + setGenerateDeclarations(getMapValue(options, JSweetOptions.declaration)); + } + if (options.containsKey(JSweetOptions.tsOnly)) { + setGenerateJsFiles(!(Boolean) getMapValue(options, JSweetOptions.tsOnly)); + } + if (options.containsKey(JSweetOptions.ignoreDefinitions)) { + setGenerateDefinitions(!(Boolean) getMapValue(options, JSweetOptions.ignoreDefinitions)); + } + if (options.containsKey(JSweetOptions.header)) { + setHeaderFile(new File((String) getMapValue(options, JSweetOptions.header))); + } + if (options.containsKey(JSweetOptions.disableSinglePrecisionFloats)) { + setDisableSinglePrecisionFloats(getMapValue(options, JSweetOptions.disableSinglePrecisionFloats)); + } + if (options.containsKey(JSweetOptions.targetVersion)) { + setEcmaTargetVersion( + JSweetTranspiler.getEcmaTargetVersion(getMapValue(options, JSweetOptions.targetVersion))); + } + if (options.containsKey(JSweetOptions.tsout)) { + setTsOutputDir(new File((String) getMapValue(options, JSweetOptions.tsout))); + } + if (options.containsKey(JSweetOptions.dtsout)) { + setDeclarationsOutputDir(new File((String) getMapValue(options, JSweetOptions.dtsout))); + } + if (options.containsKey(JSweetOptions.jsout)) { + setJsOutputDir(new File((String) getMapValue(options, JSweetOptions.jsout))); + } + if (options.containsKey(JSweetOptions.candiesJsOut)) { + setJsOutputDir(new File((String) getMapValue(options, JSweetOptions.candiesJsOut))); + } + if (options.containsKey(JSweetOptions.moduleResolution)) { + setModuleResolution(getMapValue(options, JSweetOptions.moduleResolution)); + } + if (options.containsKey(JSweetOptions.extraSystemPath)) { + ProcessUtil.addExtraPath(extraSystemPath); } } - if (configuration.containsKey(JSweetOptions.bundle)) { - setBundle(getConfigurationValue(JSweetOptions.bundle)); - } - if (configuration.containsKey(JSweetOptions.noRootDirectories)) { - setNoRootDirectories(getConfigurationValue(JSweetOptions.noRootDirectories)); - } - if (configuration.containsKey(JSweetOptions.sourceMap)) { - setGenerateSourceMaps(getConfigurationValue(JSweetOptions.sourceMap)); - } - if (configuration.containsKey(JSweetOptions.module)) { - setModuleKind(ModuleKind.valueOf(getConfigurationValue(JSweetOptions.module))); - } - if (configuration.containsKey(JSweetOptions.encoding)) { - setEncoding(getConfigurationValue(JSweetOptions.encoding)); - } - if (configuration.containsKey(JSweetOptions.enableAssertions)) { - setIgnoreAssertions(!(Boolean) getConfigurationValue(JSweetOptions.enableAssertions)); - } - if (configuration.containsKey(JSweetOptions.declaration)) { - setGenerateDeclarations(getConfigurationValue(JSweetOptions.declaration)); - } - if (configuration.containsKey(JSweetOptions.tsOnly)) { - setGenerateJsFiles(!(Boolean) getConfigurationValue(JSweetOptions.tsOnly)); - } - if (configuration.containsKey(JSweetOptions.ignoreDefinitions)) { - setGenerateDefinitions(!(Boolean) getConfigurationValue(JSweetOptions.ignoreDefinitions)); - } - if (configuration.containsKey(JSweetOptions.header)) { - setHeaderFile(new File((String) getConfigurationValue(JSweetOptions.header))); - } - if (configuration.containsKey(JSweetOptions.disableSinglePrecisionFloats)) { - setDisableSinglePrecisionFloats(getConfigurationValue(JSweetOptions.disableSinglePrecisionFloats)); - } - if (configuration.containsKey(JSweetOptions.targetVersion)) { - setEcmaTargetVersion( - JSweetTranspiler.getEcmaTargetVersion(getConfigurationValue(JSweetOptions.targetVersion))); - } - if (configuration.containsKey(JSweetOptions.tsout)) { - setTsOutputDir(new File((String) getConfigurationValue(JSweetOptions.tsout))); - } - if (configuration.containsKey(JSweetOptions.dtsout)) { - setDeclarationsOutputDir(new File((String) getConfigurationValue(JSweetOptions.dtsout))); - } - if (configuration.containsKey(JSweetOptions.jsout)) { - setJsOutputDir(new File((String) getConfigurationValue(JSweetOptions.jsout))); - } - if (configuration.containsKey(JSweetOptions.candiesJsOut)) { - setJsOutputDir(new File((String) getConfigurationValue(JSweetOptions.candiesJsOut))); - } - if (configuration.containsKey(JSweetOptions.moduleResolution)) { - setModuleResolution(getConfigurationValue(JSweetOptions.moduleResolution)); - } - if (configuration.containsKey(JSweetOptions.extraSystemPath)) { - ProcessUtil.addExtraPath(extraSystemPath); - } + } + /** + * Reads configuration from current configuration file. + */ private void readConfiguration() { - File confFile = new File(JSweetConfig.CONFIGURATION_FILE_NAME); + File confFile = configurationFile == null ? new File(JSweetConfig.CONFIGURATION_FILE_NAME) : configurationFile; if (confFile.exists()) { try { - logger.info("configuration file found"); + logger.info("configuration file found: " + confFile); @SuppressWarnings("unchecked") Map fromJson = new Gson().fromJson(FileUtils.readFileToString(confFile), Map.class); configuration = fromJson; @@ -394,6 +405,31 @@ public class JSweetTranspiler implements JSweetOptions { */ public JSweetTranspiler(JSweetFactory factory, File workingDir, File tsOutputDir, File jsOutputDir, File extractedCandiesJavascriptDir, String classPath) { + this(null, factory, workingDir, tsOutputDir, tsOutputDir, extractedCandiesJavascriptDir, classPath); + } + + /** + * Creates a JSweet transpiler. + * + * @param configurationFile + * the configurationFile (uses default one if null) + * @param factory + * the factory used to create the transpiler objects + * @param workingDir + * the working directory (uses default one if null) + * @param tsOutputDir + * the directory where TypeScript files are written + * @param jsOutputDir + * the directory where JavaScript files are written + * @param extractedCandiesJavascriptDir + * see {@link #getExtractedCandyJavascriptDir()} + * @param classPath + * the classpath as a string (check out system-specific + * requirements for Java classpaths) + */ + public JSweetTranspiler(File configurationFile, JSweetFactory factory, File workingDir, File tsOutputDir, + File jsOutputDir, File extractedCandiesJavascriptDir, String classPath) { + this.configurationFile = configurationFile; this.factory = factory; readConfiguration(); if (tsOutputDir == null) { @@ -2041,4 +2077,9 @@ public class JSweetTranspiler implements JSweetOptions { this.adapters = new ArrayList<>(adapters); } + @Override + public File getConfigurationFile() { + return configurationFile; + } + } diff --git a/transpiler/src/main/java/org/jsweet/transpiler/candy/CandyProcessor.java b/transpiler/src/main/java/org/jsweet/transpiler/candy/CandyProcessor.java index eb79bd72..1e64ef26 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/candy/CandyProcessor.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/candy/CandyProcessor.java @@ -213,10 +213,25 @@ public class CandyProcessor { return jarFilesCollector; } + private String normalizeVersion(String version) { + if (version == null) { + return null; + } + String[] v = JSweetConfig.getVersionNumber().split("\\."); + if (v.length == 2) { + return version; + } else if (v.length == 1) { + return v[0] + ".0"; + } else { + return v[0] + "." + v[1]; + } + } + private void checkCandyVersion(CandyDescriptor candy, TranspilationHandler transpilationHandler) { - String actualTranspilerVersion = JSweetConfig.getVersionNumber().split("-")[0]; - String candyTranspilerVersion = candy.transpilerVersion == null ? null : candy.transpilerVersion.split("-")[0]; + String actualTranspilerVersion = normalizeVersion(JSweetConfig.getVersionNumber().split("-")[0]); + String candyTranspilerVersion = normalizeVersion( + candy.transpilerVersion == null ? null : candy.transpilerVersion.split("-")[0]); if (candyTranspilerVersion == null || !candyTranspilerVersion.equals(actualTranspilerVersion)) { transpilationHandler.report(JSweetProblem.CANDY_VERSION_DISCREPANCY, null, diff --git a/transpiler/src/test/java/org/jsweet/test/transpiler/AbstractTest.java b/transpiler/src/test/java/org/jsweet/test/transpiler/AbstractTest.java index bd20bf20..053c9c3e 100644 --- a/transpiler/src/test/java/org/jsweet/test/transpiler/AbstractTest.java +++ b/transpiler/src/test/java/org/jsweet/test/transpiler/AbstractTest.java @@ -104,7 +104,11 @@ public class AbstractTest { protected static final String TMPOUT_DIR = "tempOut"; protected static void createTranspiler(JSweetFactory factory) { - transpiler = new JSweetTranspiler(factory, new File(TMPOUT_DIR), null, + createTranspiler(null, factory); + } + + protected static void createTranspiler(File configurationFile, JSweetFactory factory) { + transpiler = new JSweetTranspiler(configurationFile, factory, null, new File(TMPOUT_DIR), null, new File(JSweetTranspiler.TMP_WORKING_DIR_NAME + "/candies/js"), System.getProperty("java.class.path")); transpiler.setEcmaTargetVersion(EcmaScriptComplianceLevel.ES5); transpiler.setEncoding("UTF-8"); diff --git a/transpiler/src/test/java/org/jsweet/test/transpiler/TranspilerTests.java b/transpiler/src/test/java/org/jsweet/test/transpiler/TranspilerTests.java index cb8abcbe..84f65c99 100644 --- a/transpiler/src/test/java/org/jsweet/test/transpiler/TranspilerTests.java +++ b/transpiler/src/test/java/org/jsweet/test/transpiler/TranspilerTests.java @@ -493,4 +493,38 @@ public class TranspilerTests extends AbstractTest { transpiler.setHeaderFile(null); } + @Test + public void testConfigurationFile() { + SourceFile f = getSourceFile(CanvasDrawing.class); + File configurationFile = new File(f.getJavaFile().getParentFile(), "configuration-nobundle.json"); + createTranspiler(configurationFile, new JSweetFactory()); + assertTrue(transpiler.getHeaderFile().getPath().endsWith("header.txt")); + assertFalse(transpiler.isBundle()); + transpile(logHandler -> { + logHandler.assertNoProblems(); + try { + String generatedCode = FileUtils.readFileToString(f.getTsFile()); + assertTrue(generatedCode.startsWith("// This is a test header...")); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + }, f); + configurationFile = new File(f.getJavaFile().getParentFile(), "configuration-bundle.json"); + createTranspiler(configurationFile, new JSweetFactory()); + assertTrue(transpiler.getHeaderFile().getPath().endsWith("header.txt")); + assertTrue(transpiler.isBundle()); + transpile(ModuleKind.none, logHandler -> { + logHandler.assertNoProblems(); + try { + String generatedCode = FileUtils.readFileToString(f.getTsFile()); + assertTrue(generatedCode.startsWith("// This is a test header...")); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + }, f); + createTranspiler(new JSweetFactory()); + } + } diff --git a/transpiler/src/test/java/source/transpiler/configuration-bundle.json b/transpiler/src/test/java/source/transpiler/configuration-bundle.json new file mode 100644 index 00000000..f2fe2296 --- /dev/null +++ b/transpiler/src/test/java/source/transpiler/configuration-bundle.json @@ -0,0 +1,9 @@ +{ + "options": { + "header": "src/test/java/source/transpiler/header.txt", + "bundle": true + }, + "@Erased": { + "include": "*.main(..)" + } +} \ No newline at end of file diff --git a/transpiler/src/test/java/source/transpiler/configuration-nobundle.json b/transpiler/src/test/java/source/transpiler/configuration-nobundle.json new file mode 100644 index 00000000..73336ada --- /dev/null +++ b/transpiler/src/test/java/source/transpiler/configuration-nobundle.json @@ -0,0 +1,8 @@ +{ + "options": { + "header": "src/test/java/source/transpiler/header.txt" + }, + "@Erased": { + "include": "*.main(..)" + } +} \ No newline at end of file