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 &&

Reply via email to