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/03 22:14:26 UTC

[freemarker-generator] 06/06: FREEMARKER-172 [freemarker-generator] Start with refactoring

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 2608564e2319f3c85a62db4dffa1d079844bf094
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Wed Feb 3 23:10:01 2021 +0100

    FREEMARKER-172 [freemarker-generator] Start with refactoring
---
 .../datasource/loader/FileDataSourceLoader.java    |   2 --
 .../src/test/data/txt/utf16.txt                    | Bin 0 -> 362 bytes
 .../src/test/data/txt/utf8.txt                     |   6 +++++
 .../generator/datasource/DataSourceLoaderTest.java |  27 +++++++++++++++++++--
 .../datasource/DataSourcesSupplierTest.java        |  25 ++++++++++---------
 .../generator/datasource/DataSourcesTest.java      |   1 -
 .../generator/file/RecursiveFileSupplierTest.java  |   7 ++++--
 .../generator/uri/NamedUriStringParserTest.java    |   3 +++
 8 files changed, 52 insertions(+), 19 deletions(-)

diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java
index f76cb88..1ee8b66 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java
@@ -43,8 +43,6 @@ public class FileDataSourceLoader implements DataSourceLoader {
         final String group = namedUri.getGroupOrElse(FreeMarkerConstants.DEFAULT_GROUP);
         final Charset charset = namedUri.getCharsetOrElse(UTF_8);
         final File file = namedUri.getFile();
-        // TODO
-        // final String name = namedUri.getNameOrElse(UriUtils.toStringWithoutFragment(file.toURI()));
         final String name = namedUri.getNameOrElse(file.getName());
         return DataSourceFactory.fromFile(name, group, file, charset);
     }
diff --git a/freemarker-generator-base/src/test/data/txt/utf16.txt b/freemarker-generator-base/src/test/data/txt/utf16.txt
new file mode 100755
index 0000000..6dfd2e5
Binary files /dev/null and b/freemarker-generator-base/src/test/data/txt/utf16.txt differ
diff --git a/freemarker-generator-base/src/test/data/txt/utf8.txt b/freemarker-generator-base/src/test/data/txt/utf8.txt
new file mode 100755
index 0000000..25f1e5c
--- /dev/null
+++ b/freemarker-generator-base/src/test/data/txt/utf8.txt
@@ -0,0 +1,6 @@
+UTF-8 encoding
+=============================================================================
+première is first
+première is slightly different
+Кириллица is Cyrillic
+𐐀 am Deseret
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 14a1ed9..cbe9aa1 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,11 +20,13 @@ 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;
 
 import static java.lang.String.format;
+import static java.nio.charset.StandardCharsets.UTF_16;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static junit.framework.TestCase.assertFalse;
 import static org.apache.freemarker.generator.base.FreeMarkerConstants.DEFAULT_GROUP;
@@ -91,7 +93,19 @@ public class DataSourceLoaderTest {
     }
 
     @Test
-    // @Ignore
+    public void shouldLoadDataSourceFromComplexNameFileUri() {
+        try (DataSource dataSource = dataSourceLoader().load("source=pom.xml#charset=UTF-8&foo=bar")) {
+            assertEquals("pom.xml", dataSource.getFileName());
+            assertEquals("source", dataSource.getName());
+            assertEquals(UTF_8, dataSource.getCharset());
+            assertEquals(MIME_APPLICATION_XML, dataSource.getContentType());
+            assertEquals(ANY_FILE.toURI(), dataSource.getUri());
+            assertFalse(dataSource.getLines().isEmpty());
+        }
+    }
+
+    @Test
+    @Ignore
     public void shouldCreateDataSourceFromUrl() {
         try (DataSource dataSource = dataSourceLoader().load("https://jsonplaceholder.typicode.com/posts/2")) {
             assertEquals("https://jsonplaceholder.typicode.com/posts/2", dataSource.getName());
@@ -105,7 +119,7 @@ public class DataSourceLoaderTest {
     }
 
     @Test
-    // @Ignore
+    @Ignore
     public void shouldCreateDataSourceFromNamedURL() {
         try (DataSource dataSource = dataSourceLoader().load("content:www=https://www.google.com?foo=bar#contenttype=application/json")) {
             assertEquals("content", dataSource.getName());
@@ -152,6 +166,15 @@ public class DataSourceLoaderTest {
         }
     }
 
+    @Test
+    public void shouldLoadDataSourceWithCharset() {
+        final DataSource utf8DataSource = dataSourceLoader().load("./src/test/data/txt/utf8.txt", UTF_8);
+        final DataSource utf16DataSource = dataSourceLoader().load("./src/test/data/txt/utf16.txt", UTF_16);
+
+        // skip the first line before comparing
+        assertEquals(utf8DataSource.getLines().subList(1, 5), utf16DataSource.getLines().subList(1, 5));
+    }
+
     private DataSourceLoader dataSourceLoader() {
         return DataSourceLoaderFactory.create();
     }
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesSupplierTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesSupplierTest.java
index fddc597..70279fc 100644
--- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesSupplierTest.java
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesSupplierTest.java
@@ -64,12 +64,12 @@ public class DataSourcesSupplierTest {
 
     @Test
     public void shouldResolveDirectory() {
-        assertEquals(5, supplier(DATA_DIRECTORY, null, null).get().size());
-        assertEquals(5, supplier(DATA_DIRECTORY, "", null).get().size());
-        assertEquals(5, supplier(DATA_DIRECTORY, "*", null).get().size());
-        assertEquals(5, supplier(DATA_DIRECTORY, "*.*", null).get().size());
+        assertEquals(7, supplier(DATA_DIRECTORY, null, null).get().size());
+        assertEquals(7, supplier(DATA_DIRECTORY, "", null).get().size());
+        assertEquals(7, supplier(DATA_DIRECTORY, "*", null).get().size());
+        assertEquals(7, supplier(DATA_DIRECTORY, "*.*", null).get().size());
         assertEquals(2, supplier(DATA_DIRECTORY, "*.csv", null).get().size());
-        assertEquals(1, supplier(DATA_DIRECTORY, "*.t*", null).get().size());
+        assertEquals(3, supplier(DATA_DIRECTORY, "*.t*", null).get().size());
         assertEquals(0, supplier(DATA_DIRECTORY, "*.bin", null).get().size());
     }
 
@@ -77,12 +77,12 @@ public class DataSourcesSupplierTest {
     public void shouldResolveFilesAndDirectory() {
         final List<String> sources = Arrays.asList("pom.xml", "README.md", DATA_DIRECTORY);
 
-        assertEquals(7, supplier(sources, null, null).get().size());
-        assertEquals(7, supplier(sources, "", null).get().size());
-        assertEquals(7, supplier(sources, "*", null).get().size());
-        assertEquals(7, supplier(sources, "*.*", null).get().size());
+        assertEquals(9, supplier(sources, null, null).get().size());
+        assertEquals(9, supplier(sources, "", null).get().size());
+        assertEquals(9, supplier(sources, "*", null).get().size());
+        assertEquals(9, supplier(sources, "*.*", null).get().size());
         assertEquals(2, supplier(sources, "*.csv", null).get().size());
-        assertEquals(1, supplier(sources, "*.t*", null).get().size());
+        assertEquals(3, supplier(sources, "*.t*", null).get().size());
         assertEquals(1, supplier(sources, "*.xml", null).get().size());
         assertEquals(0, supplier(sources, "*.bin", null).get().size());
 
@@ -90,8 +90,8 @@ public class DataSourcesSupplierTest {
         assertEquals(0, supplier(sources, null, "*.*").get().size());
         assertEquals(0, supplier(sources, "*", "*").get().size());
 
-        assertEquals(6, supplier(sources, "*", "*.md").get().size());
-        assertEquals(4, supplier(sources, "*", "file*.*").get().size());
+        assertEquals(8, supplier(sources, "*", "*.md").get().size());
+        assertEquals(6, supplier(sources, "*", "file*.*").get().size());
     }
 
     @Test
@@ -142,4 +142,5 @@ public class DataSourcesSupplierTest {
     private static DataSourcesSupplier supplier(List<String> files, String include, String exclude) {
         return new DataSourcesSupplier(files, include, exclude, Charset.defaultCharset());
     }
+
 }
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 1a9fc6a..2d6154e 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
@@ -76,7 +76,6 @@ public class DataSourcesTest {
             assertEquals(3, dataSources.find(GROUP_PART, "d*").size());
             assertEquals(3, dataSources.find(GROUP_PART, "d??????").size());
         }
-
     }
 
     @Test
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileSupplierTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileSupplierTest.java
index 06d5d17..5cc871b 100644
--- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileSupplierTest.java
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileSupplierTest.java
@@ -35,7 +35,7 @@ public class RecursiveFileSupplierTest {
 
     @Test
     public void shouldResolveAllFilesOfDirectory() {
-        assertEquals(5, fileSupplier(ANY_DIRECTORY, null, null).get().size());
+        assertEquals(7, fileSupplier(ANY_DIRECTORY, null, null).get().size());
         assertTrue(fileSupplier(ANY_DIRECTORY, UNKNOWN_FILE_NAME, null).get().isEmpty());
     }
 
@@ -77,10 +77,12 @@ public class RecursiveFileSupplierTest {
     public void shouldExcludeFiles() {
         final List<File> files = fileSupplier(ANY_DIRECTORY, null, "*.csv").get();
 
-        assertEquals(3, files.size());
+        assertEquals(5, files.size());
         assertEquals("nginx.env", files.get(0).getName());
         assertEquals("test.properties", files.get(1).getName());
         assertEquals("file_01.txt", files.get(2).getName());
+        assertEquals("utf16.txt", files.get(3).getName());
+        assertEquals("utf8.txt", files.get(4).getName());
     }
 
     @Test
@@ -105,4 +107,5 @@ public class RecursiveFileSupplierTest {
     private static RecursiveFileSupplier fileSupplier(List<String> sources, String include, String exclude) {
         return new RecursiveFileSupplier(sources, singletonList(include), singletonList(exclude));
     }
+
 }
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriStringParserTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriStringParserTest.java
index 7954f50..c114525 100644
--- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriStringParserTest.java
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriStringParserTest.java
@@ -20,6 +20,7 @@ import org.apache.freemarker.generator.base.uri.NamedUri;
 import org.apache.freemarker.generator.base.uri.NamedUriStringParser;
 import org.junit.Test;
 
+import static java.nio.charset.StandardCharsets.UTF_16;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
@@ -184,6 +185,7 @@ public class NamedUriStringParserTest {
         assertNull(namedURI.getGroup());
         assertEquals("file:///users.csv#charset=UTF-16&mimeType=text/csv", namedURI.getUri().toString());
         assertEquals(2, namedURI.getParameters().size());
+        assertEquals(UTF_16, namedURI.getCharset());
         assertEquals("UTF-16", namedURI.getParameters().get("charset"));
         assertEquals("text/csv", namedURI.getParameters().get("mimeType"));
     }
@@ -260,4 +262,5 @@ public class NamedUriStringParserTest {
     private static NamedUri parse(String value) {
         return NamedUriStringParser.parse(value);
     }
+
 }