This is an automated email from the ASF dual-hosted git repository. sgoeschl pushed a commit to branch FREEMARKER-161 in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
commit f293ae9b4381dbca89a72c316a665f77f5bf25b1 Author: Siegfried Goeschl <[email protected]> AuthorDate: Sat Jan 9 11:01:30 2021 +0100 FREEMARKER-161 [freemarker-generator] Cleanup code --- .../template/TemplateTransformationsBuilder.java | 61 ++++++---------------- .../TemplateTransformationsBuilderTest.java | 35 ++++--------- .../cli/config/OutputGeneratorsSupplier.java | 6 +-- .../cli/picocli/OutputGeneratorDefinition.java | 8 --- 4 files changed, 29 insertions(+), 81 deletions(-) diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsBuilder.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsBuilder.java index 44e9676..e5d0cd3 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsBuilder.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsBuilder.java @@ -30,9 +30,7 @@ import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.Charset; import java.util.ArrayList; -import java.util.Collection; import java.util.List; -import java.util.Optional; import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Collections.singletonList; @@ -46,8 +44,8 @@ public class TemplateTransformationsBuilder { /** Interactive template */ private TemplateSource interactiveTemplate; - /** List of templates and/or template directories to be rendered */ - private final List<String> templateSources; + /** Template source - either a single template or a directory */ + private String templateSource; /** Optional include patterns for resolving source templates or template directories */ private final List<String> includes; @@ -55,8 +53,8 @@ public class TemplateTransformationsBuilder { /** Optional exclude patterns for resolving source templates or template directories */ private final List<String> excludes; - /** Optional output file(s) or directory - if none is defined everything is written to STDOUT */ - private final List<String> outputs; + /** Optional output file or directory - if none is defined everything is written to STDOUT */ + private String output; /** Optional output encoding */ private Charset outputEncoding; @@ -65,10 +63,10 @@ public class TemplateTransformationsBuilder { private Writer callerSuppliedWriter; private TemplateTransformationsBuilder() { - this.templateSources = new ArrayList<>(); + this.templateSource = null; this.includes = new ArrayList<>(); this.excludes = new ArrayList<>(); - this.outputs = new ArrayList<>(); + this.output = null; this.callerSuppliedWriter = null; this.outputEncoding = UTF_8; } @@ -81,16 +79,12 @@ public class TemplateTransformationsBuilder { validate(); final List<TemplateTransformation> result = new ArrayList<>(); + final File outputFile = getOutputFile(); if (hasInteractiveTemplate()) { - final File outputFile = getOutputFile(0).orElse(null); result.add(resolveInteractiveTemplate(outputFile)); } else { - for (int i = 0; i < templateSources.size(); i++) { - final String source = templateSources.get(i); - final File output = getOutputFile(i).orElse(null); - result.addAll(resolve(source, output)); - } + result.addAll(resolve(templateSource, outputFile)); } return result; @@ -103,15 +97,8 @@ public class TemplateTransformationsBuilder { return this; } - public TemplateTransformationsBuilder addTemplateSource(String source) { - if (StringUtils.isNotEmpty(source)) { - this.templateSources.add(source); - } - return this; - } - - public TemplateTransformationsBuilder addTemplateSources(Collection<String> sources) { - sources.forEach(this::addTemplateSource); + public TemplateTransformationsBuilder setTemplateSource(String source) { + this.templateSource = source; return this; } @@ -129,22 +116,14 @@ public class TemplateTransformationsBuilder { return this; } - public TemplateTransformationsBuilder addOutputs(Collection<String> outputs) { - if (outputs != null) { - this.outputs.addAll(outputs); - } - return this; - } - - public TemplateTransformationsBuilder addOutput(String output) { - if (StringUtils.isNotEmpty(output)) { - this.outputs.add(output); - } + public TemplateTransformationsBuilder setOutput(String output) { + this.output = output; return this; } public TemplateTransformationsBuilder setOutputEncoding(Charset outputEncoding) { if (outputEncoding != null) { + // keep UTF-8 here this.outputEncoding = outputEncoding; } @@ -157,9 +136,7 @@ public class TemplateTransformationsBuilder { } private void validate() { - // TODO FREEMARKER-161 08.01.2021 sgoeschl refactor code - // Validate.isTrue(interactiveTemplate != null || !templateSources.isEmpty(), "Interactive template does not support multiple sources"); - Validate.isTrue(interactiveTemplate == null || templateSources.isEmpty(), "No template was provided"); + Validate.isTrue(interactiveTemplate == null || templateSource == null, "No template was provided"); } /** @@ -257,14 +234,8 @@ public class TemplateTransformationsBuilder { return interactiveTemplate != null; } - private Optional<File> getOutputFile(int i) { - if (outputs.isEmpty()) { - return Optional.empty(); - } else if (i < outputs.size()) { - return Optional.of(new File(outputs.get(i))); - } else { - return Optional.of(new File(outputs.get(0))); - } + private File getOutputFile() { + return output == null ? null : new File(output); } private static File getTemplateOutputFile(File templateDirectory, File templateFile, File outputDirectory) { 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 c560ae7..822b66a 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 @@ -26,7 +26,6 @@ import org.apache.freemarker.generator.base.util.NonClosableWriterWrapper; import org.junit.Test; import java.io.BufferedWriter; -import java.io.File; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; @@ -76,7 +75,7 @@ public class TemplateTransformationsBuilderTest { public void shouldThrowIllegalArgumentExceptionWheMixingInteractiveTemplateWithSources() { builder() .setInteractiveTemplate("Hello World") - .addTemplateSource(ANY_TEMPLATE_FILE_NAME) + .setTemplateSource(ANY_TEMPLATE_FILE_NAME) .setCallerSuppliedWriter(stdoutWriter()) .build(); } @@ -86,7 +85,7 @@ public class TemplateTransformationsBuilderTest { @Test public void shouldCreateFromTemplateFile() { final List<TemplateTransformation> transformations = builder() - .addTemplateSource(ANY_TEMPLATE_FILE_NAME) + .setTemplateSource(ANY_TEMPLATE_FILE_NAME) .setCallerSuppliedWriter(stdoutWriter()) .build(); @@ -105,26 +104,12 @@ public class TemplateTransformationsBuilderTest { assertNull(templateOutput.getFile()); } - @Test - public void shouldCreateFromMultipleTemplateFiles() { - final List<TemplateTransformation> transformations = builder() - .addTemplateSource(ANY_TEMPLATE_FILE_NAME) - .addOutput("foo/first.out") - .addTemplateSource(OTHER_TEMPLATE_FILE_NAME) - .addOutput("foo/second.out") - .build(); - - assertEquals(2, transformations.size()); - assertEquals(new File("foo/first.out"), transformations.get(0).getTemplateOutput().getFile()); - assertEquals(new File("foo/second.out"), transformations.get(1).getTemplateOutput().getFile()); - } - // === Template Path ==================================================== @Test public void shouldCreateFromTemplatePath() { final List<TemplateTransformation> transformations = builder() - .addTemplateSource(ANY_TEMPLATE_PATH) + .setTemplateSource(ANY_TEMPLATE_PATH) .setCallerSuppliedWriter(stdoutWriter()) .build(); @@ -148,7 +133,7 @@ public class TemplateTransformationsBuilderTest { @Test public void shouldCreateFromTemplateDirectory() { final List<TemplateTransformation> transformations = builder() - .addTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME) + .setTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME) .setCallerSuppliedWriter(stdoutWriter()) .build(); @@ -160,8 +145,8 @@ public class TemplateTransformationsBuilderTest { @Test public void shouldCreateFromTemplateDirectoryWithOutputDirectory() { final List<TemplateTransformation> transformations = builder() - .addTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME) - .addOutput("/foo") + .setTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME) + .setOutput("/foo") .build(); assertEquals(2, transformations.size()); @@ -172,7 +157,7 @@ public class TemplateTransformationsBuilderTest { @Test public void shouldCreateFromTemplateDirectoryWithInclude() { final List<TemplateTransformation> transformations = builder() - .addTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME) + .setTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME) .addInclude("*.properties") .setCallerSuppliedWriter(stdoutWriter()) .build(); @@ -184,7 +169,7 @@ public class TemplateTransformationsBuilderTest { @Test public void shouldCreateFromTemplateDirectoryWithExclude() { final List<TemplateTransformation> transformations = builder() - .addTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME) + .setTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME) .addExclude("*.ftl") .setCallerSuppliedWriter(stdoutWriter()) .build(); @@ -198,7 +183,7 @@ public class TemplateTransformationsBuilderTest { @Test public void shouldCreateFromTemplateUrl() { final List<TemplateTransformation> transformations = builder() - .addTemplateSource(ANY_TEMPLATE_URL) + .setTemplateSource(ANY_TEMPLATE_URL) .setCallerSuppliedWriter(stdoutWriter()) .build(); @@ -217,7 +202,7 @@ public class TemplateTransformationsBuilderTest { @Test public void shouldCreateFromTemplateEnvironmentVariable() { final List<TemplateTransformation> transformations = builder() - .addTemplateSource(ANY_ENV_URI) + .setTemplateSource(ANY_ENV_URI) .setCallerSuppliedWriter(stdoutWriter()) .build(); diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java index 2a33bfd..245ad47 100644 --- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java +++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java @@ -68,15 +68,15 @@ public class OutputGeneratorsSupplier implements Supplier<List<OutputGenerator>> if (templateSourceDefinition.isInteractiveTemplate()) { builder.setInteractiveTemplate(templateSourceDefinition.interactiveTemplate); } else { - builder.addTemplateSource(templateSourceDefinition.template); + builder.setTemplateSource(templateSourceDefinition.template); } // set the writer builder.setCallerSuppliedWriter(settings.getCallerSuppliedWriter()); // set template output - if (templateOutputDefinition != null) { - builder.addOutputs(templateOutputDefinition.outputs); + if (templateOutputDefinition != null && templateOutputDefinition.hasOutput()) { + builder.setOutput(templateOutputDefinition.outputs.get(0)); } // set the output encoding diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputGeneratorDefinition.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputGeneratorDefinition.java index f99df35..78352ec 100644 --- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputGeneratorDefinition.java +++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputGeneratorDefinition.java @@ -88,14 +88,6 @@ public class OutputGeneratorDefinition { return templateOutputDefinition; } - public DataSourceDefinition getDataSourceDefinition() { - return dataSourceDefinition; - } - - public DataModelDefinition getDataModelDefinition() { - return dataModelDefinition; - } - public boolean hasTemplateSourceIncludes() { return getTemplateSourceFilterDefinition() != null && getTemplateSourceFilterDefinition().templateIncludePatterns != null &&
