This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a commit to branch FREEMARKER-146
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git


The following commit(s) were added to refs/heads/FREEMARKER-146 by this push:
     new fff73ae  FREEMARKER-146 Cleanly separate example templates and data 
from user-supplied content
fff73ae is described below

commit fff73aec15e7cde61f07bce89640cbfe0ae413da
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Sat Jun 20 21:21:08 2020 +0200

    FREEMARKER-146 Cleanly separate example templates and data from 
user-supplied content
---
 freemarker-generator-cli/README.md                 | 20 ++-----
 freemarker-generator-cli/run-examples.sh           |  2 +-
 .../freemarker/generator/cli/config/Settings.java  | 30 +++++------
 .../freemarker/generator/cli/config/Suppliers.java |  2 +-
 .../src/main/scripts/run-examples.sh               |  2 +-
 .../freemarker/generator/cli/ExamplesTest.java     |  2 +-
 .../freemarker/generator/cli/ManualTest.java       |  5 +-
 .../generator/cli/config/SettingsTest.java         |  4 +-
 .../templates/csv/csv/transform.ftl                | 20 ++-----
 .../templates/csv/html/transform.ftl               | 10 +---
 .../templates/csv/md/transform.ftl                 |  9 +---
 .../generator/tools/commonscsv/CommonsCSVTool.java | 63 +++++++++++++++++++---
 .../generator/tools/freemarker/FreeMarkerTool.java |  2 +-
 .../generator/tools/system/SystemTool.java         |  4 +-
 14 files changed, 90 insertions(+), 85 deletions(-)

diff --git a/freemarker-generator-cli/README.md 
b/freemarker-generator-cli/README.md
index 7f7a709..3060216 100644
--- a/freemarker-generator-cli/README.md
+++ b/freemarker-generator-cli/README.md
@@ -894,14 +894,14 @@ While this looks small and tidy there are some nifty 
features
 
 Sometimes you have a CSV file which is not quite right - you need to change 
the format. Lets have a look how `freemarker-cli` can help
 
-> bin/freemarker-cli -PCVS_IN_DELIMITER=COMMA -PCSV_OUT_DELIMITER=PIPE -t 
templates/csv/csv/transform.ftl ./examples/data/csv/contract.csv 
+> bin/freemarker-cli -DCVS_IN_DELIMITER=COMMA -DCSV_OUT_DELIMITER=PIPE -t 
templates/csv/csv/transform.ftl ./examples/data/csv/contract.csv 
 
 renders the following template
 
 ```text
 <#ftl output_format="plainText" strip_text="true">
-<#assign csvParser = createCsvParser(DataSources.get(0))>
-<#assign csvPrinter = createCsvPrinter()>
+<#assign csvParser = CSVTool.parse(DataSources.get(0))>
+<#assign csvPrinter = CSVTool.printer(SystemTool.writer)>
 <#--
     Print each record directly to the underyling writer without materializing 
the CSV in memory.
     FreeMarker and CSV output are out of sync but millions of records can 
processed without
@@ -912,20 +912,6 @@ renders the following template
         ${csvPrinter.printRecord(record)}
     </#list>
 </#compress>
-
-<#function createCsvParser dataSource>
-    <#assign initialCvsInFormat = CSVTool.formats[CSV_IN_FORMAT!"DEFAULT"]>
-    <#assign csvInDelimiter = 
CSVTool.toDelimiter(CSV_IN_DELIMITER!initialCvsInFormat.getDelimiter())>
-    <#assign cvsInFormat = initialCvsInFormat.withDelimiter(csvInDelimiter)>
-    <#return CSVTool.parse(dataSource, cvsInFormat)>
-</#function>
-
-<#function createCsvPrinter>
-    <#assign initialCvsOutFormat = CSVTool.formats[CSV_OUT_FORMAT!"DEFAULT"]>
-    <#assign csvOutDelimiter = 
CSVTool.toDelimiter(CSV_OUT_DELIMITER!initialCvsOutFormat.getDelimiter())>
-    <#assign cvsOutFormat = initialCvsOutFormat.withDelimiter(csvOutDelimiter)>
-    <#return CSVTool.printer(cvsOutFormat, SystemTool.writer)>
-</#function>
 ```
 
 and generates the following output
diff --git a/freemarker-generator-cli/run-examples.sh 
b/freemarker-generator-cli/run-examples.sh
index 6b68e16..37e6d4e 100755
--- a/freemarker-generator-cli/run-examples.sh
+++ b/freemarker-generator-cli/run-examples.sh
@@ -106,7 +106,7 @@ fi
 #############################################################################
 
 echo "examples/templates/dataframe/example.ftl"
-$FREEMARKER_CMD -DCSV_TOOL_DELIMITER=SEMICOLON -DCSV_TOOL_HEADERS=true -t 
examples/templates/dataframe/example.ftl examples/data/csv/dataframe.csv > 
target/out/dataframe.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -DCSV_IN_DELIMITER=SEMICOLON -DCSV_IN_WITH_HEADER=true -t 
examples/templates/dataframe/example.ftl examples/data/csv/dataframe.csv > 
target/out/dataframe.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 #############################################################################
 # Grok
diff --git 
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java
 
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java
index 89e48bf..16dc76f 100644
--- 
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java
+++ 
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java
@@ -96,10 +96,10 @@ public class Settings {
     private final List<String> dataModels;
 
     /** User-supplied parameters */
-    private final Map<String, Object> parameters;
+    private final Map<String, Object> userParameters;
 
     /** User-supplied system properties */
-    private final Properties systemProperties;
+    private final Properties userSystemProperties;
 
     /** The writer used for rendering templates, e.g. stdout or a file writer 
*/
     private final Writer writer;
@@ -122,8 +122,8 @@ public class Settings {
             boolean isReadFromStdin,
             List<String> dataSources,
             List<String> dataModels,
-            Map<String, Object> parameters,
-            Properties systemProperties,
+            Map<String, Object> userParameters,
+            Properties userSystemProperties,
             Writer writer) {
         if ((templates == null || templates.isEmpty()) && 
isEmpty(interactiveTemplate)) {
             throw new IllegalArgumentException("Either 'template' or 
'interactiveTemplate' must be provided");
@@ -145,8 +145,8 @@ public class Settings {
         this.isReadFromStdin = isReadFromStdin;
         this.dataSources = requireNonNull(dataSources);
         this.dataModels = requireNonNull(dataModels);
-        this.parameters = requireNonNull(parameters);
-        this.systemProperties = requireNonNull(systemProperties);
+        this.userParameters = requireNonNull(userParameters);
+        this.userSystemProperties = requireNonNull(userSystemProperties);
         this.configuration = requireNonNull(configuration);
         this.writer = writer != null ? new NonClosableWriterWrapper(writer) : 
null;
     }
@@ -170,7 +170,7 @@ public class Settings {
     public List<String> getTemplates() {
         return templates;
     }
-    
+
     public String getInteractiveTemplate() {
         return interactiveTemplate;
     }
@@ -227,12 +227,12 @@ public class Settings {
         return dataModels;
     }
 
-    public Map<String, Object> getParameters() {
-        return parameters;
+    public Map<String, Object> getUserParameters() {
+        return userParameters;
     }
 
-    public Properties getSystemProperties() {
-        return systemProperties;
+    public Properties getUserSystemProperties() {
+        return userSystemProperties;
     }
 
     public boolean hasOutputFile() {
@@ -254,8 +254,8 @@ public class Settings {
         result.put(Model.FREEMARKER_CLI_ARGS, getArgs());
         result.put(Model.FREEMARKER_LOCALE, getLocale());
         result.put(Model.FREEMARKER_TEMPLATE_DIRECTORIES, 
getTemplateDirectories());
-        result.put(Model.FREEMARKER_USER_PARAMETERS, getParameters());
-        result.put(Model.FREEMARKER_USER_SYSTEM_PROPERTIES, 
getSystemProperties());
+        result.put(Model.FREEMARKER_USER_PARAMETERS, getUserParameters());
+        result.put(Model.FREEMARKER_USER_SYSTEM_PROPERTIES, 
getUserSystemProperties());
         result.put(Model.FREEMARKER_WRITER, getWriter());
         return result;
     }
@@ -283,8 +283,8 @@ public class Settings {
                 ", locale=" + locale +
                 ", isReadFromStdin=" + isReadFromStdin +
                 ", dataSources=" + dataSources +
-                ", properties=" + parameters +
-                ", systemProperties=" + systemProperties +
+                ", userParameters=" + userParameters +
+                ", userSystemProperties=" + userSystemProperties +
                 '}';
     }
 
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 7151600..54e0758 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
@@ -64,7 +64,7 @@ public class Suppliers {
     }
 
     public static Supplier<Map<String, Object>> parameterSupplier(Settings 
settings) {
-        return settings::getParameters;
+        return settings::getUserParameters;
     }
 
     public static TemplateTransformationsSupplier 
templateTransformationsSupplier(Settings settings) {
diff --git a/freemarker-generator-cli/src/main/scripts/run-examples.sh 
b/freemarker-generator-cli/src/main/scripts/run-examples.sh
index e65b6d8..c81cb71 100755
--- a/freemarker-generator-cli/src/main/scripts/run-examples.sh
+++ b/freemarker-generator-cli/src/main/scripts/run-examples.sh
@@ -106,7 +106,7 @@ fi
 #############################################################################
 
 echo "examples/templates/dataframe/example.ftl"
-$FREEMARKER_CMD -DCSV_TOOL_DELIMITER=SEMICOLON -DCSV_TOOL_HEADERS=true -t 
examples/templates/dataframe/example.ftl examples/data/csv/dataframe.csv > 
target/out/dataframe.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -DCSV_IN_DELIMITER=SEMICOLON -DCSV_IN_WITH_HEADER=true -t 
examples/templates/dataframe/example.ftl examples/data/csv/dataframe.csv > 
target/out/dataframe.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 #############################################################################
 # Grok
diff --git 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java
 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java
index a9dff72..45a027d 100644
--- 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java
+++ 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java
@@ -105,7 +105,7 @@ public class ExamplesTest extends AbstractMainTest {
 
     @Test
     public void shouldRunDataFrameExamples() throws IOException {
-        assertValid(execute("-DCSV_TOOL_DELIMITER=SEMICOLON 
-DCSV_TOOL_HEADERS=true -t examples/templates/dataframe/example.ftl 
examples/data/csv/dataframe.csv"));
+        assertValid(execute("-DCSV_IN_DELIMITER=SEMICOLON 
-DCSV_IN_WITH_HEADER=true -t examples/templates/dataframe/example.ftl 
examples/data/csv/dataframe.csv"));
     }
 
     @Test
diff --git 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
index fa33e18..09c1f79 100644
--- 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
+++ 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
@@ -24,9 +24,8 @@ import java.util.Arrays;
 public class ManualTest {
 
     private static final String SPACE = " ";
-    // private static final String CMD = "-DCSV_TOOL_DELIMITER=SEMICOLON 
-DCSV_TOOL_HEADERS=true -t examples/templates/dataframe/example.ftl 
https://raw.githubusercontent.com/nRo/DataFrame/master/src/test/resources/users.csv";;
-    private static final String CMD = "-PCSV_OUT_FORMAT=EXCEL -t 
templates/csv/csv/transform.ftl examples/data/csv/contract.csv";
-
+    // private static final String CMD = "-DCSV_IN_DELIMITER=SEMICOLON 
-DCSV_IN_WITH_HEADER=true -t examples/templates/dataframe/example.ftl 
https://raw.githubusercontent.com/nRo/DataFrame/master/src/test/resources/users.csv";;
+    private static final String CMD = "-DCSV_IN_FORMAT=DEFAULT 
-DCSV_OUT_FORMAT=INFORMIX_UNLOAD -t templates/csv/csv/transform.ftl 
examples/data/csv/contract.csv";
 
     public static void main(String[] args) {
         Main.execute(toArgs(CMD));
diff --git 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/SettingsTest.java
 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/SettingsTest.java
index 5aa6681..90c7696 100644
--- 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/SettingsTest.java
+++ 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/SettingsTest.java
@@ -57,8 +57,8 @@ public class SettingsTest {
         assertEquals(ANY_OUTPUT_FILE, settings.getOutput().getName());
         assertEquals(ANY_TEMPLATE_NAME, settings.getTemplates().get(0));
         assertNotNull(settings.getDataSources());
-        assertNotNull(settings.getParameters());
-        assertNotNull(settings.getSystemProperties());
+        assertNotNull(settings.getUserParameters());
+        assertNotNull(settings.getUserSystemProperties());
         assertTrue(settings.isReadFromStdin());
         assertTrue(settings.isInteractiveTemplate());
         assertTrue(settings.isVerbose());
diff --git a/freemarker-generator-cli/templates/csv/csv/transform.ftl 
b/freemarker-generator-cli/templates/csv/csv/transform.ftl
index 33988e1..587ebfe 100644
--- a/freemarker-generator-cli/templates/csv/csv/transform.ftl
+++ b/freemarker-generator-cli/templates/csv/csv/transform.ftl
@@ -15,8 +15,8 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<#assign csvParser = createCsvParser(DataSources.get(0))>
-<#assign csvPrinter = createCsvPrinter()>
+<#assign csvParser = CSVTool.parse(DataSources.get(0))>
+<#assign csvPrinter = CSVTool.printer(SystemTool.writer)>
 <#--
     Print each record directly to the underyling writer without materializing 
the CSV in memory.
     FreeMarker and CSV output are out of sync but millions of records can 
processed without
@@ -26,18 +26,4 @@
     <#list csvParser.iterator() as record>
         ${csvPrinter.printRecord(record)}
     </#list>
-</#compress>
-
-<#function createCsvParser dataSource>
-    <#assign initialCvsInFormat = 
CSVTool.formats[CSV_IN_FORMAT!"DEFAULT"].withHeader()>
-    <#assign csvInDelimiter = 
CSVTool.toDelimiter(CSV_IN_DELIMITER!initialCvsInFormat.getDelimiter())>
-    <#assign cvsInFormat = initialCvsInFormat.withDelimiter(csvInDelimiter)>
-    <#return CSVTool.parse(dataSource, cvsInFormat)>
-</#function>
-
-<#function createCsvPrinter>
-    <#assign initialCvsOutFormat = CSVTool.formats[CSV_OUT_FORMAT!"DEFAULT"]>
-    <#assign csvOutDelimiter = 
CSVTool.toDelimiter(CSV_OUT_DELIMITER!initialCvsOutFormat.getDelimiter())>
-    <#assign cvsOutFormat = initialCvsOutFormat.withDelimiter(csvOutDelimiter)>
-    <#return CSVTool.printer(cvsOutFormat, SystemTool.writer)>
-</#function>
\ No newline at end of file
+</#compress>
\ No newline at end of file
diff --git a/freemarker-generator-cli/templates/csv/html/transform.ftl 
b/freemarker-generator-cli/templates/csv/html/transform.ftl
index d5b5515..3e3c2b8 100644
--- a/freemarker-generator-cli/templates/csv/html/transform.ftl
+++ b/freemarker-generator-cli/templates/csv/html/transform.ftl
@@ -17,7 +17,8 @@
 -->
 <#assign dataSource = DataSources.get(0)>
 <#assign name = dataSource.name>
-<#assign csvParser = createCsvParser(DataSources.get(0))>
+<#assign csvParser = CSVTool.parse(dataSource)>
+<#assign csvPrinter = CSVTool.printer(SystemTool.writer)>
 <#assign csvHeaders = csvParser.getHeaderNames()>
 <#--------------------------------------------------------------------------->
 <!DOCTYPE html>
@@ -53,10 +54,3 @@
         </#list>
     </tr>
 </#macro>
-<#--------------------------------------------------------------------------->
-<#function createCsvParser dataSource>
-    <#assign initialCvsInFormat = 
CSVTool.formats[CSV_IN_FORMAT!"DEFAULT"].withHeader()>
-    <#assign csvInDelimiter = 
CSVTool.toDelimiter(CSV_IN_DELIMITER!initialCvsInFormat.getDelimiter())>
-    <#assign cvsInFormat = initialCvsInFormat.withDelimiter(csvInDelimiter)>
-    <#return CSVTool.parse(dataSource, cvsInFormat)>
-</#function>
\ No newline at end of file
diff --git a/freemarker-generator-cli/templates/csv/md/transform.ftl 
b/freemarker-generator-cli/templates/csv/md/transform.ftl
index 303552c..ff2e09a 100644
--- a/freemarker-generator-cli/templates/csv/md/transform.ftl
+++ b/freemarker-generator-cli/templates/csv/md/transform.ftl
@@ -15,7 +15,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<#assign csvParser = createCsvParser(DataSources.get(0))>
+<#assign csvParser = CSVTool.parse(DataSources.get(0))>
 <#assign csvHeaders = csvParser.getHeaderMap()?keys>
 <#assign csvRecords = csvParser.records>
 <#--------------------------------------------------------------------------->
@@ -34,10 +34,3 @@
     | ${column.iterator()?join(" | ", "")} |
     </#list>
 </#macro>
-<#--------------------------------------------------------------------------->
-<#function createCsvParser dataSource>
-    <#assign initialCvsInFormat = 
CSVTool.formats[CSV_IN_FORMAT!"DEFAULT"].withHeader()>
-    <#assign csvInDelimiter = 
CSVTool.toDelimiter(CSV_IN_DELIMITER!initialCvsInFormat.getDelimiter())>
-    <#assign cvsInFormat = initialCvsInFormat.withDelimiter(csvInDelimiter)>
-    <#return CSVTool.parse(dataSource, cvsInFormat)>
-</#function>
\ No newline at end of file
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 296f903..f315669 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
@@ -45,10 +45,8 @@ import static org.apache.commons.io.IOUtils.toInputStream;
 
 public class CommonsCSVTool {
 
-    private final CSVFormat defaulCSVFormat = csvFormat();
-
     public CSVParser parse(DataSource dataSource) {
-        return parse(dataSource, defaulCSVFormat);
+        return parse(dataSource, defaultCSVInputFormat());
     }
 
     public CSVParser parse(DataSource dataSource, CSVFormat format) {
@@ -68,7 +66,7 @@ public class CommonsCSVTool {
     }
 
     public CSVParser parse(String csv) {
-        return parse(csv, defaulCSVFormat);
+        return parse(csv, defaultCSVInputFormat());
     }
 
     public CSVParser parse(String csv, CSVFormat format) {
@@ -91,6 +89,18 @@ public class CommonsCSVTool {
     /**
      * Get a CSVPrinter using the FreeMarker's writer instance.
      *
+     * @param writer Writer to receive the CSV output
+     * @return CSVPrinter instance
+     * @throws IOException thrown if the parameters of the format are 
inconsistent or if either out or format are null.
+     */
+    public CSVPrinter printer(Writer writer) throws IOException {
+        // We do not close the CSVPrinter but the underlying writer at the of 
processing
+        return new CSVPrinter(writer, defaultCSVOutputFormat());
+    }
+
+    /**
+     * Get a CSVPrinter using the FreeMarker's writer instance.
+     *
      * @param csvFormat CSV format to use for writing records
      * @param writer    Writer to receive the CSV output
      * @return CSVPrinter instance
@@ -262,16 +272,53 @@ public class CommonsCSVTool {
         return result;
     }
 
-    private CSVFormat csvFormat() {
+    /**
+     * Provides a CSV default input format controlled by the following system 
properties:
+     * <ul>
+     *     <li>CSV_IN_FORMAT</li>
+     *     <li>CSV_IN_DELIMITER</li>
+     *     <li>CSV_IN_WITH_HEADER</li>
+     * </ul>
+     *
+     * @return CSV format
+     */
+    private CSVFormat defaultCSVInputFormat() {
+
+        CSVFormat csvFormat = 
getFormats().getOrDefault(System.getProperty("CSV_IN_FORMAT"), 
CSVFormat.DEFAULT);
+
+        final String delimiter = System.getProperty("CSV_IN_DELIMITER");
+        if (StringUtils.isNotEmpty(delimiter)) {
+            csvFormat = csvFormat.withDelimiter(toDelimiter(delimiter));
+        }
+
+        final boolean withHeader = 
parseBoolean(System.getProperty("CSV_IN_WITH_HEADER", 
Boolean.toString(!csvFormat.getSkipHeaderRecord())));
+        if (withHeader) {
+            csvFormat = csvFormat.withHeader();
+        }
+
+        return csvFormat;
+    }
+
+    /**
+     * Provides a CSV default output format controlled by the following system 
properties:
+     * <ul>
+     *     <li>CSV_OUT_FORMAT</li>
+     *     <li>CSV_OUT_DELIMITER</li>
+     *     <li>CSV_OUT_WITH_HEADER</li>
+     * </ul>
+     *
+     * @return CSV format
+     */
+    private CSVFormat defaultCSVOutputFormat() {
 
-        CSVFormat csvFormat = 
CSVFormat.valueOf(System.getProperty("CSV_TOOL_FORMAT", "Default"));
+        CSVFormat csvFormat = 
getFormats().getOrDefault(System.getProperty("CSV_OUT_FORMAT"), 
CSVFormat.DEFAULT);
 
-        final String delimiter = System.getProperty("CSV_TOOL_DELIMITER");
+        final String delimiter = System.getProperty("CSV_OUT_DELIMITER");
         if (StringUtils.isNotEmpty(delimiter)) {
             csvFormat = csvFormat.withDelimiter(toDelimiter(delimiter));
         }
 
-        final boolean withHeader = 
parseBoolean(System.getProperty("CSV_TOOL_HEADERS", 
Boolean.toString(!csvFormat.getSkipHeaderRecord())));
+        final boolean withHeader = 
parseBoolean(System.getProperty("CSV_OUT_WITH_HEADER", 
Boolean.toString(!csvFormat.getSkipHeaderRecord())));
         if (withHeader) {
             csvFormat = csvFormat.withHeader();
         }
diff --git 
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerTool.java
 
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerTool.java
index 1150ccb..45b43e6 100644
--- 
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerTool.java
+++ 
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerTool.java
@@ -36,7 +36,7 @@ public class FreeMarkerTool {
 
     public synchronized BeansWrapper getBeansWrapper() {
         if (beansWrapper == null) {
-            beansWrapper = new 
BeansWrapperBuilder(Configuration.VERSION_2_3_29).build();
+            beansWrapper = new 
BeansWrapperBuilder(Configuration.VERSION_2_3_30).build();
         }
         return beansWrapper;
     }
diff --git 
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java
 
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java
index dfade40..3f038f7 100644
--- 
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java
+++ 
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java
@@ -38,7 +38,7 @@ import static 
org.apache.freemarker.generator.base.FreeMarkerConstants.Model.FRE
 
 /**
  * Provides system related functionality, e.g. accessing environment variables,
- * system properties, commandl-line arguments, hostname, FreeMarker writer, 
etc.
+ * system properties, command-line arguments, hostname, FreeMarker writer, etc.
  */
 @SuppressWarnings("unchecked")
 public class SystemTool {
@@ -145,7 +145,7 @@ public class SystemTool {
      * environment variables.
      *
      * @param name name of the configuration parameter
-     * @param def default value
+     * @param def  default value
      * @return value of null
      */
     public String getString(String name, String def) {

Reply via email to