This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a commit to branch FREEMARKER-141
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git

commit fcb37175675edb28bd8bffefe74ff691db33b351
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Sun Apr 12 13:17:37 2020 +0200

    FREEMARKER-141 freemarker-cli: Expose user-supplied parameters in the data 
model
---
 ...ataModelSupplier.java => ParameterModelSupplier.java} |  4 ++--
 ...SupplierTest.java => ParameterModelSupplierTest.java} |  8 ++++----
 .../java/org/apache/freemarker/generator/cli/Main.java   |  1 +
 .../freemarker/generator/cli/config/Suppliers.java       | 11 +++++++++++
 .../freemarker/generator/cli/task/FreeMarkerTask.java    | 16 +++++++++++++---
 .../org/apache/freemarker/generator/cli/ManualTest.java  |  4 ++--
 6 files changed, 33 insertions(+), 11 deletions(-)

diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterDataModelSupplier.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterModelSupplier.java
similarity index 95%
rename from 
freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterDataModelSupplier.java
rename to 
freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterModelSupplier.java
index 78da855..7dc0d86 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterDataModelSupplier.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterModelSupplier.java
@@ -34,11 +34,11 @@ import static java.util.stream.Collectors.toList;
  * to a map. The map contains either (key->String) or
  * (key->Map<String, Object>).
  */
-public class ParameterDataModelSupplier implements Supplier<Map<String, 
Object>> {
+public class ParameterModelSupplier implements Supplier<Map<String, Object>> {
 
     private final Collection<String> parameters;
 
-    public ParameterDataModelSupplier(Collection<String> parameters) {
+    public ParameterModelSupplier(Collection<String> parameters) {
         this.parameters = requireNonNull(parameters);
     }
 
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/parameter/ParameterDataModelSupplierTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/parameter/ParameterModelSupplierTest.java
similarity index 91%
rename from 
freemarker-generator-base/src/test/java/org/apache/freemarker/generator/parameter/ParameterDataModelSupplierTest.java
rename to 
freemarker-generator-base/src/test/java/org/apache/freemarker/generator/parameter/ParameterModelSupplierTest.java
index 8eeedf8..73ce918 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/parameter/ParameterDataModelSupplierTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/parameter/ParameterModelSupplierTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.freemarker.generator.parameter;
 
-import 
org.apache.freemarker.generator.base.parameter.ParameterDataModelSupplier;
+import org.apache.freemarker.generator.base.parameter.ParameterModelSupplier;
 import org.junit.Test;
 
 import java.util.ArrayList;
@@ -25,7 +25,7 @@ import java.util.Map;
 
 import static org.junit.Assert.assertEquals;
 
-public class ParameterDataModelSupplierTest {
+public class ParameterModelSupplierTest {
 
     @Test
     public void shouldConvertMissingParametersToMap() {
@@ -68,9 +68,9 @@ public class ParameterDataModelSupplierTest {
         assertEquals("value2", toMap(map, "group2").get("name2"));
     }
 
-    private static ParameterDataModelSupplier supplier(String... values) {
+    private static ParameterModelSupplier supplier(String... values) {
         final ArrayList<String> parameters = new 
ArrayList<>(Arrays.asList(values));
-        return new ParameterDataModelSupplier(parameters);
+        return new ParameterModelSupplier(parameters);
     }
 
     @SuppressWarnings("unchecked")
diff --git 
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
 
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
index e3b17b4..51928a0 100644
--- 
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
+++ 
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
@@ -38,6 +38,7 @@ import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
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 79f6e0a..93dff34 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
@@ -21,8 +21,11 @@ import 
org.apache.freemarker.generator.base.datasource.DataSourcesSupplier;
 import org.apache.freemarker.generator.base.file.PropertiesClassPathSupplier;
 import org.apache.freemarker.generator.base.file.PropertiesFileSystemSupplier;
 import org.apache.freemarker.generator.base.file.PropertiesSupplier;
+import org.apache.freemarker.generator.base.parameter.ParameterModelSupplier;
 
+import java.util.List;
 import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
 /**
  * Convenience methods to create suppliers.
@@ -60,6 +63,14 @@ public class Suppliers {
         return new DataModelSupplier(settings.getDataModels());
     }
 
+    public static ParameterModelSupplier parameterSupplier(Settings settings) {
+        final List<String> parameters = 
settings.getParameters().entrySet().stream()
+                .map(e -> e.getKey() + "=" + e.getValue())
+                .collect(Collectors.toList());
+
+        return new ParameterModelSupplier(parameters);
+    }
+
     public static PropertiesSupplier propertiesSupplier(String fileName) {
         return new PropertiesSupplier(
                 new PropertiesFileSystemSupplier(fileName),
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 a89bc33..da83bb9 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
@@ -45,6 +45,7 @@ import static 
org.apache.freemarker.generator.base.FreeMarkerConstants.Model.DAT
 import static 
org.apache.freemarker.generator.cli.config.Suppliers.configurationSupplier;
 import static 
org.apache.freemarker.generator.cli.config.Suppliers.dataModelSupplier;
 import static 
org.apache.freemarker.generator.cli.config.Suppliers.dataSourcesSupplier;
+import static 
org.apache.freemarker.generator.cli.config.Suppliers.parameterSupplier;
 import static 
org.apache.freemarker.generator.cli.config.Suppliers.toolsSupplier;
 
 /**
@@ -58,21 +59,29 @@ public class FreeMarkerTask implements Callable<Integer> {
     private final Supplier<Map<String, Object>> toolsSupplier;
     private final Supplier<List<DataSource>> dataSourcesSupplier;
     private final Supplier<Map<String, Object>> dataModelsSupplier;
+    private final Supplier<Map<String, Object>> parameterModelSupplier;
     private final Supplier<Configuration> configurationSupplier;
 
     public FreeMarkerTask(Settings settings) {
-        this(settings, toolsSupplier(settings), dataSourcesSupplier(settings), 
dataModelSupplier(settings), configurationSupplier(settings));
+        this(settings,
+                toolsSupplier(settings),
+                dataSourcesSupplier(settings),
+                dataModelSupplier(settings),
+                parameterSupplier(settings),
+                configurationSupplier(settings));
     }
 
     public FreeMarkerTask(Settings settings,
                           Supplier<Map<String, Object>> toolsSupplier,
                           Supplier<List<DataSource>> dataSourcesSupplier,
                           Supplier<Map<String, Object>> dataModelsSupplier,
+                          Supplier<Map<String, Object>> parameterModelSupplier,
                           Supplier<Configuration> configurationSupplier) {
         this.settings = requireNonNull(settings);
         this.toolsSupplier = requireNonNull(toolsSupplier);
         this.dataSourcesSupplier = requireNonNull(dataSourcesSupplier);
         this.dataModelsSupplier = requireNonNull(dataModelsSupplier);
+        this.parameterModelSupplier = requireNonNull(parameterModelSupplier);
         this.configurationSupplier = requireNonNull(configurationSupplier);
     }
 
@@ -80,7 +89,7 @@ public class FreeMarkerTask implements Callable<Integer> {
     public Integer call() {
         final Template template = template(settings, configurationSupplier);
         try (Writer writer = settings.getWriter(); DataSources dataSources = 
dataSources(settings, dataSourcesSupplier)) {
-            final Map<String, Object> dataModel = dataModel(settings, 
dataSources, dataModelsSupplier, toolsSupplier);
+            final Map<String, Object> dataModel = dataModel(settings, 
dataSources, parameterModelSupplier, dataModelsSupplier, toolsSupplier);
             template.process(dataModel, writer);
             return SUCCESS;
         } catch (RuntimeException e) {
@@ -133,6 +142,7 @@ public class FreeMarkerTask implements Callable<Integer> {
     private static Map<String, Object> dataModel(
             Settings settings,
             DataSources dataSources,
+            Supplier<Map<String, Object>> parameterModelSupplier,
             Supplier<Map<String, Object>> dataModelsSupplier,
             Supplier<Map<String, Object>> tools) {
         final Map<String, Object> result = new HashMap<>();
@@ -144,9 +154,9 @@ public class FreeMarkerTask implements Callable<Integer> {
         if (settings.isEnvironmentExposed()) {
             // add all system & user-supplied properties as top-level entries
             result.putAll(System.getenv());
-            result.putAll(settings.getParameters());
         }
 
+        result.putAll(parameterModelSupplier.get());
         result.putAll(tools.get());
 
         return result;
diff --git 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
index 0dac268..46dc60b 100644
--- 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
+++ 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
@@ -28,7 +28,7 @@ public class ManualTest {
     // private static final String CMD = "-b ./src/test -l de_AT -DFOO=foo 
-DBAR=bar -t templates/info.ftl site/sample/csv/transactions.csv";
     // private static final String CMD = "-b ./src/test -DFOO=foo -PBAR=bar -l 
de -t templates/demo.ftl site/sample/csv/transactions.csv";
     // private static final String CMD = "-b ./src/test -DFOO=foo -PBAR=bar -t 
templates/demo.ftl site/sample/csv/transactions.csv";
-    // private static final String CMD = "-b ./src/test -Dcsv.out.format=TDF 
-t templates/csv/transform.ftl site/sample/csv/contract.csv";
+    private static final String CMD = "-b ./src/test -P csv.out.format=TDF -t 
templates/csv/transform.ftl site/sample/csv/contract.csv";
     // private static final String CMD = "-t templates/excel/csv/transform.ftl 
-l de_AT site/sample/excel/test.xlsx";
     // private static final String CMD = "-i 
${JsonPathTool.parse(DataSources.first).read('$.info.title')} 
site/sample/json/swagger-spec.json";
     // private static final String CMD = "-i 
${XmlTool.parse(DataSources.first)['recipients/person[1]/name']} 
site/sample/xml/recipients.xml";
@@ -48,7 +48,7 @@ public class ManualTest {
     // private static final String CMD = "-b ./src/test -t templates/demo.ftl 
-m env=./site/sample/properties/user_0001/user.properties";
     // private static final String CMD = "-b ./src/test -t templates/demo.ftl 
-m ./site/sample/properties/user_0001/user.properties";
     // private static final String CMD = "-b ./src/test --data-model 
post=https://jsonplaceholder.typicode.com/posts/2 -t templates/info.ftl";
-    private static final String CMD = "-b ./src/test -t templates/info.ftl 
google=https://www.google.com";;
+    // private static final String CMD = "-b ./src/test -t templates/info.ftl 
-P key:group=value";
 
 
     public static void main(String[] args) {

Reply via email to