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
