This is an automated email from the ASF dual-hosted git repository.
sgoeschl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
The following commit(s) were added to refs/heads/master by this push:
new d32e630 Parse list of `DataSources` for the various tools
d32e630 is described below
commit d32e63097d715c55834fad515bed0be8c8d74726
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Tue Dec 15 23:35:43 2020 +0100
Parse list of `DataSources` for the various tools
---
freemarker-generator-cli/CHANGELOG.md | 1 +
.../generator/tools/commonscsv/CommonsCSVTool.java | 6 +++++
.../generator/tools/excel/ExcelTool.java | 8 ++++++
.../freemarker/generator/tools/gson/GsonTool.java | 15 +++++++++++
.../generator/tools/jsonpath/JsonPathTool.java | 13 +++++++++-
.../generator/tools/properties/PropertiesTool.java | 9 +++++++
.../generator/tools/snakeyaml/SnakeYamlTool.java | 9 +++++++
.../freemarker/generator/tools/xml/XmlTool.java | 9 +++++++
.../generator/tools/gson/GsonToolTest.java | 29 +++++++++++++++++++++-
.../generator/tools/jsoup/JsoupToolTest.java | 2 --
10 files changed, 97 insertions(+), 4 deletions(-)
diff --git a/freemarker-generator-cli/CHANGELOG.md
b/freemarker-generator-cli/CHANGELOG.md
index 2b564b3..c6abcd7 100644
--- a/freemarker-generator-cli/CHANGELOG.md
+++ b/freemarker-generator-cli/CHANGELOG.md
@@ -5,6 +5,7 @@ All notable changes to this project will be documented in this
file. We try to a
## 0.1.0-SNAPSHOT
### Added
+* Parse list of `DataSources` for the various tools
* [FREEMARKER-163] Integrate Java Faker library for test data generation
* [FREEMARKER-148] Make usage of "DataSources" more "Freemarker" like
* [FREEMARKER-149] Support multiple template transformations on the command
line
diff --git
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
index 1dcda46..552ae16 100644
---
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
+++
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
@@ -47,6 +47,12 @@ public class CommonsCSVTool {
return parse(dataSource, defaultCSVInputFormat());
}
+ public List<CSVParser> parse(Collection<DataSource> dataSources) {
+ return dataSources.stream()
+ .map(this::parse)
+ .collect(Collectors.toList());
+ }
+
public CSVParser parse(DataSource dataSource, CSVFormat format) {
if (dataSource == null) {
throw new IllegalArgumentException("No data source was provided");
diff --git
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/excel/ExcelTool.java
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/excel/ExcelTool.java
index 406a927..eff89ea 100644
---
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/excel/ExcelTool.java
+++
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/excel/ExcelTool.java
@@ -32,9 +32,11 @@ import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import java.util.stream.Collectors;
import static
org.apache.poi.ss.usermodel.Row.MissingCellPolicy.CREATE_NULL_AS_BLANK;
@@ -57,6 +59,12 @@ public class ExcelTool {
}
}
+ public List<Workbook> parse(Collection<DataSource> dataSources) {
+ return dataSources.stream()
+ .map(this::parse)
+ .collect(Collectors.toList());
+ }
+
/**
* Get all sheets of a workbook.
*
diff --git
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/gson/GsonTool.java
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/gson/GsonTool.java
index dd8128b..96f02bd 100644
---
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/gson/GsonTool.java
+++
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/gson/GsonTool.java
@@ -23,6 +23,9 @@ import
org.apache.freemarker.generator.base.datasource.DataSource;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* JSON processing using <a href="https://github.com/google/gson">Google
GSON</a>
@@ -46,6 +49,18 @@ public class GsonTool {
}
/**
+ * Parse a list of data sources.
+ *
+ * @param dataSources list of data sources
+ * @return list of parsed JSON (either as a map or list)
+ */
+ public List<Object> parse(Collection<DataSource> dataSources) {
+ return dataSources.stream()
+ .map(this::parse)
+ .collect(Collectors.toList());
+ }
+
+ /**
* Parse a JSON object string.
*
* @param json Json string
diff --git
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathTool.java
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathTool.java
index 8bd38e7..e57898c 100644
---
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathTool.java
+++
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathTool.java
@@ -24,15 +24,26 @@ import
org.apache.freemarker.generator.base.datasource.DataSource;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
public class JsonPathTool {
- public DocumentContext parse(DataSource dataSource) throws IOException {
+ public DocumentContext parse(DataSource dataSource) {
try (InputStream is = dataSource.getUnsafeInputStream()) {
return JsonPath.using(configuration()).parse(is);
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to parse data source:" +
dataSource, e);
}
}
+ public List<DocumentContext> parse(Collection<DataSource> dataSources) {
+ return dataSources.stream()
+ .map(this::parse)
+ .collect(Collectors.toList());
+ }
+
public DocumentContext parse(String json) {
return JsonPath.using(configuration()).parse(json);
}
diff --git
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/properties/PropertiesTool.java
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/properties/PropertiesTool.java
index 6656e2d..0f520fa 100644
---
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/properties/PropertiesTool.java
+++
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/properties/PropertiesTool.java
@@ -21,7 +21,10 @@ import
org.apache.freemarker.generator.base.util.PropertiesFactory;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Collection;
+import java.util.List;
import java.util.Properties;
+import java.util.stream.Collectors;
public class PropertiesTool {
@@ -33,6 +36,12 @@ public class PropertiesTool {
}
}
+ public List<Properties> parse(Collection<DataSource> dataSources) {
+ return dataSources.stream()
+ .map(this::parse)
+ .collect(Collectors.toList());
+ }
+
public Properties parse(String value) {
return PropertiesFactory.create(value);
}
diff --git
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlTool.java
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlTool.java
index efacaea..5516d0d 100644
---
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlTool.java
+++
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlTool.java
@@ -22,6 +22,9 @@ import org.yaml.snakeyaml.Yaml;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
import static org.yaml.snakeyaml.DumperOptions.FlowStyle.BLOCK;
@@ -37,6 +40,12 @@ public class SnakeYamlTool {
}
}
+ public List<Object> parse(Collection<DataSource> dataSources) {
+ return dataSources.stream()
+ .map(this::parse)
+ .collect(Collectors.toList());
+ }
+
public Object parse(String yaml) {
return yaml().load(yaml);
}
diff --git
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/xml/XmlTool.java
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/xml/XmlTool.java
index ddacf1c..6404fd4 100644
---
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/xml/XmlTool.java
+++
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/xml/XmlTool.java
@@ -22,6 +22,9 @@ import org.xml.sax.InputSource;
import java.io.InputStream;
import java.io.StringReader;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
public class XmlTool {
@@ -33,6 +36,12 @@ public class XmlTool {
}
}
+ public List<NodeModel> parse(Collection<DataSource> dataSources) {
+ return dataSources.stream()
+ .map(this::parse)
+ .collect(Collectors.toList());
+ }
+
public NodeModel parse(String value) {
try (StringReader reader = new StringReader(value)) {
return NodeModel.parse(new InputSource(reader));
diff --git
a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/gson/GsonToolTest.java
b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/gson/GsonToolTest.java
index 1914fda..965b62f 100644
---
a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/gson/GsonToolTest.java
+++
b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/gson/GsonToolTest.java
@@ -16,10 +16,14 @@
*/
package org.apache.freemarker.generator.tools.gson;
+import org.apache.freemarker.generator.base.datasource.DataSource;
+import org.apache.freemarker.generator.base.datasource.DataSourceFactory;
+import org.apache.freemarker.generator.base.mime.Mimetypes;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -104,7 +108,7 @@ public class GsonToolTest {
@Test
@SuppressWarnings("unchecked")
- public void shouldParseJsonWithComemnts() {
+ public void shouldParseJsonWithComments() {
final Map<String, Object> map = (Map)
gsonTool.parse(JSON_WITH_COMMENTS);
assertEquals("Apple", map.get("fruit"));
@@ -123,6 +127,25 @@ public class GsonToolTest {
@Test
@SuppressWarnings("unchecked")
+ public void shouldParseDataSource() {
+ final DataSource dataSource = dataSource();
+ final Map<String, Object> map = (Map) gsonTool.parse(dataSource);
+
+ assertEquals(3, map.size());
+ assertEquals("110.0", map.get("id").toString());
+ assertEquals("Python", map.get("language"));
+ assertEquals("1900.0", map.get("price").toString());
+ }
+
+ @Test
+ public void shouldParseDataSources() {
+ final List<DataSource> dataSources = Arrays.asList(dataSource(),
dataSource());
+ final List<Object> jsonList = gsonTool.parse(dataSources);
+
+ assertEquals(2, jsonList.size());
+ }
+
+ @Test
public void shouldConvertToJson() {
assertEquals(JSON_OBJECT,
gsonTool.toJson(gsonTool.parse(JSON_OBJECT)));
assertEquals(JSON_OBJECT_WITH_ARRAY,
gsonTool.toJson(gsonTool.parse(JSON_OBJECT_WITH_ARRAY)));
@@ -140,4 +163,8 @@ public class GsonToolTest {
private GsonTool gsonTool() {
return new GsonTool();
}
+
+ private DataSource dataSource() {
+ return DataSourceFactory.fromString("name", "group", JSON_OBJECT,
Mimetypes.MIME_APPLICATION_JSON);
+ }
}
diff --git
a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsoup/JsoupToolTest.java
b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsoup/JsoupToolTest.java
index a8f3a61..88f396a 100644
---
a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsoup/JsoupToolTest.java
+++
b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsoup/JsoupToolTest.java
@@ -54,6 +54,4 @@ public class JsoupToolTest {
private JsoupTool jsoupTool() {
return new JsoupTool();
}
-
-
}