You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by sg...@apache.org on 2020/04/15 22:26:23 UTC
[freemarker-generator] 02/08: FREEMARKER-141 freemarker-cli: Expose
user-supplied parameters in the data model
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 <si...@gmail.com>
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) {