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

commit c6cae49a929a632ff6045c517683b4fbd3646903
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Wed Feb 3 22:41:42 2021 +0100

    FREEMARKER-172 [freemarker-generator] Start with refactoring
---
 .../generator/base/FreeMarkerConstants.java        |  6 ++-
 .../generator/base/datasource/DataSource.java      |  7 +++-
 .../base/datasource/DataSourceFactory.java         |  2 +-
 .../generator/base/tools/ToolsFactory.java         |  4 +-
 .../freemarker/generator/base/util/ListUtils.java  | 20 ----------
 .../freemarker/generator/base/util/MapBuilder.java |  3 ++
 .../generator/base/util/PropertiesTransformer.java | 11 ------
 .../freemarker/generator/base/util/UriUtils.java   | 19 ----------
 .../datasource/DataSourceFactoryTest.java          |  6 ---
 .../generator/datasource/DataSourceLoaderTest.java | 43 ++++++++++++++++------
 .../generator/datasource/DataSourceTest.java       |  6 +--
 .../generator/datasource/DataSourcesTest.java      | 20 ++++------
 12 files changed, 61 insertions(+), 86 deletions(-)

diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
index 86a69ab..c5e5dff 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
@@ -61,6 +61,7 @@ public class FreeMarkerConstants {
 
         /** Prefix to extract FreeMarker configuration settings from 
'freemarker-generator.properties' */
         public static final String SETTING_PREFIX = 
"freemarker.configuration.setting.";
+
     }
 
     public static class Location {
@@ -68,13 +69,13 @@ public class FreeMarkerConstants {
         private Location() {
         }
 
-        public static final String BYTES = "bytes";
         public static final String ENVIRONMENT = "env";
         public static final String INTERACTIVE = "interactive";
         public static final String INPUTSTREAM = "inputstream";
         public static final String STDIN = "stdin";
         public static final String SYSTEM = "system";
         public static final String STRING = "string";
+
     }
 
     public static class Model {
@@ -91,6 +92,7 @@ public class FreeMarkerConstants {
         public static final String FREEMARKER_TEMPLATE_DIRECTORIES = 
"freemarker.template.directories";
         public static final String FREEMARKER_USER_SYSTEM_PROPERTIES = 
"freemarker.user.system.properties";
         public static final String FREEMARKER_USER_PARAMETERS = 
"freemarker.user.parameters";
+
     }
 
     public static class SystemProperties {
@@ -103,5 +105,7 @@ public class FreeMarkerConstants {
 
         /** Home directory of the user */
         public static final String USER_HOME = "user.home";
+
     }
+
 }
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 e9c735d..9634ecb 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
@@ -141,7 +141,7 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
     }
 
     public String getFileName() {
-        return FilenameUtils.getName(name);
+        return isFileDataSource() ? 
FilenameUtils.getName(dataSource.getName()) : "";
     }
 
     public String getBaseName() {
@@ -359,4 +359,9 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
             return StringUtils.firstNonEmpty(dataSource.getContentType(), 
MIME_APPLICATION_OCTET_STREAM);
         }
     }
+
+    private boolean isFileDataSource() {
+        return dataSource instanceof FileDataSource;
+    }
+
 }
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceFactory.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceFactory.java
index 47e5d46..8a888d9 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceFactory.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceFactory.java
@@ -81,7 +81,7 @@ public abstract class DataSourceFactory {
     // == File ==============================================================
 
     public static DataSource fromFile(File file, Charset charset) {
-        return fromFile(UriUtils.toStringWithoutFragment(file.toURI()), 
DEFAULT_GROUP, file, charset);
+        return fromFile(file.getName(), DEFAULT_GROUP, file, charset);
     }
 
     public static DataSource fromFile(String name, String group, File file, 
Charset charset) {
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/tools/ToolsFactory.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/tools/ToolsFactory.java
index 00a202b..ca65533 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/tools/ToolsFactory.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/tools/ToolsFactory.java
@@ -36,7 +36,8 @@ public class ToolsFactory {
         }
 
         try {
-            return forName(clazzName) != null;
+            forName(clazzName);
+            return true;
         } catch (NoClassDefFoundError | ClassNotFoundException e) {
             return false;
         }
@@ -95,4 +96,5 @@ public class ToolsFactory {
         // Fall back to the defining class loader of the FreeMarker classes
         return Class.forName(className);
     }
+
 }
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/ListUtils.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/ListUtils.java
index 613b3e1..5ea20b4 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/ListUtils.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/ListUtils.java
@@ -26,10 +26,6 @@ public class ListUtils {
         return list == null || list.isEmpty();
     }
 
-    public static <T> boolean isNotEmpty(final List<T> list) {
-        return !isNullOrEmpty(list);
-    }
-
     /**
      * Transposes the given tabular data, swapping rows with columns.
      *
@@ -68,20 +64,4 @@ public class ListUtils {
                 .orElse(null);
     }
 
-    /**
-     * Copy an array to another array while casting to <code>R</code>.
-     *
-     * @param array array to copy
-     * @param <T>   the source type of the array
-     * @param <R>   the target type of the array
-     * @return copied array
-     */
-    @SuppressWarnings("unchecked")
-    public static <T, R> List<R> copy(final List<T> array) {
-        final List<R> result = new ArrayList<>();
-        for (int i = 0; i < array.size(); i++) {
-            result.set(i, (R) array.get(i));
-        }
-        return result;
-    }
 }
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/MapBuilder.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/MapBuilder.java
index 561c13b..67bcef3 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/MapBuilder.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/MapBuilder.java
@@ -45,9 +45,12 @@ public class MapBuilder {
                 case 1:
                     map.put(currKey, value);
                     break;
+                default:
+                    throw new RuntimeException("That should never happen");
             }
         }
 
         return map;
     }
+
 }
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesTransformer.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesTransformer.java
index a863b8d..aa5210e 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesTransformer.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesTransformer.java
@@ -52,15 +52,4 @@ public class PropertiesTransformer {
         return result;
     }
 
-    /**
-     * Copy a entries in a new <code>java.util.Properties</code> instance.
-     *
-     * @param properties the properties
-     * @return properties
-     */
-    public static Properties copy(Properties properties) {
-        final Properties result = new Properties();
-        properties.forEach((key, value) -> result.setProperty((String) key, 
(String) value));
-        return result;
-    }
 }
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/UriUtils.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/UriUtils.java
index 8a6d7b9..c80e36f 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/UriUtils.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/UriUtils.java
@@ -21,7 +21,6 @@ import java.net.URISyntaxException;
 import java.net.URL;
 
 import static org.apache.commons.io.FilenameUtils.separatorsToUnix;
-import static org.apache.freemarker.generator.base.util.StringUtils.isNotEmpty;
 
 public class UriUtils {
 
@@ -53,24 +52,6 @@ public class UriUtils {
         return index > 0 ? str.substring(0, index) : str;
     }
 
-    public static boolean isUri(String str) {
-        return isNotEmpty(str) && str.contains("://");
-    }
-
-    public static boolean isHttpUri(URI uri) {
-        if (uri == null) {
-            return false;
-        }
-        return "http".equalsIgnoreCase(uri.getScheme()) || 
"https".equalsIgnoreCase(uri.getScheme());
-    }
-
-    public static boolean isFileUri(URI uri) {
-        if (uri == null) {
-            return false;
-        }
-        return "file".equalsIgnoreCase(uri.getScheme());
-    }
-
     public static boolean isEnvUri(URI uri) {
         if (uri == null) {
             return false;
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceFactoryTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceFactoryTest.java
index 85dc86c..24714ef 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceFactoryTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceFactoryTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.freemarker.generator.datasource;
 
-import org.apache.commons.io.FilenameUtils;
 import org.apache.freemarker.generator.base.FreeMarkerConstants.Location;
 import org.apache.freemarker.generator.base.datasource.DataSource;
 import org.apache.freemarker.generator.base.datasource.DataSourceFactory;
@@ -32,7 +31,6 @@ import java.net.URI;
 import java.net.URL;
 import java.nio.charset.Charset;
 
-import static java.lang.String.format;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static junit.framework.TestCase.assertFalse;
 import static junit.framework.TestCase.assertTrue;
@@ -41,14 +39,10 @@ import static org.junit.Assert.assertEquals;
 
 public class DataSourceFactoryTest {
 
-    private static final String PWD = FilenameUtils.separatorsToUnix(new 
File("").getAbsolutePath());
     private static final String ANY_TEXT = "Hello World";
     private static final String ANY_FILE_NAME = "pom.xml";
-    private static final String ANY_FILE_URI = format("file:///%s/pom.xml", 
PWD);
     private static final Charset ANY_CHAR_SET = UTF_8;
     private static final File ANY_FILE = new File(ANY_FILE_NAME);
-    private static final String ANY_ENV_VARIABLE = "HOME";
-    private static final String ANY_NAMED_URL_STRING = 
"content:www=https://www.google.com?foo=bar#contenttype=application/json";;
 
     @Test
     public void shouldCreateDataSourceFromFile() {
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java
index d8ed10f..14a1ed9 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java
@@ -20,7 +20,6 @@ import org.apache.commons.io.FilenameUtils;
 import org.apache.freemarker.generator.base.datasource.DataSource;
 import org.apache.freemarker.generator.base.datasource.DataSourceLoader;
 import org.apache.freemarker.generator.base.datasource.DataSourceLoaderFactory;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import java.io.File;
@@ -28,6 +27,7 @@ import java.io.File;
 import static java.lang.String.format;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static junit.framework.TestCase.assertFalse;
+import static 
org.apache.freemarker.generator.base.FreeMarkerConstants.DEFAULT_GROUP;
 import static 
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_APPLICATION_XML;
 import static org.junit.Assert.assertEquals;
 
@@ -35,16 +35,28 @@ public class DataSourceLoaderTest {
 
     private static final String PWD = FilenameUtils.separatorsToUnix(new 
File("").getAbsolutePath());
     private static final String ANY_FILE_NAME = "pom.xml";
+    private static final String ANY_ABSOLUTE_FILE_NAME = format("%s/pom.xml", 
PWD);
     private static final String ANY_FILE_URI = format("file:///%s/pom.xml", 
PWD);
-    private static final String ANY_HTTP_URL = 
"https://jsonplaceholder.typicode.com/posts/2";;
     private static final File ANY_FILE = new File(ANY_FILE_NAME);
-    private static final String ANY_NAMED_URL_STRING = 
"content:www=https://www.google.com?foo=bar#contenttype=application/json";;
 
     @Test
-    public void shouldLoadDataSourceFromFile() {
+    public void shouldLoadDataSourceFromFileName() {
         try (DataSource dataSource = dataSourceLoader().load(ANY_FILE_NAME)) {
-            // @TODO Clearly define behaviour
-            // assertEquals(ANY_FILE_NAME, dataSource.getName());
+            assertEquals(ANY_FILE_NAME, dataSource.getName());
+            assertEquals(DEFAULT_GROUP, dataSource.getGroup());
+            assertEquals(ANY_FILE_NAME, dataSource.getFileName());
+            assertEquals(UTF_8, dataSource.getCharset());
+            assertEquals(MIME_APPLICATION_XML, dataSource.getContentType());
+            assertEquals(ANY_FILE.toURI(), dataSource.getUri());
+            assertFalse(dataSource.getLines().isEmpty());
+        }
+    }
+
+    @Test
+    public void shouldLoadDataSourceFromAbsoluteFileName() {
+        try (DataSource dataSource = 
dataSourceLoader().load(ANY_ABSOLUTE_FILE_NAME)) {
+            assertEquals(ANY_FILE_NAME, dataSource.getName());
+            assertEquals(DEFAULT_GROUP, dataSource.getGroup());
             assertEquals(ANY_FILE_NAME, dataSource.getFileName());
             assertEquals(UTF_8, dataSource.getCharset());
             assertEquals(MIME_APPLICATION_XML, dataSource.getContentType());
@@ -56,6 +68,8 @@ public class DataSourceLoaderTest {
     @Test
     public void shouldLoadDataSourceFromFileUri() {
         try (DataSource dataSource = dataSourceLoader().load(ANY_FILE_URI)) {
+            assertEquals(ANY_FILE_NAME, dataSource.getName());
+            assertEquals(DEFAULT_GROUP, dataSource.getGroup());
             assertEquals(ANY_FILE_NAME, dataSource.getFileName());
             assertEquals(UTF_8, dataSource.getCharset());
             assertEquals(MIME_APPLICATION_XML, dataSource.getContentType());
@@ -67,7 +81,7 @@ public class DataSourceLoaderTest {
     @Test
     public void shouldLoadDataSourceFromSimpleNameFileUri() {
         try (DataSource dataSource = 
dataSourceLoader().load("source=pom.xml")) {
-            // assertEquals("pom.xml", dataSource.getFileName());
+            assertEquals("pom.xml", dataSource.getFileName());
             assertEquals("source", dataSource.getName());
             assertEquals(UTF_8, dataSource.getCharset());
             assertEquals(MIME_APPLICATION_XML, dataSource.getContentType());
@@ -77,20 +91,27 @@ public class DataSourceLoaderTest {
     }
 
     @Test
-    @Ignore
+    // @Ignore
     public void shouldCreateDataSourceFromUrl() {
-        try (DataSource dataSource = dataSourceLoader().load(ANY_HTTP_URL)) {
+        try (DataSource dataSource = 
dataSourceLoader().load("https://jsonplaceholder.typicode.com/posts/2";)) {
             assertEquals("https://jsonplaceholder.typicode.com/posts/2";, 
dataSource.getName());
+            assertEquals("", dataSource.getFileName());
+            assertEquals("", dataSource.getBaseName());
+            assertEquals("", dataSource.getExtension());
             assertEquals("application/json; charset=utf-8", 
dataSource.getContentType());
             assertEquals(UTF_8, dataSource.getCharset());
+            assertEquals("https://jsonplaceholder.typicode.com/posts/2";, 
dataSource.getUri().toString());
         }
     }
 
     @Test
-    @Ignore
+    // @Ignore
     public void shouldCreateDataSourceFromNamedURL() {
-        try (DataSource dataSource = 
dataSourceLoader().load(ANY_NAMED_URL_STRING)) {
+        try (DataSource dataSource = 
dataSourceLoader().load("content:www=https://www.google.com?foo=bar#contenttype=application/json";))
 {
             assertEquals("content", dataSource.getName());
+            assertEquals("", dataSource.getFileName());
+            assertEquals("", dataSource.getBaseName());
+            assertEquals("", dataSource.getExtension());
             assertEquals("www", dataSource.getGroup());
             assertEquals("text/html; charset=ISO-8859-1", 
dataSource.getContentType());
             assertEquals("ISO-8859-1", dataSource.getCharset().toString());
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 3f26014..05c2382 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
@@ -49,7 +49,7 @@ public class DataSourceTest {
         try (DataSource dataSource = DataSourceFactory.fromString("stdin", 
ANY_GROUP, ANY_TEXT, Mimetypes.MIME_TEXT_PLAIN)) {
             assertEquals("stdin", dataSource.getName());
             assertEquals(ANY_GROUP, dataSource.getGroup());
-            assertEquals("stdin", dataSource.getBaseName());
+            assertEquals("", dataSource.getBaseName());
             assertEquals("", dataSource.getExtension());
             
assertTrue(dataSource.getUri().toString().startsWith("string:///"));
             assertEquals(UTF_8, dataSource.getCharset());
@@ -86,8 +86,8 @@ public class DataSourceTest {
         try (DataSource dataSource = 
DataSourceFactory.fromUrl("www.google.com", DEFAULT_GROUP, 
toUrl("https://www.google.com/?foo=bar";), null, null)) {
             assertEquals("www.google.com", dataSource.getName());
             assertEquals(DEFAULT_GROUP, dataSource.getGroup());
-            assertEquals("www.google", dataSource.getBaseName());
-            assertEquals("com", dataSource.getExtension());
+            assertEquals("", dataSource.getBaseName());
+            assertEquals("", dataSource.getExtension());
             assertEquals("https://www.google.com/?foo=bar";, 
dataSource.getUri().toString());
             assertEquals(MIME_TEXT_HTML, dataSource.getMimeType());
             assertEquals("ISO-8859-1", dataSource.getCharset().name());
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java
index a8659dc..1a9fc6a 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java
@@ -54,7 +54,6 @@ public class DataSourcesTest {
 
             assertEquals(2, dataSources.find("*.*").size());
             assertEquals(1, dataSources.find("*." + 
ANY_FILE_EXTENSION).size());
-            assertEquals(1, dataSources.find("*/*." + 
ANY_FILE_EXTENSION).size());
             assertEquals(1, dataSources.find("*.???").size());
             assertEquals(1, dataSources.find("*om*").size());
             assertEquals(1, dataSources.find("*o*.xml").size());
@@ -82,16 +81,16 @@ public class DataSourcesTest {
 
     @Test
     public void shouldGetDataSource() {
-        assertNotNull(dataSources().get("*/" + ANY_FILE_NAME));
+        assertNotNull(dataSources().get(ANY_FILE_NAME));
     }
 
     @Test
     public void shouldGetAllDataSource() {
         try (DataSources dataSources = dataSources()) {
 
-            assertEquals("unknown", dataSources.get(0).getFileName());
-            assertEquals("pom.xml", dataSources.get(1).getFileName());
-            assertEquals("server.invalid?foo=bar", 
dataSources.get(2).getFileName());
+            assertEquals("unknown", dataSources.get(0).getName());
+            assertEquals("pom.xml", dataSources.get(1).getName());
+            assertEquals("server.invalid?foo=bar", 
dataSources.get(2).getName());
             assertEquals(3, dataSources.toList().size());
             assertEquals(3, dataSources.toMap().size());
             assertEquals(3, dataSources.size());
@@ -100,13 +99,10 @@ public class DataSourcesTest {
     }
 
     @Test
-    public void shouldGetParts() {
-        assertEquals(3, dataSources().getMetadata("name").size());
-    }
-
-    @Test
-    public void shouldGetFileNamePart() {
-        assertEquals(asList("unknown", "pom.xml", "server.invalid?foo=bar"), 
dataSources().getMetadata("fileName"));
+    public void shouldGetMetadataParts() {
+        assertEquals(asList("", "pom.xml", ""), 
dataSources().getMetadata("fileName"));
+        assertEquals(asList("", "xml", ""), 
dataSources().getMetadata("extension"));
+        assertEquals(asList("unknown", "pom.xml", "server.invalid?foo=bar"), 
dataSources().getMetadata("name"));
     }
 
     @Test

Reply via email to