This is an automated email from the ASF dual-hosted git repository.
sgoeschl pushed a commit to branch FREEMARKER-188
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
The following commit(s) were added to refs/heads/FREEMARKER-188 by this push:
new 7d753fc FREEMARKER-188 Cleanup code
7d753fc is described below
commit 7d753fc8d34446fe088e9123a94b985fc6afdd6f
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Fri Sep 10 18:35:41 2021 +0200
FREEMARKER-188 Cleanup code
---
.../base/activation/CachingUrlDataSource.java | 1 +
.../freemarker/generator/base/mime/Mimetypes.java | 3 +++
.../base/mime/MimetypesFileTypeMapFactory.java | 6 ++++-
.../generator/base/output/OutputGenerator.java | 1 +
.../generator/base/util/OperatingSystem.java | 2 +-
.../generator/base/util/PropertiesTransformer.java | 3 ++-
.../org/apache/freemarker/generator/cli/Main.java | 13 ++++++----
.../generator/cli/task/FreeMarkerTask.java | 28 +++++++++++++++++-----
.../freemarker/generator/cli/PicocliTest.java | 2 +-
9 files changed, 44 insertions(+), 15 deletions(-)
diff --git
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/CachingUrlDataSource.java
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/CachingUrlDataSource.java
index 6616598..81b41c4 100644
---
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/CachingUrlDataSource.java
+++
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/CachingUrlDataSource.java
@@ -26,6 +26,7 @@ import java.net.URL;
*/
public class CachingUrlDataSource extends URLDataSource {
+ /** Cached content type. */
private String contentType;
public CachingUrlDataSource(URL url) {
diff --git
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/mime/Mimetypes.java
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/mime/Mimetypes.java
index c8bb76c..6f70b69 100644
---
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/mime/Mimetypes.java
+++
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/mime/Mimetypes.java
@@ -31,6 +31,9 @@ public class Mimetypes {
public static final String MIME_TEXT_TSV = "text/tab-separated-values";
public static final String MIME_TEXT_YAML = "text/yaml";
+ public static final String MIME_TYPE_ZIP = "application/zip";
+ public static final String MIME_TYPE_GZIP = "application/gzip";
+
public static final String MIME_VENDOR_MS_EXCEL =
"application/vnd.ms-excel xls XLS";
public static final String MIME_VENDOR_OPEN_XML_SPREADSHEET =
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx XLSX\"";
}
diff --git
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/mime/MimetypesFileTypeMapFactory.java
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/mime/MimetypesFileTypeMapFactory.java
index f8bbf2a..9445fe9 100644
---
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/mime/MimetypesFileTypeMapFactory.java
+++
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/mime/MimetypesFileTypeMapFactory.java
@@ -29,10 +29,12 @@ import static
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_TEXT_PLAI
import static
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_TEXT_RTF;
import static
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_TEXT_TSV;
import static
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_TEXT_YAML;
+import static
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_TYPE_GZIP;
+import static
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_TYPE_ZIP;
import static
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_VENDOR_MS_EXCEL;
import static
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_VENDOR_OPEN_XML_SPREADSHEET;
-public class MimetypesFileTypeMapFactory {
+public abstract class MimetypesFileTypeMapFactory {
private static MimetypesFileTypeMap mimeTypes;
@@ -52,6 +54,8 @@ public class MimetypesFileTypeMapFactory {
mimeTypes.addMimeTypes(MIME_TEXT_RTF + " rtf RTF");
mimeTypes.addMimeTypes(MIME_TEXT_TSV + " tsv TSV");
mimeTypes.addMimeTypes(MIME_TEXT_YAML + " yml YML yaml YAML");
+ mimeTypes.addMimeTypes(MIME_TYPE_GZIP + " gzip GZIP");
+ mimeTypes.addMimeTypes(MIME_TYPE_ZIP + " zip ZIP");
}
return mimeTypes;
diff --git
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/output/OutputGenerator.java
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/output/OutputGenerator.java
index f2c4e6f..ebdd409 100644
---
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/output/OutputGenerator.java
+++
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/output/OutputGenerator.java
@@ -48,6 +48,7 @@ public class OutputGenerator {
/** Variables (as a map) used for the transformation */
private final Map<String, Object> variables;
+ /** Seed type of "DATASOURCE* only takes a single data soure */
private final SeedType seedType;
public OutputGenerator(
diff --git
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/OperatingSystem.java
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/OperatingSystem.java
index 180b7ac..02158cb 100644
---
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/OperatingSystem.java
+++
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/OperatingSystem.java
@@ -19,7 +19,7 @@ package org.apache.freemarker.generator.base.util;
import java.util.Locale;
/**
- * Helper class to detect the operting system (mostly Windows).
+ * Helper class to detect the operating system.
*/
public class OperatingSystem {
private static final String OS = System.getProperty("os.name",
"unknown").toLowerCase(Locale.ROOT);
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 90b2f6a..97ed173 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
@@ -24,7 +24,8 @@ import java.util.Properties;
public class PropertiesTransformer {
/**
- * Create a new <code>java.util.Properties</code> instance having only key
with the prefix.
+ * Create a new <code>java.util.Properties</code> instance having only key
with the
+ * given prefix.
*
* @param properties the properties
* @param prefix prefix
diff --git
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
index 5158668..c275406 100644
---
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
+++
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
@@ -140,13 +140,12 @@ public class Main implements Callable<Integer> {
@Override
public Integer call() {
- validate();
+ validateCommandLineParameters();
+ updateGlobalSystemProperties();
return IntStream.range(0, times).map(i -> onCall()).max().orElse(0);
}
private Integer onCall() {
- updateSystemProperties();
-
final String currentConfigFile = isNotEmpty(configFile) ? configFile :
getDefaultConfigFileName();
final Properties configuration =
loadFreeMarkerCliConfiguration(currentConfigFile);
final List<File> templateDirectories =
getTemplateDirectories(templateDir);
@@ -166,7 +165,11 @@ public class Main implements Callable<Integer> {
}
}
- void validate() {
+ /**
+ * Invoke a custom validation of the command line parameters supplementing
+ * the checks already done by Picocli.
+ */
+ void validateCommandLineParameters() {
outputGeneratorDefinitions.forEach(t ->
t.validate(spec.commandLine()));
}
@@ -195,7 +198,7 @@ public class Main implements Callable<Integer> {
.build();
}
- private void updateSystemProperties() {
+ private void updateGlobalSystemProperties() {
if (systemProperties != null && !systemProperties.isEmpty()) {
System.getProperties().putAll(systemProperties);
}
diff --git
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java
index 3e178bc..543f8fa 100644
---
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java
+++
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java
@@ -50,7 +50,7 @@ import static
org.apache.freemarker.generator.base.FreeMarkerConstants.Model;
*/
public class FreeMarkerTask implements Callable<Integer> {
- private static final int SUCCESS = 0;
+ private static final int SUCCESS_CODE = 0;
private final Supplier<Configuration> configurationSupplier;
private final Supplier<List<OutputGenerator>> outputGeneratorsSupplier;
@@ -85,7 +85,7 @@ public class FreeMarkerTask implements Callable<Integer> {
sharedDataSources,
sharedParameters));
- return SUCCESS;
+ return SUCCESS_CODE;
}
private void process(Configuration configuration,
@@ -102,19 +102,35 @@ public class FreeMarkerTask implements Callable<Integer> {
try (Writer writer = writer(templateOutput)) {
final Template template = template(configuration, templateSource);
template.process(templateDataModel, writer);
- } catch (TemplateException | IOException e) {
+ } catch (TemplateException | IOException | RuntimeException e) {
throw new RuntimeException("Failed to process template: " +
templateSource.getName(), e);
}
}
+ /**
+ * Merge the <code>DataSourced</code>.
+ * The data sources to be used are determined by the seed type
+ * <ul>
+ * <li>TEMPLATE: aggregates a list of data source</li>
+ * <li>DATASOURCE: only takes a single data source</li>
+ * </ul>
+ *
+ * @param outputGenerator current output generator
+ * @param sharedDataSources shared data sources
+ * @return <code>DataSources</code> to be passed to FreeMarker
+ */
private static DataSources toDataSources(OutputGenerator outputGenerator,
List<DataSource> sharedDataSources) {
final List<DataSource> dataSources = outputGenerator.getDataSources();
- if (outputGenerator.getSeedType() == SeedType.TEMPLATE) {
+ final SeedType seedType = outputGenerator.getSeedType();
+
+ if (seedType == SeedType.TEMPLATE) {
return new DataSources(ListUtils.concatenate(dataSources,
sharedDataSources));
- } else {
- // Since every data source shall generate an output there can be
only 1 datasource supplied
+ } else if (seedType == SeedType.DATASOURCE) {
+ // Since every data source shall generate an output there can be
only 1 datasource supplied.
Validate.isTrue(dataSources.size() == 1, "One data source expected
for generation driven by data sources");
return new DataSources(dataSources);
+ } else {
+ throw new IllegalArgumentException("Don't know how to handle the
seed type: " + seedType);
}
}
diff --git
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/PicocliTest.java
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/PicocliTest.java
index 4a3a5b8..4531b4f 100644
---
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/PicocliTest.java
+++
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/PicocliTest.java
@@ -148,7 +148,7 @@ public class PicocliTest {
"-i", "some-interactive-template01", "-s", "datasource30.csv",
"-o", "out.txt",
"-i", "some-interactive-template02");
- main.validate();
+ main.validateCommandLineParameters();
final List<OutputGeneratorDefinition> defs =
main.outputGeneratorDefinitions;
assertEquals(4, defs.size());