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) {

Reply via email to