This is an automated email from the ASF dual-hosted git repository. sgoeschl pushed a commit to branch FREEMARKER-188 in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
commit 2959baad06ab6f8e9f15215d0a0cfccf82b1547a Author: Siegfried Goeschl <[email protected]> AuthorDate: Sun Sep 26 18:49:59 2021 +0200 FREEMARKER-188 Cleanup code --- .../freemarker/generator/cli/config/Settings.java | 28 +++++++-------- .../freemarker/generator/cli/config/Suppliers.java | 4 +-- .../cli/config/output/AbstractOutputGenerator.java | 4 +-- .../output/DataSourceSeedingOutputMapper.java | 26 +++++++++----- .../generator/cli/task/FreeMarkerTask.java | 2 +- .../output/DataSourceSeedingOutputMapperTest.java | 40 +++++++++++++--------- .../generator/tools/system/SystemTool.java | 1 + 7 files changed, 62 insertions(+), 43 deletions(-) diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java index 93daa71..d699a8d 100644 --- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java +++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java @@ -64,11 +64,11 @@ public class Settings { /** List of additional shared data models */ private final List<String> sharedDataModels; - /** Include pattern for sources */ - private final String sourceIncludePattern; + /** Global include pattern for data sources */ + private final String dataSourceIncludePattern; - /** Exclude pattern for sources */ - private final String sourceExcludePattern; + /** Global exclude pattern for data sources */ + private final String dataSourceExcludePattern; /** Encoding of input files */ private final Charset inputEncoding; @@ -102,8 +102,8 @@ public class Settings { List<OutputGeneratorDefinition> outputGeneratorDefinitions, List<String> sharedDataSources, List<String> sharedDataModels, - String sourceIncludePattern, - String sourceExcludePattern, + String dataSourceIncludePattern, + String dataSourceExcludePattern, Charset inputEncoding, Charset outputEncoding, boolean verbose, @@ -119,8 +119,8 @@ public class Settings { this.outputGeneratorDefinitions = requireNonNull(outputGeneratorDefinitions); this.sharedDataSources = requireNonNull(sharedDataSources); this.sharedDataModels = requireNonNull(sharedDataModels); - this.sourceIncludePattern = sourceIncludePattern; - this.sourceExcludePattern = sourceExcludePattern; + this.dataSourceIncludePattern = dataSourceIncludePattern; + this.dataSourceExcludePattern = dataSourceExcludePattern; this.inputEncoding = inputEncoding; this.outputEncoding = outputEncoding; this.verbose = verbose; @@ -160,12 +160,12 @@ public class Settings { return sharedDataModels; } - public String getSourceIncludePattern() { - return sourceIncludePattern; + public String getDataSourceIncludePattern() { + return dataSourceIncludePattern; } - public String getSourceExcludePattern() { - return sourceExcludePattern; + public String getDataSourceExcludePattern() { + return dataSourceExcludePattern; } public Charset getInputEncoding() { @@ -230,8 +230,8 @@ public class Settings { ", outputGeneratorDefinitions=" + outputGeneratorDefinitions + ", sharedDataSources=" + sharedDataSources + ", sharedDataModels=" + sharedDataModels + - ", sourceIncludePattern='" + sourceIncludePattern + '\'' + - ", sourceExcludePattern='" + sourceExcludePattern + '\'' + + ", dataSourceIncludePattern='" + dataSourceIncludePattern + + ", dataSourceExcludePattern='" + dataSourceExcludePattern + ", inputEncoding=" + inputEncoding + ", outputEncoding=" + outputEncoding + ", verbose=" + verbose + diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java index ab3681e..310744a 100644 --- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java +++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java @@ -48,8 +48,8 @@ public class Suppliers { public static DataSourcesSupplier sharedDataSourcesSupplier(Settings settings) { return new DataSourcesSupplier(settings.getSharedDataSources(), - settings.getSourceIncludePattern(), - settings.getSourceExcludePattern(), + settings.getDataSourceIncludePattern(), + settings.getDataSourceExcludePattern(), settings.getInputEncoding()); } diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/AbstractOutputGenerator.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/AbstractOutputGenerator.java index 967e3cf..81f9633 100644 --- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/AbstractOutputGenerator.java +++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/AbstractOutputGenerator.java @@ -54,8 +54,8 @@ public abstract class AbstractOutputGenerator { final DataSourcesSupplier outputGeneratorDataSourcesSupplier = new DataSourcesSupplier( outputGeneratorDefinition.getDataSources(), - settings.getSourceIncludePattern(), - settings.getSourceExcludePattern(), + settings.getDataSourceIncludePattern(), + settings.getDataSourceExcludePattern(), settings.getInputEncoding() ); diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapper.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapper.java index 6fb6c4b..43d56d5 100644 --- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapper.java +++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapper.java @@ -17,10 +17,12 @@ package org.apache.freemarker.generator.cli.config.output; import org.apache.freemarker.generator.base.datasource.DataSource; -import org.apache.freemarker.generator.base.util.StringUtils; import java.io.File; +import static org.apache.freemarker.generator.base.util.StringUtils.firstNonEmpty; +import static org.apache.freemarker.generator.base.util.StringUtils.isEmpty; + public class DataSourceSeedingOutputMapper { private final String template; @@ -31,18 +33,26 @@ public class DataSourceSeedingOutputMapper { public File map(File outputDirectory, DataSource dataSource) { final String relativeFilePath = dataSource.getRelativeFilePath(); - final String fileName = expand(template, dataSource); + final String fileName = isEmpty(template) ? fromDataSource(dataSource) : fromTemplate(template, dataSource); - return StringUtils.isEmpty(relativeFilePath) ? + return isEmpty(relativeFilePath) ? new File(outputDirectory, fileName) : new File(new File(outputDirectory, relativeFilePath), fileName); } - private static String expand(String value, DataSource dataSource) { - if (StringUtils.isEmpty(value)) { - return dataSource.getBaseName() + "." + dataSource.getExtension(); - } + private static String fromTemplate(String value, DataSource dataSource) { + return value.replace("*", firstNonEmpty(dataSource.getBaseName(), dataSource.getName())); + } - return value.replace("*", dataSource.getBaseName()); + private static String fromDataSource(DataSource dataSource) { + if (isEmpty(dataSource.getBaseName())) { + return dataSource.getName(); + } else { + if (isEmpty(dataSource.getExtension())) { + return dataSource.getBaseName(); + } else { + return dataSource.getBaseName() + "." + dataSource.getExtension(); + } + } } } diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java index 543f8fa..914bd79 100644 --- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java +++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java @@ -50,7 +50,7 @@ import static org.apache.freemarker.generator.base.FreeMarkerConstants.Model; */ public class FreeMarkerTask implements Callable<Integer> { - private static final int SUCCESS_CODE = 0; + private static final int SUCCESS_CODE = 0; private final Supplier<Configuration> configurationSupplier; private final Supplier<List<OutputGenerator>> outputGeneratorsSupplier; diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapperTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapperTest.java index 494a2ad..a17ba4a 100644 --- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapperTest.java +++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapperTest.java @@ -19,33 +19,41 @@ public class DataSourceSeedingOutputMapperTest { private final File PARENT_DIRECTORY = new File(".."); private final File ANY_DIRECTORY = new File("target"); private final File ANY_FILE = new File("pom.xml"); - private final DataSource ANY_DATA_SOURCE = DataSourceFactory.fromFile(ANY_FILE, StandardCharsets.UTF_8); + private final DataSource FILE_DATA_SOURCE = DataSourceFactory.fromFile(ANY_FILE, StandardCharsets.UTF_8); + private final DataSource URL_DATA_SOURCE = DataSourceFactory.fromUrl("google.com", "group", DataSourceFactory.toUrl("https://www.google.com")); @Test public void shouldGenerateOutputFileForCurrentDirectory() { - assertEquals("pom.xml", path(outputMapper(null).map(CURRENT_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("pom.xml", path(outputMapper("").map(CURRENT_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("pom.html", path(outputMapper("*.html").map(CURRENT_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("pom.html", path(outputMapper("pom.html").map(CURRENT_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("html/pom.html", path(outputMapper("html/*.html").map(CURRENT_DIRECTORY, ANY_DATA_SOURCE))); + assertEquals("pom.xml", path(outputMapper(null).map(CURRENT_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("pom.xml", path(outputMapper("").map(CURRENT_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("pom.html", path(outputMapper("*.html").map(CURRENT_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("pom.html", path(outputMapper("pom.html").map(CURRENT_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("html/pom.html", path(outputMapper("html/*.html").map(CURRENT_DIRECTORY, FILE_DATA_SOURCE))); } @Test public void shouldGenerateOutputFileForParentDirectory() { - assertEquals("../pom.xml", path(outputMapper(null).map(PARENT_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("../pom.xml", path(outputMapper("").map(PARENT_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("../pom.html", path(outputMapper("*.html").map(PARENT_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("../pom.html", path(outputMapper("pom.html").map(PARENT_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("../html/pom.html", path(outputMapper("html/*.html").map(PARENT_DIRECTORY, ANY_DATA_SOURCE))); + assertEquals("../pom.xml", path(outputMapper(null).map(PARENT_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("../pom.xml", path(outputMapper("").map(PARENT_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("../pom.html", path(outputMapper("*.html").map(PARENT_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("../pom.html", path(outputMapper("pom.html").map(PARENT_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("../html/pom.html", path(outputMapper("html/*.html").map(PARENT_DIRECTORY, FILE_DATA_SOURCE))); } @Test public void shouldGenerateOutputFileForAnyDirectory() { - assertEquals("target/pom.xml", path(outputMapper(null).map(ANY_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("target/pom.xml", path(outputMapper("").map(ANY_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("target/pom.html", path(outputMapper("*.html").map(ANY_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("target/pom.html", path(outputMapper("pom.html").map(ANY_DIRECTORY, ANY_DATA_SOURCE))); - assertEquals("target/html/pom.html", path(outputMapper("html/*.html").map(ANY_DIRECTORY, ANY_DATA_SOURCE))); + assertEquals("target/pom.xml", path(outputMapper(null).map(ANY_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("target/pom.xml", path(outputMapper("").map(ANY_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("target/pom.html", path(outputMapper("*.html").map(ANY_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("target/pom.html", path(outputMapper("pom.html").map(ANY_DIRECTORY, FILE_DATA_SOURCE))); + assertEquals("target/html/pom.html", path(outputMapper("html/*.html").map(ANY_DIRECTORY, FILE_DATA_SOURCE))); + } + + @Test + public void shouldHandleUrlDataSources() { + assertEquals("target/google.com", path(outputMapper(null).map(ANY_DIRECTORY, URL_DATA_SOURCE))); + assertEquals("target/google.com", path(outputMapper("").map(ANY_DIRECTORY, URL_DATA_SOURCE))); + assertEquals("target/google.com.html", path(outputMapper("*.html").map(ANY_DIRECTORY, URL_DATA_SOURCE))); } private static DataSourceSeedingOutputMapper outputMapper(String template) { diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java index 1fac36a..be6ad05 100644 --- a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java +++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java @@ -109,6 +109,7 @@ public class SystemTool { * Get the value of a user-supplied parameter. * * @param name name of the parameter + * @param def default value * @return value or default value */ public String getParameter(String name, String def) {
