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 5f89acd1df8c90a8a330d469807572c28003d0a4
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Sat Dec 26 10:02:26 2020 +0100

    FREEMARKER-161 [freemarker-generator] Allow multiple transformations on the 
CLI
---
 .../generator/base/template/TemplateSource.java    |  8 +--
 .../base/template/TemplateTransformations.java     | 47 --------------
 .../template/TemplateTransformationsBuilder.java   | 72 ++++++++--------------
 .../template/TemplateTransformationsSupplier.java  | 22 -------
 .../template/TemplateSourceFactoryTest.java        | 10 +--
 .../TemplateTransformationsBuilderTest.java        | 71 +++++++++++----------
 .../freemarker/generator/cli/config/Suppliers.java | 10 +--
 .../generator/cli/task/FreeMarkerTask.java         | 17 +++--
 8 files changed, 87 insertions(+), 170 deletions(-)

diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateSource.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateSource.java
index fb50b2a..5e57489 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateSource.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateSource.java
@@ -29,8 +29,8 @@ import java.nio.charset.StandardCharsets;
 public class TemplateSource {
 
     public enum Origin {
-        PATH,
-        CODE
+        TEMPLATE_LOADER,
+        TEMPLATE_CODE
     }
 
     /** Name of template for diagnostics */
@@ -50,7 +50,7 @@ public class TemplateSource {
 
     private TemplateSource(String name, String code) {
         this.name = name;
-        this.origin = Origin.CODE;
+        this.origin = Origin.TEMPLATE_CODE;
         this.code = code;
         this.path = null;
         this.encoding = StandardCharsets.UTF_8;
@@ -58,7 +58,7 @@ public class TemplateSource {
 
     private TemplateSource(String name, String path, Charset encoding) {
         this.name = name;
-        this.origin = Origin.PATH;
+        this.origin = Origin.TEMPLATE_LOADER;
         this.code = null;
         this.path = path;
         this.encoding = encoding;
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformations.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformations.java
deleted file mode 100644
index e41162d..0000000
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformations.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.freemarker.generator.base.template;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Keeps track of all transformations being executed.
- */
-public class TemplateTransformations {
-
-    private final List<TemplateTransformation> templateTransformations;
-
-    public TemplateTransformations(Collection<? extends 
TemplateTransformation> templateTransformations) {
-        this.templateTransformations = new 
ArrayList<>(requireNonNull(templateTransformations));
-    }
-
-    public List<? extends TemplateTransformation> getList() {
-        return templateTransformations;
-    }
-
-    public TemplateTransformation get(int index) {
-        return templateTransformations.get(index);
-    }
-
-    public int size() {
-        return templateTransformations.size();
-    }
-}
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 bdef609..261e3f4 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
@@ -18,32 +18,29 @@ package org.apache.freemarker.generator.base.template;
 
 import org.apache.freemarker.generator.base.FreeMarkerConstants.Location;
 import org.apache.freemarker.generator.base.file.RecursiveFileSupplier;
-import org.apache.freemarker.generator.base.util.NonClosableWriterWrapper;
 import org.apache.freemarker.generator.base.util.StringUtils;
 import org.apache.freemarker.generator.base.util.Validate;
 
-import java.io.BufferedWriter;
 import java.io.File;
-import java.io.OutputStreamWriter;
 import java.io.Writer;
 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;
 
 /**
- * Provide the logic to define multiple transformations from the user input.
+ * Maps user-supplied templates (interactive, files, directories, paths) to a
+ * list of TemplateTransformation.
  */
 public class TemplateTransformationsBuilder {
 
     /** Interactive template */
-    private TemplateSource template;
+    private TemplateSource interactiveTemplate;
 
     /** List of templates and/or template directories to be rendered */
-    private final List<String> sources;
+    private final List<String> templateSources;
 
     /** Optional include patterns for resolving source templates or template 
directories */
     private final List<String> includes;
@@ -51,14 +48,14 @@ public class TemplateTransformationsBuilder {
     /** Optional exclude patterns for resolving source templates or template 
directories */
     private final List<String> excludes;
 
-    /** Optional output file or directory */
+    /** Optional output file(s) or directory - if none is defined everything 
is written to a user-supplied writer */
     private final List<String> outputs;
 
     /** Optional user-supplied writer */
     private Writer writer;
 
     private TemplateTransformationsBuilder() {
-        this.sources = new ArrayList<>();
+        this.templateSources = new ArrayList<>();
         this.includes = new ArrayList<>();
         this.excludes = new ArrayList<>();
         this.outputs = new ArrayList<>();
@@ -69,7 +66,7 @@ public class TemplateTransformationsBuilder {
         return new TemplateTransformationsBuilder();
     }
 
-    public TemplateTransformations build() {
+    public List<TemplateTransformation> build() {
         validate();
 
         final List<TemplateTransformation> result = new ArrayList<>();
@@ -78,32 +75,32 @@ public class TemplateTransformationsBuilder {
             final File outputFile = getOutputFile(0).orElse(null);
             result.add(resolveInteractiveTemplate(outputFile));
         } else {
-            for (int i = 0; i < sources.size(); i++) {
-                final String source = sources.get(i);
+            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));
             }
         }
 
-        return new TemplateTransformations(result);
+        return result;
     }
 
-    public TemplateTransformationsBuilder setTemplate(String name, String 
code) {
+    public TemplateTransformationsBuilder setInteractiveTemplate(String code) {
         if (StringUtils.isNotEmpty(code)) {
-            this.template = TemplateSource.fromCode(name, code);
+            this.interactiveTemplate = 
TemplateSource.fromCode(Location.INTERACTIVE, code);
         }
         return this;
     }
 
-    public TemplateTransformationsBuilder addSource(String source) {
+    public TemplateTransformationsBuilder addTemplateSource(String source) {
         if (StringUtils.isNotEmpty(source)) {
-            this.sources.add(source);
+            this.templateSources.add(source);
         }
         return this;
     }
 
-    public TemplateTransformationsBuilder addSources(Collection<String> 
sources) {
-        sources.forEach(this::addSource);
+    public TemplateTransformationsBuilder 
addTemplateSources(Collection<String> sources) {
+        sources.forEach(this::addTemplateSource);
         return this;
     }
 
@@ -114,13 +111,6 @@ public class TemplateTransformationsBuilder {
         return this;
     }
 
-    public TemplateTransformationsBuilder addIncludes(Collection<String> 
includes) {
-        if (includes != null) {
-            this.includes.addAll(includes);
-        }
-        return this;
-    }
-
     public TemplateTransformationsBuilder addExclude(String exclude) {
         if (StringUtils.isNotEmpty(exclude)) {
             this.excludes.add(exclude);
@@ -128,13 +118,6 @@ public class TemplateTransformationsBuilder {
         return this;
     }
 
-    public TemplateTransformationsBuilder addExcludes(Collection<String> 
excludes) {
-        if (excludes != null) {
-            this.excludes.addAll(excludes);
-        }
-        return this;
-    }
-
     public TemplateTransformationsBuilder addOutputs(Collection<String> 
outputs) {
         if (outputs != null) {
             this.outputs.addAll(outputs);
@@ -154,14 +137,9 @@ public class TemplateTransformationsBuilder {
         return this;
     }
 
-    public TemplateTransformationsBuilder setStdOut() {
-        this.writer = new NonClosableWriterWrapper(new BufferedWriter(new 
OutputStreamWriter(System.out, UTF_8)));
-        return this;
-    }
-
     private void validate() {
-        Validate.isTrue(template != null || !sources.isEmpty(), "No template 
was provided");
-        Validate.isTrue(template == null || sources.isEmpty(), "Interactive 
template does not support multiple sources");
+        Validate.isTrue(interactiveTemplate != null || 
!templateSources.isEmpty(), "Interactive template does not support multiple 
sources");
+        Validate.isTrue(interactiveTemplate == null || 
templateSources.isEmpty(), "No template was provided");
     }
 
     /**
@@ -172,9 +150,9 @@ public class TemplateTransformationsBuilder {
      * @return list of <code>TemplateTransformation</code>
      */
     private List<TemplateTransformation> resolve(String source, File output) {
-        if (isTemplateFile(source)) {
+        if (isTemplateFileFound(source)) {
             return resolveTemplateFile(source, output);
-        } else if (isTemplateDirectory(source)) {
+        } else if (isTemplateDirectoryFound(source)) {
             return resolveTemplateDirectory(source, output);
         } else if (isTemplatePath(source)) {
             return resolveTemplatePath(source, output);
@@ -214,7 +192,7 @@ public class TemplateTransformationsBuilder {
 
     private TemplateTransformation resolveInteractiveTemplate(File out) {
         final TemplateOutput templateOutput = templateOutput(out);
-        return new TemplateTransformation(template, templateOutput);
+        return new TemplateTransformation(interactiveTemplate, templateOutput);
     }
 
     private List<TemplateTransformation> resolveTemplateCode(String source, 
File out) {
@@ -244,7 +222,7 @@ public class TemplateTransformationsBuilder {
     }
 
     private boolean hasInteractiveTemplate() {
-        return template != null;
+        return interactiveTemplate != null;
     }
 
     private Optional<File> getOutputFile(int i) {
@@ -263,18 +241,18 @@ public class TemplateTransformationsBuilder {
         return new File(outputDirectory, relativeOutputFileName);
     }
 
-    private static boolean isTemplateFile(String source) {
+    private static boolean isTemplateFileFound(String source) {
         final File file = new File(source);
         return file.exists() && file.isFile();
     }
 
-    private static boolean isTemplateDirectory(String source) {
+    private static boolean isTemplateDirectoryFound(String source) {
         final File file = new File(source);
         return file.exists() && file.isDirectory();
     }
 
     private static boolean isTemplatePath(String source) {
-        return !isTemplateFile(source) && !isTemplateDirectory(source);
+        return !isTemplateFileFound(source) && 
!isTemplateDirectoryFound(source);
     }
 
     private static RecursiveFileSupplier templateFilesSupplier(String source, 
String include, String exclude) {
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsSupplier.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsSupplier.java
deleted file mode 100644
index ef06672..0000000
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsSupplier.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.freemarker.generator.base.template;
-
-import java.util.function.Supplier;
-
-public interface TemplateTransformationsSupplier extends 
Supplier<TemplateTransformations> {
-}
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/template/TemplateSourceFactoryTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/template/TemplateSourceFactoryTest.java
index 0124a98..2088e4b 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/template/TemplateSourceFactoryTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/template/TemplateSourceFactoryTest.java
@@ -39,7 +39,7 @@ public class TemplateSourceFactoryTest {
         final TemplateSource templateSource = 
TemplateSourceFactory.create(ANY_TEMPLATE_PATH);
 
         assertEquals(ANY_TEMPLATE_PATH, templateSource.getName());
-        assertEquals(Origin.PATH, templateSource.getOrigin());
+        assertEquals(Origin.TEMPLATE_LOADER, templateSource.getOrigin());
         assertEquals(ANY_TEMPLATE_PATH, templateSource.getPath());
         assertNull(templateSource.getCode());
     }
@@ -49,7 +49,7 @@ public class TemplateSourceFactoryTest {
         final TemplateSource templateSource = 
TemplateSourceFactory.create(ANY_FILE_NAME);
 
         assertEquals(ANY_FILE_NAME, templateSource.getName());
-        assertEquals(Origin.CODE, templateSource.getOrigin());
+        assertEquals(Origin.TEMPLATE_CODE, templateSource.getOrigin());
         assertNull(templateSource.getPath());
         assertFalse(templateSource.getCode().isEmpty());
     }
@@ -59,7 +59,7 @@ public class TemplateSourceFactoryTest {
         final TemplateSource templateSource = 
TemplateSourceFactory.create(ANY_ENV_URI);
 
         assertEquals(ANY_ENV_VARIABLE, templateSource.getName());
-        assertEquals(Origin.CODE, templateSource.getOrigin());
+        assertEquals(Origin.TEMPLATE_CODE, templateSource.getOrigin());
         assertNull(templateSource.getPath());
         assertFalse(templateSource.getCode().isEmpty());
     }
@@ -70,7 +70,7 @@ public class TemplateSourceFactoryTest {
         final TemplateSource templateSource = 
TemplateSourceFactory.create(ANY_URL);
 
         assertNotNull(templateSource.getName());
-        assertEquals(Origin.CODE, templateSource.getOrigin());
+        assertEquals(Origin.TEMPLATE_CODE, templateSource.getOrigin());
         assertNull(templateSource.getPath());
         assertFalse(templateSource.getCode().isEmpty());
     }
@@ -81,7 +81,7 @@ public class TemplateSourceFactoryTest {
         final TemplateSource templateSource = 
TemplateSourceFactory.create("info=" + ANY_URL);
 
         assertEquals("info", templateSource.getName());
-        assertEquals(Origin.CODE, templateSource.getOrigin());
+        assertEquals(Origin.TEMPLATE_CODE, templateSource.getOrigin());
         assertNull(templateSource.getPath());
         assertFalse(templateSource.getCode().isEmpty());
     }
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 0c082a0..1d86574 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
@@ -20,13 +20,19 @@ import 
org.apache.freemarker.generator.base.FreeMarkerConstants.Location;
 import org.apache.freemarker.generator.base.template.TemplateOutput;
 import org.apache.freemarker.generator.base.template.TemplateSource;
 import org.apache.freemarker.generator.base.template.TemplateSource.Origin;
-import org.apache.freemarker.generator.base.template.TemplateTransformations;
+import org.apache.freemarker.generator.base.template.TemplateTransformation;
 import 
org.apache.freemarker.generator.base.template.TemplateTransformationsBuilder;
+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;
+import java.util.List;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -42,9 +48,9 @@ public class TemplateTransformationsBuilderTest {
 
     @Test
     public void shouldCreateFromInteractiveTemplate() {
-        final TemplateTransformations transformations = builder()
-                .setTemplate(Location.INTERACTIVE, "Hello World")
-                .setStdOut()
+        final List<TemplateTransformation> transformations = builder()
+                .setInteractiveTemplate("Hello World")
+                .setWriter(stdoutWriter())
                 .build();
 
         assertEquals(1, transformations.size());
@@ -53,7 +59,7 @@ public class TemplateTransformationsBuilderTest {
         final TemplateOutput templateOutput = 
transformations.get(0).getTemplateOutput();
 
         assertEquals(Location.INTERACTIVE, templateSource.getName());
-        assertEquals(Origin.CODE, templateSource.getOrigin());
+        assertEquals(Origin.TEMPLATE_CODE, templateSource.getOrigin());
         assertEquals("Hello World", templateSource.getCode());
         assertNull(templateSource.getPath());
         assertEquals(StandardCharsets.UTF_8, templateSource.getEncoding());
@@ -65,20 +71,19 @@ public class TemplateTransformationsBuilderTest {
     @Test(expected = IllegalArgumentException.class)
     public void 
shouldThrowIllegalArgumentExceptionWheMixingInteractiveTemplateWithSources() {
         builder()
-                .setTemplate(Location.INTERACTIVE, "Hello World")
-                .addSource(ANY_TEMPLATE_FILE_NAME)
-                .setStdOut()
+                .setInteractiveTemplate("Hello World")
+                .addTemplateSource(ANY_TEMPLATE_FILE_NAME)
+                .setWriter(stdoutWriter())
                 .build();
     }
 
-
     // === Template File ====================================================
 
     @Test
     public void shouldCreateFromTemplateFile() {
-        final TemplateTransformations transformations = builder()
-                .addSource(ANY_TEMPLATE_FILE_NAME)
-                .setStdOut()
+        final List<TemplateTransformation> transformations = builder()
+                .addTemplateSource(ANY_TEMPLATE_FILE_NAME)
+                .setWriter(stdoutWriter())
                 .build();
 
         assertEquals(1, transformations.size());
@@ -87,7 +92,7 @@ public class TemplateTransformationsBuilderTest {
         final TemplateOutput templateOutput = 
transformations.get(0).getTemplateOutput();
 
         assertNotNull(templateSource.getName());
-        assertEquals(Origin.CODE, templateSource.getOrigin());
+        assertEquals(Origin.TEMPLATE_CODE, templateSource.getOrigin());
         assertNotNull(templateSource.getCode());
         assertNull(templateSource.getPath());
         assertEquals(StandardCharsets.UTF_8, templateSource.getEncoding());
@@ -98,10 +103,10 @@ public class TemplateTransformationsBuilderTest {
 
     @Test
     public void shouldCreateFromMultipleTemplateFiles() {
-        final TemplateTransformations transformations = builder()
-                .addSource(ANY_TEMPLATE_FILE_NAME)
+        final List<TemplateTransformation> transformations = builder()
+                .addTemplateSource(ANY_TEMPLATE_FILE_NAME)
                 .addOutput("foo/first.out")
-                .addSource(OTHER_TEMPLATE_FILE_NAME)
+                .addTemplateSource(OTHER_TEMPLATE_FILE_NAME)
                 .addOutput("foo/second.out")
                 .build();
 
@@ -114,9 +119,9 @@ public class TemplateTransformationsBuilderTest {
 
     @Test
     public void shouldCreateFromTemplatePath() {
-        final TemplateTransformations transformations = builder()
-                .addSource(ANY_TEMPLATE_PATH)
-                .setStdOut()
+        final List<TemplateTransformation> transformations = builder()
+                .addTemplateSource(ANY_TEMPLATE_PATH)
+                .setWriter(stdoutWriter())
                 .build();
 
         assertEquals(1, transformations.size());
@@ -125,7 +130,7 @@ public class TemplateTransformationsBuilderTest {
         final TemplateOutput templateOutput = 
transformations.get(0).getTemplateOutput();
 
         assertNotNull(templateSource.getName());
-        assertEquals(Origin.PATH, templateSource.getOrigin());
+        assertEquals(Origin.TEMPLATE_LOADER, templateSource.getOrigin());
         assertNull(templateSource.getCode());
         assertNotNull(templateSource.getPath());
         assertEquals(StandardCharsets.UTF_8, templateSource.getEncoding());
@@ -138,9 +143,9 @@ public class TemplateTransformationsBuilderTest {
 
     @Test
     public void shouldCreateFromTemplateDirectory() {
-        final TemplateTransformations transformations = builder()
-                .addSource(ANY_TEMPLATE_DIRECTORY_NAME)
-                .setStdOut()
+        final List<TemplateTransformation> transformations = builder()
+                .addTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME)
+                .setWriter(stdoutWriter())
                 .build();
 
         assertEquals(2, transformations.size());
@@ -150,8 +155,8 @@ public class TemplateTransformationsBuilderTest {
 
     @Test
     public void shouldCreateFromTemplateDirectoryWithOutputDirectory() {
-        final TemplateTransformations transformations = builder()
-                .addSource(ANY_TEMPLATE_DIRECTORY_NAME)
+        final List<TemplateTransformation> transformations = builder()
+                .addTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME)
                 .addOutput("/foo")
                 .build();
 
@@ -162,10 +167,10 @@ public class TemplateTransformationsBuilderTest {
 
     @Test
     public void shouldCreateFromTemplateDirectoryWithInclude() {
-        final TemplateTransformations transformations = builder()
-                .addSource(ANY_TEMPLATE_DIRECTORY_NAME)
+        final List<TemplateTransformation> transformations = builder()
+                .addTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME)
                 .addInclude("*.properties")
-                .setStdOut()
+                .setWriter(stdoutWriter())
                 .build();
 
         assertEquals(1, transformations.size());
@@ -174,10 +179,10 @@ public class TemplateTransformationsBuilderTest {
 
     @Test
     public void shouldCreateFromTemplateDirectoryWithExclude() {
-        final TemplateTransformations transformations = builder()
-                .addSource(ANY_TEMPLATE_DIRECTORY_NAME)
+        final List<TemplateTransformation> transformations = builder()
+                .addTemplateSource(ANY_TEMPLATE_DIRECTORY_NAME)
                 .addExclude("*.ftl")
-                .setStdOut()
+                .setWriter(stdoutWriter())
                 .build();
 
         assertEquals(1, transformations.size());
@@ -188,4 +193,8 @@ public class TemplateTransformationsBuilderTest {
         return TemplateTransformationsBuilder
                 .builder();
     }
+
+    private Writer stdoutWriter() {
+        return new NonClosableWriterWrapper(new BufferedWriter(new 
OutputStreamWriter(System.out, UTF_8)));
+    }
 }
diff --git 
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
 
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
index b6e6fd0..a7bc21d 100644
--- 
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
+++ 
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
@@ -17,14 +17,14 @@
 package org.apache.freemarker.generator.cli.config;
 
 import freemarker.cache.TemplateLoader;
-import org.apache.freemarker.generator.base.FreeMarkerConstants.Location;
 import org.apache.freemarker.generator.base.datasource.DataSourcesSupplier;
 import org.apache.freemarker.generator.base.file.PropertiesClassPathSupplier;
 import org.apache.freemarker.generator.base.file.PropertiesFileSystemSupplier;
 import org.apache.freemarker.generator.base.file.PropertiesSupplier;
+import org.apache.freemarker.generator.base.template.TemplateTransformation;
 import 
org.apache.freemarker.generator.base.template.TemplateTransformationsBuilder;
-import 
org.apache.freemarker.generator.base.template.TemplateTransformationsSupplier;
 
+import java.util.List;
 import java.util.Map;
 import java.util.function.Supplier;
 
@@ -68,10 +68,10 @@ public class Suppliers {
         return settings::getUserParameters;
     }
 
-    public static TemplateTransformationsSupplier 
templateTransformationsSupplier(Settings settings) {
+    public static Supplier<List<TemplateTransformation>> 
templateTransformationsSupplier(Settings settings) {
         return () -> TemplateTransformationsBuilder.builder()
-                .setTemplate(Location.INTERACTIVE, 
settings.getInteractiveTemplate())
-                .addSources(settings.getTemplates())
+                .setInteractiveTemplate(settings.getInteractiveTemplate())
+                .addTemplateSources(settings.getTemplates())
                 .addInclude(settings.getTemplateFileIncludePattern())
                 .addExclude(settings.getTemplateFileExcludePattern())
                 .addOutputs(settings.getOutputs())
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 3842508..cc20d76 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
@@ -27,7 +27,6 @@ import 
org.apache.freemarker.generator.base.datasource.DataSources;
 import org.apache.freemarker.generator.base.template.TemplateOutput;
 import org.apache.freemarker.generator.base.template.TemplateSource;
 import org.apache.freemarker.generator.base.template.TemplateTransformation;
-import org.apache.freemarker.generator.base.template.TemplateTransformations;
 import org.apache.freemarker.generator.base.util.UriUtils;
 import org.apache.freemarker.generator.cli.config.Settings;
 
@@ -70,7 +69,7 @@ public class FreeMarkerTask implements Callable<Integer> {
     private final Supplier<Map<String, Object>> dataModelsSupplier;
     private final Supplier<Map<String, Object>> parameterModelSupplier;
     private final Supplier<Configuration> configurationSupplier;
-    private final Supplier<TemplateTransformations> 
templateTransformationsSupplier;
+    private final Supplier<List<TemplateTransformation>> 
templateTransformationsSupplier;
 
 
     public FreeMarkerTask(Settings settings) {
@@ -86,7 +85,7 @@ public class FreeMarkerTask implements Callable<Integer> {
 
     public FreeMarkerTask(Settings settings,
                           Supplier<Configuration> configurationSupplier,
-                          Supplier<TemplateTransformations> 
templateTransformationsSupplier,
+                          Supplier<List<TemplateTransformation>> 
templateTransformationsSupplier,
                           Supplier<List<DataSource>> dataSourcesSupplier,
                           Supplier<Map<String, Object>> dataModelsSupplier,
                           Supplier<Map<String, Object>> parameterModelSupplier,
@@ -104,10 +103,10 @@ public class FreeMarkerTask implements Callable<Integer> {
     public Integer call() {
         try {
             final Configuration configuration = configurationSupplier.get();
-            final TemplateTransformations templateTransformations = 
templateTransformationsSupplier.get();
+            final List<TemplateTransformation> templateTransformations = 
templateTransformationsSupplier.get();
             final DataSources dataSources = dataSources(settings, 
dataSourcesSupplier);
             final Map<String, Object> dataModel = dataModel(dataSources, 
parameterModelSupplier, dataModelsSupplier, toolsSupplier);
-            templateTransformations.getList().forEach(t -> 
process(configuration, t, dataModel));
+            templateTransformations.forEach(t -> process(configuration, t, 
dataModel));
             return SUCCESS;
         } catch (RuntimeException e) {
             throw new RuntimeException("Failed to process templates", e);
@@ -177,16 +176,16 @@ public class FreeMarkerTask implements Callable<Integer> {
      */
     private static Template template(Configuration configuration, 
TemplateSource templateSource) {
         switch (templateSource.getOrigin()) {
-            case PATH:
-                return fromTemplatePath(configuration, templateSource);
-            case CODE:
+            case TEMPLATE_LOADER:
+                return fromTemplateLoader(configuration, templateSource);
+            case TEMPLATE_CODE:
                 return fromTemplateCode(configuration, templateSource);
             default:
                 throw new IllegalArgumentException("Don't know how to handle: 
" + templateSource.getOrigin());
         }
     }
 
-    private static Template fromTemplatePath(Configuration configuration, 
TemplateSource templateSource) {
+    private static Template fromTemplateLoader(Configuration configuration, 
TemplateSource templateSource) {
         final String path = templateSource.getPath();
         try {
             return configuration.getTemplate(path);

Reply via email to