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/05 08:06:38 UTC

[freemarker-generator] branch FREEMARKER-172 updated: FREEMARKER-172 [freemarker-generator] Improve documentation

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 1cd9642  FREEMARKER-172 [freemarker-generator] Improve documentation
1cd9642 is described below

commit 1cd9642271cc805d4b39ea122a50d38d1a60cb61
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Fri Feb 5 09:06:02 2021 +0100

    FREEMARKER-172 [freemarker-generator] Improve documentation
---
 .../freemarker/generator/base/datasource/DataSource.java       |  5 +++--
 .../freemarker/generator/base/datasource/DataSources.java      | 10 ++++++++--
 .../freemarker/generator/cli/model/GeneratorObjectWrapper.java |  5 ++++-
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
index 522f0f1..c030a19 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
@@ -238,7 +238,7 @@ public class DataSource implements Closeable, javax.activation.DataSource {
     }
 
     /**
-     * Gets the contents of an <code>InputStream</code> as a list of Strings,
+     * Get the content of an <code>InputStream</code> as a list of Strings,
      * one entry per line, using the specified character encoding.
      *
      * @return the list of Strings, never null
@@ -366,7 +366,8 @@ public class DataSource implements Closeable, javax.activation.DataSource {
 
     /**
      * If there is no content type we ask the underlying data source. E.g. for
-     * an URL data source this information is fetched from the remote server.
+     * an <code>URLDataSource</code> this information is fetched from the
+     * remote server.
      *
      * @return content type
      */
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 48bf0fc..b95f100 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
@@ -26,6 +26,7 @@ import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import static java.util.function.Function.identity;
@@ -76,7 +77,6 @@ public class DataSources implements Closeable {
         return dataSources.stream()
                 .map(DataSource::getGroup)
                 .filter(StringUtils::isNotEmpty)
-                .sorted()
                 .distinct()
                 .collect(Collectors.toList());
     }
@@ -100,8 +100,14 @@ public class DataSources implements Closeable {
 
     /**
      * Get a map representation of the underlying data sources.
+     * In <code>freemarker-cli</code> the map is also used to
+     * iterate over data source so we need to return a
+     * <code>LinkedHashMap</code>.
+     * <p>
+     * The implementation also throws as <code>IllegalStateException</code>
+     * when finding duplicate keys to avoid "losing" data sources.
      *
-     * @return map of data sources
+     * @return linked hasp map of data sources
      */
     public Map<String, DataSource> toMap() {
         return dataSources.stream().collect(Collectors.toMap(
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 393dcdd..921722c 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
@@ -23,6 +23,10 @@ import freemarker.template.TemplateModelException;
 import freemarker.template.Version;
 import org.apache.freemarker.generator.base.datasource.DataSources;
 
+/**
+ * Custom FreeMarker object wrapper to expose <code>DataSources</code>
+ * as <code>Map</code> in the FreeMarker data model.
+ */
 public class GeneratorObjectWrapper extends DefaultObjectWrapper {
 
     public GeneratorObjectWrapper(Version incompatibleImprovements) {
@@ -32,7 +36,6 @@ 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);
         }