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 <[email protected]>
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 {