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/02/29 00:06:12 UTC

[freemarker-generator] 04/06: FREEMARKER-135 Support user-supplied names for datasources

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

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

commit 57dc39c4d7edfcf9c214292ee59117117e8e9195
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Sat Feb 29 00:13:00 2020 +0100

    FREEMARKER-135 Support user-supplied names for datasources
---
 .../freemarker/generator/base/datasource/Datasource.java      | 11 +++++++++++
 freemarker-generator-cli/templates/info.ftl                   |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)

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 5de9cae..c3c45b8 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
@@ -59,6 +59,9 @@ public class Datasource implements Closeable {
     /** Collect all closables handed out to the caller to be closed when the datasource is closed itself */
     private final CloseableReaper closables;
 
+    /** Cached content type - UrlDataSource actually opens a connection so we should cache the result */
+    private String contentType = null;
+
     public Datasource(String name, DataSource dataSource, String location, Charset charset) {
         this.name = requireNonNull(name);
         this.dataSource = requireNonNull(dataSource);
@@ -83,6 +86,14 @@ public class Datasource implements Closeable {
         return charset;
     }
 
+    public synchronized String getContentType() {
+        if (contentType == null) {
+            contentType = dataSource.getContentType();
+        }
+
+        return contentType;
+    }
+
     public String getLocation() {
         return location;
     }
diff --git a/freemarker-generator-cli/templates/info.ftl b/freemarker-generator-cli/templates/info.ftl
index 154416e..2000d4e 100644
--- a/freemarker-generator-cli/templates/info.ftl
+++ b/freemarker-generator-cli/templates/info.ftl
@@ -42,7 +42,7 @@ FreeMarker CLI Tools
 FreeMarker CLI Datasources
 ---------------------------------------------------------------------------
 <#list Datasources.list as datasource>
-[${datasource?counter}] ${datasource.name}, ${datasource.location}, ${datasource.charset}, ${datasource.length} Bytes
+[${datasource?counter}] ${datasource.name}, ${datasource.location}, ${datasource.charset}, ${datasource.contentType}, ${datasource.length} Bytes
 </#list>
 
 User Supplied Parameters