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 2021/02/04 05:59:17 UTC

[freemarker-generator] branch FREEMARKER-172 updated: FREEMARKER-172 [freemarker-generator] Throw an IllegalStateException when encountering duplicate names in "DataSources"

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

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


The following commit(s) were added to refs/heads/FREEMARKER-172 by this push:
     new 2c790f7  FREEMARKER-172 [freemarker-generator] Throw an IllegalStateException when encountering duplicate names in "DataSources"
2c790f7 is described below

commit 2c790f732a9ca473d3b23686bda914847ca64ea3
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Thu Feb 4 06:58:43 2021 +0100

    FREEMARKER-172 [freemarker-generator] Throw an IllegalStateException when encountering duplicate names in "DataSources"
---
 .../apache/freemarker/generator/base/datasource/DataSources.java   | 7 +++++--
 .../freemarker/generator/cli/model/GeneratorObjectWrapper.java     | 1 +
 .../test/java/org/apache/freemarker/generator/cli/ManualTest.java  | 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java
index 5af23bf..48bf0fc 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java
@@ -104,9 +104,12 @@ public class DataSources implements Closeable {
      * @return map of data sources
      */
     public Map<String, DataSource> toMap() {
-        return dataSources.stream().collect(Collectors.toMap(DataSource::getName,
+        return dataSources.stream().collect(Collectors.toMap(
+                DataSource::getName,
                 identity(),
-                (v1, v2) -> v1,
+                (ds1, ds2) -> {
+                    throw new IllegalStateException("Duplicate key detected when generating map: " + ds1 + ", " + ds2);
+                },
                 LinkedHashMap::new));
     }
 
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/GeneratorObjectWrapper.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/GeneratorObjectWrapper.java
index 289611f..393dcdd 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/GeneratorObjectWrapper.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/GeneratorObjectWrapper.java
@@ -32,6 +32,7 @@ public class GeneratorObjectWrapper extends DefaultObjectWrapper {
     @Override
     protected TemplateModel handleUnknownType(Object obj) throws TemplateModelException {
         if (obj instanceof DataSources) {
+            // Expose "DataSources" as map in the FreeMarker data model
             final DataSources dataSources = (DataSources) obj;
             return DefaultMapAdapter.adapt((dataSources).toMap(), this);
         }
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 7d12754..95ab41c 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
@@ -24,7 +24,7 @@ import java.io.IOException;
 public class ManualTest extends AbstractMainTest {
 
     // private static final String CMD = "-V";
-    private static final String CMD = "-t src/app/examples/templates/demo.ftl src/test/data";
+    private static final String CMD = "-t src/app/templates/freemarker-generator/info.ftl -s :csv=src/app/examples/data/csv -s :json=src/app/examples/data/json";
 
     @Override
     public String execute(String commandLine) throws IOException {