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 2020/04/15 22:26:25 UTC
[freemarker-generator] 04/08: FREEMARKER-141 freemarker-cli: Expose
user-supplied parameters in the data model
This is an automated email from the ASF dual-hosted git repository.
sgoeschl pushed a commit to branch FREEMARKER-141
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
commit 79e14625a79eb51fd75649f2fe0fd81638936da5
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Tue Apr 14 00:35:55 2020 +0200
FREEMARKER-141 freemarker-cli: Expose user-supplied parameters in the data model
---
.../generator/base/datasource/DataSourceFactory.java | 12 +++++++++++-
.../generator/base/parameter/ParameterModelSupplier.java | 2 +-
.../org/apache/freemarker/generator/base/uri/NamedUri.java | 8 +-------
.../freemarker/generator/base/uri/NamedUriStringParser.java | 10 +---------
.../generator/datasource/DataSourceFactoryTest.java | 5 ++++-
.../generator/datasource/DataSourcesSupplierTest.java | 13 +++++++------
.../freemarker/generator/uri/NamedUriStringParserTest.java | 4 ++--
.../generator/cli/config/DataModelSupplierTest.java | 4 +++-
8 files changed, 30 insertions(+), 28 deletions(-)
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 76f5142..b8dda83 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
@@ -53,6 +53,7 @@ public class DataSourceFactory {
private static final String NO_MIME_TYPE = null;
private static final Charset NO_CHARSET = null;
+ private static final String ROOT_DIR = "/";
private DataSourceFactory() {
}
@@ -82,7 +83,8 @@ public class DataSourceFactory {
final String name = namedUri.getNameOrElse(file.getName());
return fromFile(name, group, file, charset);
} else if (UriUtils.isEnvUri(uri)) {
- final String key = uri.getPath().substring(1);
+ // environment variables come with a leading "/" to be removed
+ final String key = stripRootDir(uri.getPath());
final String contentType = getMimeTypeOrElse(namedUri, MIME_TEXT_PLAIN);
final String name = firstNonEmpty(namedUri.getName(), key, Location.ENVIRONMENT);
if (StringUtils.isEmpty(key)) {
@@ -218,4 +220,12 @@ public class DataSourceFactory {
throw new IllegalArgumentException(uri.toString(), e);
}
}
+
+ private static String stripRootDir(String str) {
+ if (str.startsWith(ROOT_DIR)) {
+ return str.substring(ROOT_DIR.length());
+ } else {
+ return str;
+ }
+ }
}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterModelSupplier.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterModelSupplier.java
index 7dc0d86..997e1b9 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterModelSupplier.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/parameter/ParameterModelSupplier.java
@@ -53,7 +53,7 @@ public class ParameterModelSupplier implements Supplier<Map<String, Object>> {
for (NamedUri namedUri : namedUris) {
final String key = namedUri.getName();
- final String value = namedUri.getUri().getPath().substring(1);
+ final String value = namedUri.getUri().getPath();
if (namedUri.hasGroup()) {
final String group = namedUri.getGroup();
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 77cd1fa..45fb595 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
@@ -16,8 +16,6 @@
*/
package org.apache.freemarker.generator.base.uri;
-import org.apache.freemarker.generator.base.util.UriUtils;
-
import java.io.File;
import java.net.URI;
import java.util.Map;
@@ -101,11 +99,7 @@ public class NamedUri {
}
public File getFile() {
- if (UriUtils.isFileUri(uri)) {
- return new File(uri.getPath().substring(1));
- } else {
- return new File(uri.getPath());
- }
+ return new File(uri.getPath());
}
@Override
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUriStringParser.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUriStringParser.java
index 0da4365..6aabbd0 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUriStringParser.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUriStringParser.java
@@ -52,7 +52,7 @@ public class NamedUriStringParser {
if (matcher.matches()) {
final String name = matcher.group(NAME);
final String group = matcher.group(GROUP);
- final URI uri = uri(matcher.group(URI));
+ final URI uri = UriUtils.toURI(matcher.group(URI));
return new NamedUri(name, group, uri, parameters(uri));
} else {
final URI uri = UriUtils.toURI(value);
@@ -63,12 +63,4 @@ public class NamedUriStringParser {
private static Map<String, String> parameters(URI uri) {
return UriFragmentParser.parse(uri.getFragment());
}
-
- private static URI uri(String str) {
- if (!str.contains("://")) {
- return UriUtils.toURI("file:///" + str);
- } else {
- return UriUtils.toURI(str);
- }
- }
}
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 d0d665c..16df1ef 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
@@ -29,7 +29,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.charset.Charset;
+import java.nio.file.Paths;
+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;
@@ -38,9 +40,10 @@ import static org.junit.Assert.assertEquals;
public class DataSourceFactoryTest {
+ private static final String PWD = Paths.get(".").toAbsolutePath().normalize().toString();
private static final String ANY_TEXT = "Hello World";
private static final String ANY_FILE_NAME = "pom.xml";
- private static final String ANY_FILE_URI = "file:///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_NAMED_URL_STRING = "content:www=https://www.google.com?foo=bar#contenttype=application/json";
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 68e6662..f0be3b1 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
@@ -21,6 +21,7 @@ import org.apache.freemarker.generator.base.datasource.DataSourcesSupplier;
import org.junit.Test;
import java.nio.charset.Charset;
+import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
@@ -33,16 +34,18 @@ public class DataSourcesSupplierTest {
private static final String NO_EXCLUDE = null;
private static final String DATA_DIRECTORY = "./src/test/data";
+ private static final String PWD = Paths.get(".").toAbsolutePath().normalize().toString();
+
@Test
public void shouldResolveSingleFile() {
assertEquals(1, supplier("pom.xml", "*", NO_EXCLUDE).get().size());
assertEquals(1, supplier("./pom.xml", "*", NO_EXCLUDE).get().size());
- assertEquals(1, supplier("file://./pom.xml", "*", NO_EXCLUDE).get().size());
assertEquals(1, supplier("pom=pom.xml", "*", NO_EXCLUDE).get().size());
assertEquals(1, supplier("pom=./pom.xml", "*", NO_EXCLUDE).get().size());
- assertEquals(1, supplier("pom=file://./pom.xml", "*", NO_EXCLUDE).get().size());
- assertEquals(1, supplier("pom=file://./pom.xml?mimetype=application/xml", "*", NO_EXCLUDE).get().size());
+ assertEquals(1, supplier("pom=./pom.xml#mimetype=application/xml", "*", NO_EXCLUDE).get().size());
+ assertEquals(1, supplier("pom=" + PWD + "/pom.xml", "*", NO_EXCLUDE).get().size());
+ assertEquals(1, supplier("pom=file:///" + PWD + "/pom.xml#mimetype=application/xml", "*", NO_EXCLUDE).get().size());
}
@Test
@@ -127,9 +130,7 @@ public class DataSourcesSupplierTest {
public void shouldNormalizeDataSourceNameBasedOnFilePath() {
assertEquals("pom.xml", supplier("pom.xml", "*", NO_EXCLUDE).get().get(0).getName());
assertEquals("pom.xml", supplier("./pom.xml", "*", NO_EXCLUDE).get().get(0).getName());
- assertEquals("pom.xml", supplier("file://./pom.xml", "*", NO_EXCLUDE).get().get(0).getName());
- assertEquals("pom.xml", supplier("file:///pom.xml", "*", NO_EXCLUDE).get().get(0).getName());
- assertEquals("pom.xml", supplier("file://tmp/pom.xml", "*", NO_EXCLUDE).get().get(0).getName());
+ assertEquals("pom.xml", supplier("file:///" + PWD + "/pom.xml", "*", NO_EXCLUDE).get().get(0).getName());
}
private static DataSourcesSupplier supplier(String directory, String include, String 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 5de2289..897ef82 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
@@ -77,7 +77,7 @@ public class NamedUriStringParserTest {
assertEquals("users", namedURI.getName());
assertNull(namedURI.getGroup());
- assertEquals("file:///users.csv", namedURI.getUri().toString());
+ assertEquals("users.csv", namedURI.getUri().toString());
assertEquals("users.csv", namedURI.getFile().getName());
assertEquals(0, namedURI.getParameters().size());
assertTrue(namedURI.hasName());
@@ -90,7 +90,7 @@ public class NamedUriStringParserTest {
assertEquals("name", namedURI.getName());
assertEquals("group", namedURI.getGroup());
- assertEquals("file:///users.csv", namedURI.getUri().toString());
+ assertEquals("users.csv", namedURI.getUri().toString());
assertEquals("users.csv", namedURI.getFile().getName());
assertEquals(0, namedURI.getParameters().size());
}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataModelSupplierTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataModelSupplierTest.java
index ef52df4..def6a86 100644
--- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataModelSupplierTest.java
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataModelSupplierTest.java
@@ -19,6 +19,7 @@ package org.apache.freemarker.generator.cli.config;
import org.junit.Ignore;
import org.junit.Test;
+import java.nio.file.Paths;
import java.util.Map;
import static java.util.Collections.singletonList;
@@ -28,6 +29,7 @@ import static org.junit.Assert.assertTrue;
public class DataModelSupplierTest {
+ private static final String PWD = Paths.get(".").toAbsolutePath().normalize().toString();
private static final String PWD_VALUE = System.getenv("PWD");
private static final int NR_OF_ALL_ENV_VARIABLES = System.getenv().size();
@@ -105,7 +107,7 @@ public class DataModelSupplierTest {
@Test
public void shouldResolvePropertiesUriToDataModelVariable() {
- final DataModelSupplier supplier = supplier("props=file://./src/test/data/properties/test.properties");
+ final DataModelSupplier supplier = supplier("props=file:///" + PWD + "/src/test/data/properties/test.properties");
final Map<String, Object> model = supplier.get();