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 fef9df04f7a94013d9589c6b023ccb43d1f9bb4e Author: Siegfried Goeschl <[email protected]> AuthorDate: Sun Feb 7 20:24:33 2021 +0100 FREEMARKER-173 [freemarker-generator] Remove DataSource#load(source,charset) --- .../datasource/loader/HttpDataSourceLoader.java | 2 +- .../freemarker/generator/base/uri/NamedUri.java | 77 +++++++++++++++------- .../generator/util/PropertiesTransformerTest.java | 4 -- 3 files changed, 55 insertions(+), 28 deletions(-) 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 1684f58..74dcb46 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 @@ -43,7 +43,7 @@ public class HttpDataSourceLoader implements DataSourceLoader { final NamedUri namedUri = NamedUriStringParser.parse(source); final URI uri = namedUri.getUri(); final String group = namedUri.getGroupOrElse(DEFAULT_GROUP); - final Charset charset = namedUri.getCharsetOrElse(null); + final Charset charset = namedUri.getCharset(); final String mimeType = namedUri.getMimeType(); final URL url = toUrl(uri); final String name = namedUri.getNameOrElse(UriUtils.toStringWithoutFragment(uri)); 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 cbe2b01..3602d77 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 @@ -17,23 +17,29 @@ package org.apache.freemarker.generator.base.uri; import org.apache.freemarker.generator.base.util.StringUtils; +import org.apache.freemarker.generator.base.util.Validate; import java.io.File; import java.net.URI; import java.nio.charset.Charset; +import java.util.HashMap; import java.util.Map; -import static java.util.Objects.requireNonNull; -import static org.apache.freemarker.generator.base.util.StringUtils.emptyToNull; -import static org.apache.freemarker.generator.base.util.StringUtils.isEmpty; - /** * Captures the information of a user-supplied "named URI". + * <p> + * <ul> + * <li><code>name</code> is optional</li> + * <li><code>group</code> is optional</li> + * </ul> */ public class NamedUri { - private static final String CHARSET = "charset"; - private static final String MIMETYPE = "mimeType"; + // Pre-defined parameter names + private static final String NAME_KEY = "name"; + private static final String GROUP_KEY = "group"; + private static final String CHARSET_KEY = "charset"; + private static final String MIMETYPE_KEY = "mimeType"; /** User-supplied name */ private final String name; @@ -47,18 +53,43 @@ public class NamedUri { /** Name/value pairs parsed from URI fragment */ private final Map<String, String> parameters; + /** + * Constructor. + * <p> + * The <code>name</code> and <code>group</code> a read from <code>parameters</code>. + * + * @param uri URI + * @param parameters map of parameters + */ public NamedUri(URI uri, Map<String, String> parameters) { - this.name = null; - this.group = null; - this.uri = requireNonNull(uri); - this.parameters = requireNonNull(parameters); - } + Validate.notNull(uri, "uri is null"); + Validate.notNull(parameters, "parameters are null"); + + this.uri = uri; + this.name = StringUtils.emptyToNull(parameters.get(NAME_KEY)); + this.group = StringUtils.emptyToNull(parameters.get(GROUP_KEY)); + this.parameters = new HashMap<>(parameters); + } + + /** + * Constructor. + * <p> + * For empty <code>name</code> and <code>group</code> a fallback to <code>parameters</code> is provided. + * + * @param name optional name of the named URI + * @param group optional group of the named URI + * @param uri URI + * @param parameters map of parameters + */ public NamedUri(String name, String group, URI uri, Map<String, String> parameters) { - this.name = emptyToNull(name); - this.group = emptyToNull(group); - this.uri = requireNonNull(uri); - this.parameters = requireNonNull(parameters); + Validate.notNull(uri, "uri is null"); + Validate.notNull(parameters, "parameters are null"); + + this.uri = uri; + this.name = StringUtils.firstNonEmpty(name, parameters.get(NAME_KEY)); + this.group = StringUtils.firstNonEmpty(group, parameters.get(GROUP_KEY)); + this.parameters = new HashMap<>(parameters); } public String getName() { @@ -66,7 +97,7 @@ public class NamedUri { } public String getNameOrElse(String def) { - return isEmpty(name) ? def : name; + return StringUtils.isEmpty(name) ? def : name; } public String getGroup() { @@ -74,7 +105,7 @@ public class NamedUri { } public String getGroupOrElse(String def) { - return isEmpty(group) ? def : group; + return StringUtils.isEmpty(group) ? def : group; } public URI getUri() { @@ -94,11 +125,11 @@ public class NamedUri { } public boolean hasName() { - return !isEmpty(this.name); + return !StringUtils.isEmpty(this.name); } public boolean hasGroup() { - return !isEmpty(this.group); + return !StringUtils.isEmpty(this.group); } public File getFile() { @@ -106,20 +137,20 @@ public class NamedUri { } public String getMimeType() { - return getParameter(NamedUri.MIMETYPE); + return getParameter(NamedUri.MIMETYPE_KEY); } public String getMimeTypeOrElse(String def) { - return getParameterOrElse(NamedUri.MIMETYPE, def); + return getParameterOrElse(NamedUri.MIMETYPE_KEY, def); } public Charset getCharset() { - final String charsetName = getParameter(NamedUri.CHARSET); + final String charsetName = getParameter(NamedUri.CHARSET_KEY); return Charset.forName(charsetName); } public Charset getCharsetOrElse(Charset def) { - final String charsetName = getParameter(NamedUri.CHARSET); + final String charsetName = getParameter(NamedUri.CHARSET_KEY); return StringUtils.isEmpty(charsetName) ? def : Charset.forName(charsetName); } diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java index de0c483..5a116e0 100644 --- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java +++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java @@ -18,8 +18,6 @@ package org.apache.freemarker.generator.util; import org.junit.Test; -import java.util.HashMap; -import java.util.Map; import java.util.Properties; import static org.apache.freemarker.generator.base.FreeMarkerConstants.Configuration.TOOLS_PREFIX; @@ -29,8 +27,6 @@ import static org.junit.Assert.assertEquals; public class PropertiesTransformerTest { - private final Map<String, Object> settings = new HashMap<>(); - @Test public void shouldFilterKeyPrefix() { final Properties properties = filterKeyPrefix(properties(), TOOLS_PREFIX);
