This is an automated email from the ASF dual-hosted git repository. sgoeschl pushed a commit to branch FREEMARKER-173 in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
commit b0fdea46b54e6722dbad606f99903a0bf4e9c946 Author: Siegfried Goeschl <[email protected]> AuthorDate: Sun Feb 7 18:56:59 2021 +0100 FREEMARKER-173 [freemarker-generator] Remove DataSource#load(source,charset) --- .../generator/base/datasource/DataSourceLoader.java | 15 ++------------- .../generator/base/datasource/DataSourcesSupplier.java | 2 +- .../base/datasource/loader/DefaultDataSourceLoader.java | 7 ------- .../datasource/loader/EnvironmentDataSourceLoader.java | 8 -------- .../base/datasource/loader/FileDataSourceLoader.java | 11 ----------- .../base/datasource/loader/HttpDataSourceLoader.java | 6 ------ .../apache/freemarker/generator/base/uri/NamedUri.java | 8 ++++---- .../generator/datasource/DataSourceLoaderTest.java | 14 ++++++++------ .../template/TemplateTransformationsBuilderTest.java | 2 ++ .../generator/uri/NamedUriStringParserTest.java | 7 ++++--- 10 files changed, 21 insertions(+), 59 deletions(-) diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceLoader.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceLoader.java index 423b648..4a22137 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceLoader.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceLoader.java @@ -16,14 +16,12 @@ */ package org.apache.freemarker.generator.base.datasource; -import java.nio.charset.Charset; - public interface DataSourceLoader { /** - * Check if the source would be accepted + * Check if the data source can be loaded by this instance. * - * @param source source + * @param source source to be loaded from * @return true if the instance wold be able to load a data source */ boolean accept(String source); @@ -35,13 +33,4 @@ public interface DataSourceLoader { * @return DataSource */ DataSource load(String source); - - /** - * Load a DataSource using the given charset. - * - * @param source source of the data source - * @param charset charset to use - * @return DataSource - */ - DataSource load(String source, Charset charset); } diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourcesSupplier.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourcesSupplier.java index c2604ba..9e22d81 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourcesSupplier.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourcesSupplier.java @@ -123,7 +123,7 @@ public class DataSourcesSupplier implements Supplier<List<DataSource>> { } private static Charset getCharsetOrElse(NamedUri namedUri, Charset def) { - return Charset.forName(namedUri.getParameter(NamedUri.CHARSET, def.name())); + return namedUri.getCharsetOrElse(def); } private static boolean isHttpUri(String value) { diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/DefaultDataSourceLoader.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/DefaultDataSourceLoader.java index 467531c..2067aa2 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/DefaultDataSourceLoader.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/DefaultDataSourceLoader.java @@ -19,7 +19,6 @@ package org.apache.freemarker.generator.base.datasource.loader; import org.apache.freemarker.generator.base.datasource.DataSource; import org.apache.freemarker.generator.base.datasource.DataSourceLoader; -import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; @@ -47,16 +46,10 @@ public class DefaultDataSourceLoader implements DataSourceLoader { return get(source).load(source); } - @Override - public DataSource load(String source, Charset charset) { - return get(source).load(source, charset); - } - private DataSourceLoader get(String source) { return dataSourceLoaders.stream() .filter(loader -> loader.accept(source)) .findFirst() .orElseThrow(() -> new IllegalArgumentException("Don't know how to load: " + source)); } - } diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/EnvironmentDataSourceLoader.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/EnvironmentDataSourceLoader.java index 41eeeef..775b7cc 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/EnvironmentDataSourceLoader.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/EnvironmentDataSourceLoader.java @@ -25,8 +25,6 @@ import org.apache.freemarker.generator.base.uri.NamedUri; import org.apache.freemarker.generator.base.uri.NamedUriStringParser; import org.apache.freemarker.generator.base.util.StringUtils; -import java.nio.charset.Charset; - import static org.apache.freemarker.generator.base.FreeMarkerConstants.DEFAULT_GROUP; import static org.apache.freemarker.generator.base.util.StringUtils.firstNonEmpty; import static org.apache.freemarker.generator.base.util.StringUtils.isNotEmpty; @@ -57,12 +55,6 @@ public class EnvironmentDataSourceLoader implements DataSourceLoader { } } - @Override - public DataSource load(String source, Charset charset) { - // We already habe internal strings so we can ignore the charset - return load(source); - } - /** * Environment variables come with a leading "/" to be removed. */ 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 1ee8b66..413e782 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 @@ -22,7 +22,6 @@ import org.apache.freemarker.generator.base.datasource.DataSourceFactory; import org.apache.freemarker.generator.base.datasource.DataSourceLoader; import org.apache.freemarker.generator.base.uri.NamedUri; import org.apache.freemarker.generator.base.uri.NamedUriStringParser; -import org.apache.freemarker.generator.base.util.UriUtils; import java.io.File; import java.nio.charset.Charset; @@ -46,14 +45,4 @@ public class FileDataSourceLoader implements DataSourceLoader { final String name = namedUri.getNameOrElse(file.getName()); return DataSourceFactory.fromFile(name, group, file, charset); } - - @Override - public DataSource load(String source, Charset charset) { - final NamedUri namedUri = NamedUriStringParser.parse(source); - final String group = namedUri.getGroupOrElse(FreeMarkerConstants.DEFAULT_GROUP); - final File file = namedUri.getFile(); - final String name = namedUri.getNameOrElse(UriUtils.toStringWithoutFragment(file.toURI())); - return DataSourceFactory.fromFile(name, group, file, charset); - } - } diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/HttpDataSourceLoader.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/HttpDataSourceLoader.java index 10755f9..1684f58 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/HttpDataSourceLoader.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/HttpDataSourceLoader.java @@ -50,12 +50,6 @@ public class HttpDataSourceLoader implements DataSourceLoader { return DataSourceFactory.fromUrl(name, group, url, mimeType, charset); } - @Override - public DataSource load(String source, Charset charset) { - // We should pick up the charset from the HTTP server - return load(source); - } - private static URL toUrl(URI uri) { try { return uri.toURL(); diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUri.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUri.java index 6003d3c..cbe2b01 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUri.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUri.java @@ -32,8 +32,8 @@ import static org.apache.freemarker.generator.base.util.StringUtils.isEmpty; */ public class NamedUri { - public static final String CHARSET = "charset"; - public static final String MIMETYPE = "mimeType"; + private static final String CHARSET = "charset"; + private static final String MIMETYPE = "mimeType"; /** User-supplied name */ private final String name; @@ -89,7 +89,7 @@ public class NamedUri { return parameters.get(key); } - public String getParameter(String key, String defaultValue) { + public String getParameterOrElse(String key, String defaultValue) { return parameters.getOrDefault(key, defaultValue); } @@ -110,7 +110,7 @@ public class NamedUri { } public String getMimeTypeOrElse(String def) { - return getParameter(NamedUri.MIMETYPE, def); + return getParameterOrElse(NamedUri.MIMETYPE, def); } public Charset getCharset() { 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 1567699..2bc284e 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 @@ -26,7 +26,6 @@ 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; @@ -174,11 +173,14 @@ 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)); + final String utf8Uri = "./src/test/data/txt/utf8.txt#charset=UTF-8"; + final String utf16Uri = "./src/test/data/txt/utf16.txt#charset=UTF-16"; + try (DataSource utf8DataSource = dataSourceLoader().load(utf8Uri)) { + try (DataSource utf16DataSource = dataSourceLoader().load(utf16Uri)) { + // skip the first line before comparing + assertEquals(utf8DataSource.getLines().subList(1, 5), utf16DataSource.getLines().subList(1, 5)); + } + } } private DataSourceLoader dataSourceLoader() { diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/template/TemplateTransformationsBuilderTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/template/TemplateTransformationsBuilderTest.java index 822b66a..7170cd7 100644 --- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/template/TemplateTransformationsBuilderTest.java +++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/template/TemplateTransformationsBuilderTest.java @@ -23,6 +23,7 @@ import org.apache.freemarker.generator.base.template.TemplateSource.Origin; import org.apache.freemarker.generator.base.template.TemplateTransformation; import org.apache.freemarker.generator.base.template.TemplateTransformationsBuilder; import org.apache.freemarker.generator.base.util.NonClosableWriterWrapper; +import org.junit.Ignore; import org.junit.Test; import java.io.BufferedWriter; @@ -181,6 +182,7 @@ public class TemplateTransformationsBuilderTest { // === Template URL =============================================== @Test + @Ignore("Requires internet access") public void shouldCreateFromTemplateUrl() { final List<TemplateTransformation> transformations = builder() .setTemplateSource(ANY_TEMPLATE_URL) 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 ebcb84e..01e68bb 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 @@ -240,13 +240,14 @@ public class NamedUriStringParserTest { @Test public void shouldParseNamedGroupUrlWithQueryAndFragment() { - final NamedUri namedURI = parse("google:web=http://google.com?foo=bar#charset=UTF-16"); + final NamedUri namedURI = parse("google:web=http://google.com?foo=bar#charset=UTF-16&name=value"); assertEquals("google", namedURI.getName()); assertEquals("web", namedURI.getGroup()); - assertEquals("http://google.com?foo=bar#charset=UTF-16", namedURI.getUri().toString()); - assertEquals(1, namedURI.getParameters().size()); + assertEquals("http://google.com?foo=bar#charset=UTF-16&name=value", namedURI.getUri().toString()); + assertEquals(2, namedURI.getParameters().size()); assertEquals("UTF-16", namedURI.getParameters().get("charset")); + assertEquals("value", namedURI.getParameters().get("name")); } @Test(expected = RuntimeException.class)
