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

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


The following commit(s) were added to refs/heads/FREEMARKER-188 by this push:
     new 97b5f90  FREEMARKER-188 Cleanup code
97b5f90 is described below

commit 97b5f905fe0cd8dd82c0cf1a91079c1f7bb2c501
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Fri Sep 10 22:15:24 2021 +0200

    FREEMARKER-188 Cleanup code
---
 .../generator/base/datasource/DataSource.java      | 28 +++++++++++++++------
 .../generator/base/util/StringUtils.java           |  8 ++++++
 .../generator/datasource/DataSourceTest.java       |  5 ++--
 .../app/templates/freemarker-generator/info.ftl    | 29 +++++++++++-----------
 4 files changed, 47 insertions(+), 23 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 61c014c..779e955 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
@@ -60,25 +60,28 @@ import static 
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_APPLICATI
 public class DataSource implements Closeable, javax.activation.DataSource {
 
     public static final String METADATA_BASE_NAME = "baseName";
+    public static final String METADATA_CHARSET = "charset";
     public static final String METADATA_EXTENSION = "extension";
     public static final String METADATA_FILE_NAME = "fileName";
     public static final String METADATA_FILE_PATH = "filePath";
-    public static final String METADATA_RELATIVE_FILE_PATH = 
"relativeFilePath";
     public static final String METADATA_GROUP = "group";
+    public static final String METADATA_MIME_TYPE = "mimeType";
     public static final String METADATA_NAME = "name";
+    public static final String METADATA_RELATIVE_FILE_PATH = 
"relativeFilePath";
     public static final String METADATA_URI = "uri";
-    public static final String METADATA_MIME_TYPE = "mimeType";
 
+    /** List of metadata keys */
     public static final List<String> METADATA_KEYS = Arrays.asList(
             METADATA_BASE_NAME,
+            METADATA_CHARSET,
             METADATA_EXTENSION,
             METADATA_FILE_NAME,
             METADATA_FILE_PATH,
-            METADATA_RELATIVE_FILE_PATH,
             METADATA_GROUP,
+            METADATA_MIME_TYPE,
             METADATA_NAME,
-            METADATA_URI,
-            METADATA_MIME_TYPE
+            METADATA_RELATIVE_FILE_PATH,
+            METADATA_URI
     );
 
     /** Human-readable name of the data source */
@@ -194,6 +197,16 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
     }
 
     /**
+     * Get the path from the underlying "FileDataSource". All
+     * other data sources will return an empty string.
+     *
+     * @return file name or empty string
+     */
+    public String getFilePath() {
+        return isFileDataSource() ? 
FilenameUtils.getFullPathNoEndSeparator(uri.getPath()) : "";
+    }
+
+    /**
      * Get the base name from the underlying "FileDataSource". All
      * other data sources will return an empty string.
      *
@@ -363,12 +376,14 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
         switch (key) {
             case METADATA_BASE_NAME:
                 return getBaseName();
+            case METADATA_CHARSET:
+                return getCharset().name();
             case METADATA_EXTENSION:
                 return getExtension();
             case METADATA_FILE_NAME:
                 return getFileName();
             case METADATA_FILE_PATH:
-                return FilenameUtils.getFullPathNoEndSeparator(uri.getPath());
+                return getFilePath();
             case METADATA_RELATIVE_FILE_PATH:
                 return getRelativeFilePath();
             case METADATA_GROUP:
@@ -457,7 +472,6 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
         return dataSource instanceof ByteArrayDataSource;
     }
 
-
     public static final class DataSourceBuilder {
         private String name;
         private String group;
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
index c3eabf1..c41fefa 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
@@ -30,6 +30,10 @@ public class StringUtils {
         return value != null && value.trim().isEmpty() ? null : value;
     }
 
+    public static String nullToEmpty(String value) {
+        return isEmpty(value) ? "" : value;
+    }
+
     public static String firstNonEmpty(final String... values) {
         if (values != null) {
             for (final String value : values) {
@@ -41,6 +45,10 @@ public class StringUtils {
         return null;
     }
 
+    public static String trim(String value) {
+        return value != null ? value.trim() : null;
+    }
+
     public static int count(final String s, final char c) {
         final char[] chars = s.toCharArray();
         int count = 0;
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceTest.java
index d906e48..cb7b252 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceTest.java
@@ -131,17 +131,18 @@ public class DataSourceTest {
         try (DataSource dataSource = stringDataSource()) {
             final Map<String, String> metadata = dataSource.getMetadata();
 
-            assertEquals(9, metadata.size());
+            assertEquals(10, metadata.size());
             assertEquals("", metadata.get("baseName"));
             assertEquals("", metadata.get("extension"));
             assertEquals("", metadata.get("fileName"));
-            assertEquals("/", metadata.get("filePath"));
+            assertEquals("", metadata.get("filePath"));
             assertEquals("", metadata.get("relativeFilePath"));
 
             assertEquals("default", metadata.get("group"));
             assertEquals("stdin", metadata.get("name"));
             assertTrue(metadata.get("uri").startsWith("string://"));
             assertEquals("text/plain", metadata.get("mimeType"));
+            assertEquals("UTF-8", metadata.get("charset"));
         }
     }
 
diff --git 
a/freemarker-generator-cli/src/app/templates/freemarker-generator/info.ftl 
b/freemarker-generator-cli/src/app/templates/freemarker-generator/info.ftl
index 8208074..05eff21 100644
--- a/freemarker-generator-cli/src/app/templates/freemarker-generator/info.ftl
+++ b/freemarker-generator-cli/src/app/templates/freemarker-generator/info.ftl
@@ -50,21 +50,22 @@ FreeMarker Generator Data Model
 FreeMarker Generator Data Sources
 ==============================================================================
 <#if dataSources?has_content>
-<#list dataSources?values as ds>
+<#list dataSources?values as dataSource>
 
-DataSource #${ds?counter}
+DataSource #${dataSource?counter}
 ------------------------------------------------------------------------------
-name=${ds.name}
-group=${ds.group}
-contentType=${ds.contentType}
-fileName=${ds.fileName}
-baseName=${ds.baseName}
-extension=${ds.extension}
-relativeFilePath=${ds.relativeFilePath}
-charset=${ds.charset}
-mimeType=${ds.mimeType}
-uri=${ds.uri}
-length=${ds.length} Bytes
+name                  : ${dataSource.name}
+group                 : ${dataSource.group}
+contentType           : ${dataSource.contentType}
+fileName              : ${dataSource.fileName}
+baseName              : ${dataSource.baseName}
+extension             : ${dataSource.extension}
+relativeFilePath      : ${dataSource.relativeFilePath}
+charset               : ${dataSource.charset}
+mimeType              : ${dataSource.mimeType}
+uri                   : ${dataSource.uri}
+length                : ${dataSource.length} bytes
+metadata              : ${dataSource.metadata?size} entries
 </#list>
 <#else>
 
@@ -90,5 +91,5 @@ FreeMarker Generator Tools
 ==============================================================================
 
 <#list tools?keys?sort as name>
-- ${name?right_pad(20)} : ${tools[name]}
+- ${name?right_pad(19)} : ${tools[name]}
 </#list>

Reply via email to