You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by sg...@apache.org on 2020/02/07 11:27:40 UTC

[freemarker-generator] branch FREEMARKER-129 updated (ba052b8 -> 3106948)

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

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


    from ba052b8  FREEMARKER-129 Move the tools into "freemarker-generator-tools"
     new ab7ad65  FREEMARKER-129 Cleanup source code
     new 846145f  FREEMARKER-129 Cleanup source code
     new 3106948  FREEMARKER-129 Minor refactorings

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 freemarker-generator-base/pom.xml                  |  4 +-
 .../base/activation/ByteArrayDataSource.java       |  4 ++
 .../base/activation/StringDataSource.java          |  4 ++
 .../generator/base/document/Document.java          |  4 +-
 .../generator/base/document/DocumentFactory.java   | 11 ++--
 ...eableReaper.java => PropertiesTransformer.java} | 38 +++++++-------
 .../generator/document/DocumentFactoryTest.java    |  6 +--
 .../generator/document/DocumentTest.java           |  2 +-
 .../generator/document/DocumentsTest.java          |  3 +-
 .../generator/util/PropertiesTransformerTest.java  | 48 ++++++++++++++++++
 freemarker-generator-cli/pom.xml                   | 23 +--------
 .../src/main/assembly/small.xml                    | 59 ----------------------
 .../freemarker/generator/cli/FreeMarkerTask.java   |  6 +--
 .../org/apache/freemarker/generator/cli/Main.java  |  8 +--
 .../generator/cli/impl/ToolsSupplier.java          | 17 ++++---
 freemarker-generator-maven-plugin/pom.xml          | 14 +----
 .../freemarker/generator/maven/FreeMarkerMojo.java | 12 ++---
 .../generator/maven/GeneratingFileVisitor.java     |  8 +--
 .../generator/maven/JsonPropertiesProvider.java    | 17 +++----
 .../generator/maven/OutputGenerator.java           | 25 +++++----
 .../generator/maven/FreeMarkerMojoTest.java        |  2 +-
 freemarker-generator-tools/pom.xml                 |  4 +-
 22 files changed, 139 insertions(+), 180 deletions(-)
 copy freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/{CloseableReaper.java => PropertiesTransformer.java} (52%)
 create mode 100644 freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java
 delete mode 100644 freemarker-generator-cli/src/main/assembly/small.xml


[freemarker-generator] 03/03: FREEMARKER-129 Minor refactorings

Posted by sg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 3106948faf1253926ac1b7f8ec66f03ad86f3b7a
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Fri Feb 7 12:27:26 2020 +0100

    FREEMARKER-129 Minor refactorings
---
 .../freemarker/generator/base/document/DocumentFactory.java   | 11 +++++------
 .../freemarker/generator/document/DocumentFactoryTest.java    |  6 +++---
 .../apache/freemarker/generator/document/DocumentTest.java    |  2 +-
 .../apache/freemarker/generator/document/DocumentsTest.java   |  3 +--
 .../org/apache/freemarker/generator/cli/FreeMarkerTask.java   |  6 +++---
 5 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentFactory.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentFactory.java
index b25e5c9..632c3b1 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentFactory.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentFactory.java
@@ -35,20 +35,19 @@ import static java.nio.charset.StandardCharsets.UTF_8;
  */
 public class DocumentFactory {
 
-    private static final String DEFAULT_LOCATION = "unknown";
-    private static final String NAME_URL = "url";
+    public static final String LOCATION_STDIN = "stdin";
 
     private DocumentFactory() {
     }
 
     public static Document create(URL url) {
         final URLDataSource dataSource = new URLDataSource(url);
-        return create(NAME_URL, dataSource, url.toExternalForm(), UTF_8);
+        return create("url", dataSource, url.toExternalForm(), UTF_8);
     }
 
     public static Document create(String name, String content) {
         final StringDataSource dataSource = new StringDataSource(name, content, UTF_8);
-        return create(name, dataSource, DEFAULT_LOCATION, UTF_8);
+        return create(name, dataSource, "string", UTF_8);
     }
 
     public static Document create(File file, Charset charset) {
@@ -58,12 +57,12 @@ public class DocumentFactory {
 
     public static Document create(String name, byte[] content) {
         final ByteArrayDataSource dataSource = new ByteArrayDataSource(name, content);
-        return create(name, dataSource, DEFAULT_LOCATION, UTF_8);
+        return create(name, dataSource, "bytes", UTF_8);
     }
 
     public static Document create(String name, InputStream is, Charset charset) {
         final InputStreamDataSource dataSource = new InputStreamDataSource(name, is);
-        return create(name, dataSource, DEFAULT_LOCATION, charset);
+        return create(name, dataSource, "is", charset);
     }
 
     public static Document create(String name, InputStream is, String location, Charset charset) {
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentFactoryTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentFactoryTest.java
index d837761..35fb4e4 100644
--- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentFactoryTest.java
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentFactoryTest.java
@@ -54,7 +54,7 @@ public class DocumentFactoryTest {
 
         assertEquals("test.txt", document.getName());
         assertEquals(UTF_8, document.getCharset());
-        assertEquals(UNKOWN_LOCATION, document.getLocation());
+        assertEquals("string", document.getLocation());
         assertEquals(ANY_TEXT, document.getText());
         assertEquals(1, document.getLines().size());
     }
@@ -65,7 +65,7 @@ public class DocumentFactoryTest {
 
         assertEquals("test.txt", document.getName());
         assertEquals(UTF_8, document.getCharset());
-        assertEquals(UNKOWN_LOCATION, document.getLocation());
+        assertEquals("bytes", document.getLocation());
         assertEquals(ANY_TEXT, document.getText());
         assertEquals(1, document.getLines().size());
     }
@@ -77,7 +77,7 @@ public class DocumentFactoryTest {
 
         assertEquals("test.txt", document.getName());
         assertEquals(UTF_8, document.getCharset());
-        assertEquals(UNKOWN_LOCATION, document.getLocation());
+        assertEquals("is", document.getLocation());
         assertEquals(ANY_TEXT, document.getText());
     }
 
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentTest.java
index b3421ac..bc343fa 100644
--- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentTest.java
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentTest.java
@@ -42,7 +42,7 @@ public class DocumentTest {
     public void shouldSupportTextDocument() throws IOException {
         try (Document document = DocumentFactory.create("stdin", ANY_TEXT)) {
             assertEquals("stdin", document.getName());
-            assertEquals("unknown", document.getLocation());
+            assertEquals("string", document.getLocation());
             assertEquals(UTF_8, document.getCharset());
             assertTrue(document.getLength() > 0);
             assertEquals(ANY_TEXT, document.getText());
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsTest.java
index 5848f46..496a594 100644
--- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsTest.java
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsTest.java
@@ -32,13 +32,12 @@ import static org.junit.Assert.assertNotNull;
 
 public class DocumentsTest {
 
-    private static final String STDIN = "stdin";
     private static final String UNKNOWN = "unknown";
     private static final String ANY_TEXT = "Hello World";
     private static final String ANY_FILE_NAME = "pom.xml";
     private static final String ANY_FILE_EXTENSION = "xml";
     private static final File ANY_FILE = new File(ANY_FILE_NAME);
-    private static final String ANY_URL = "https://server.invalid";
+    private static final String ANY_URL = "https://server.invalid?foo=bar";
 
     @Test
     public void shouldFindByWildcard() {
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/FreeMarkerTask.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/FreeMarkerTask.java
index 3f10caf..d9bb61d 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/FreeMarkerTask.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/FreeMarkerTask.java
@@ -22,8 +22,8 @@ import freemarker.template.Template;
 import org.apache.commons.io.FileUtils;
 import org.apache.freemarker.generator.base.document.Document;
 import org.apache.freemarker.generator.base.document.DocumentFactory;
-import org.apache.freemarker.generator.base.document.DocumentsSupplier;
 import org.apache.freemarker.generator.base.document.Documents;
+import org.apache.freemarker.generator.base.document.DocumentsSupplier;
 import org.apache.freemarker.generator.cli.impl.ConfigurationSupplier;
 import org.apache.freemarker.generator.cli.impl.TemplateLoaderSupplier;
 import org.apache.freemarker.generator.cli.impl.ToolsSupplier;
@@ -41,6 +41,7 @@ import java.util.function.Supplier;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.Objects.requireNonNull;
+import static org.apache.freemarker.generator.base.document.DocumentFactory.LOCATION_STDIN;
 
 /**
  * Renders a FreeMarker template.
@@ -48,7 +49,6 @@ import static java.util.Objects.requireNonNull;
 public class FreeMarkerTask implements Callable<Integer> {
 
     private static final int SUCCESS = 0;
-    private static final String STDIN = "stdin";
 
     private final Settings settings;
 
@@ -98,7 +98,7 @@ public class FreeMarkerTask implements Callable<Integer> {
         // Add optional document from STDIN at the start of the list since
         // this allows easy sequence slicing in FreeMarker.
         if (settings.isReadFromStdin()) {
-            documents.add(0, DocumentFactory.create(STDIN, System.in, STDIN, UTF_8));
+            documents.add(0, DocumentFactory.create(LOCATION_STDIN, System.in, LOCATION_STDIN, UTF_8));
         }
 
         return new Documents(documents);


[freemarker-generator] 01/03: FREEMARKER-129 Cleanup source code

Posted by sg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ab7ad659fa7bd1249c4b5cf96c694cabba3b2475
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Thu Feb 6 19:42:50 2020 +0100

    FREEMARKER-129 Cleanup source code
---
 .../base/activation/ByteArrayDataSource.java       |  4 ++++
 .../base/activation/StringDataSource.java          |  4 ++++
 .../generator/base/document/Document.java          |  4 ++--
 .../freemarker/generator/maven/FreeMarkerMojo.java | 12 +++++------
 .../generator/maven/GeneratingFileVisitor.java     |  8 +++----
 .../generator/maven/JsonPropertiesProvider.java    | 17 +++++++--------
 .../generator/maven/OutputGenerator.java           | 25 +++++++++++++---------
 .../generator/maven/FreeMarkerMojoTest.java        |  2 +-
 8 files changed, 44 insertions(+), 32 deletions(-)

diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/ByteArrayDataSource.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/ByteArrayDataSource.java
index ef9aaf3..cb769f4 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/ByteArrayDataSource.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/ByteArrayDataSource.java
@@ -74,4 +74,8 @@ public class ByteArrayDataSource implements DataSource {
     public byte[] getContent() {
         return content;
     }
+
+    public long length() {
+        return content.length;
+    }
 }
\ No newline at end of file
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/StringDataSource.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/StringDataSource.java
index aea906f..7e9c29d 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/StringDataSource.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/StringDataSource.java
@@ -69,6 +69,10 @@ public class StringDataSource implements DataSource {
         return charset;
     }
 
+    public long length() {
+        return content.length();
+    }
+
     @Override
     public String toString() {
         return "StringDataSource{" +
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Document.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Document.java
index 36c51b1..6d9959d 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Document.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Document.java
@@ -88,9 +88,9 @@ public class Document implements Closeable {
         if (dataSource instanceof FileDataSource) {
             return ((FileDataSource) dataSource).getFile().length();
         } else if (dataSource instanceof StringDataSource) {
-            return ((StringDataSource) dataSource).getContent().length();
+            return ((StringDataSource) dataSource).length();
         } else if (dataSource instanceof ByteArrayDataSource) {
-            return ((ByteArrayDataSource) dataSource).getContent().length;
+            return ((ByteArrayDataSource) dataSource).length();
         } else {
             return UNKNOWN_LENGTH;
         }
diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java
index 4c9e96c..4add19b 100644
--- a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java
@@ -65,7 +65,7 @@ public class FreeMarkerMojo extends AbstractMojo {
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
 
-        if (freeMarkerVersion == null || freeMarkerVersion.length() == 0) {
+        if (freeMarkerVersion == null || freeMarkerVersion.isEmpty()) {
             throw new MojoExecutionException("freeMarkerVersion is required");
         }
 
@@ -73,7 +73,7 @@ public class FreeMarkerMojo extends AbstractMojo {
             throw new MojoExecutionException("Required directory does not exist: " + generatorDirectory);
         }
 
-        Configuration config = FactoryUtil.createConfiguration(freeMarkerVersion);
+        final Configuration config = FactoryUtil.createConfiguration(freeMarkerVersion);
 
         config.setDefaultEncoding("UTF-8");
 
@@ -87,9 +87,9 @@ public class FreeMarkerMojo extends AbstractMojo {
             throw new MojoExecutionException("Could not establish file template loader for directory: " + templateDirectory);
         }
 
-        File freeMarkerProps = FactoryUtil.createFile(sourceDirectory, "freemarker.properties");
+        final File freeMarkerProps = FactoryUtil.createFile(sourceDirectory, "freemarker.properties");
         if (freeMarkerProps.isFile()) {
-            Properties configProperties = new Properties();
+            final Properties configProperties = new Properties();
             try (InputStream is = FactoryUtil.createFileInputStream(freeMarkerProps)) {
                 configProperties.load(is);
             } catch (Throwable t) {
@@ -110,10 +110,10 @@ public class FreeMarkerMojo extends AbstractMojo {
             session.getCurrentProject().addTestCompileSourceRoot(outputDirectory.toString());
         }
 
-        Map<String, OutputGeneratorPropertiesProvider> extensionToBuilders = new HashMap<>(1);
+        final Map<String, OutputGeneratorPropertiesProvider> extensionToBuilders = new HashMap<>(1);
         extensionToBuilders.put(".json", JsonPropertiesProvider.create(generatorDirectory, templateDirectory, outputDirectory));
 
-        GeneratingFileVisitor fileVisitor = GeneratingFileVisitor.create(config, session, extensionToBuilders);
+        final GeneratingFileVisitor fileVisitor = GeneratingFileVisitor.create(config, session, extensionToBuilders);
         try {
             Files.walkFileTree(generatorDirectory.toPath(), fileVisitor);
         } catch (Throwable t) {
diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java
index d71c871..69458d2 100644
--- a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java
@@ -59,12 +59,12 @@ public class GeneratingFileVisitor extends SimpleFileVisitor<Path> {
     @Override
     public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) {
         if (attrs.isRegularFile()) {
-            OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder()
+            final OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder()
                     .addGeneratorLocation(path)
                     .addPomLastModifiedTimestamp(pomLastModifiedTimestamp);
-            String fileName = path.getFileName().toString();
-            String extenstion = fileName.substring(fileName.lastIndexOf('.'));
-            OutputGeneratorPropertiesProvider pathProcessor = extensionToBuilder.get(extenstion);
+            final String fileName = path.getFileName().toString();
+            final String extenstion = fileName.substring(fileName.lastIndexOf('.'));
+            final OutputGeneratorPropertiesProvider pathProcessor = extensionToBuilder.get(extenstion);
             if (pathProcessor == null) {
                 throw new RuntimeException("Unknown file extension: " + path);
             }
diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java
index 469870a..f2e2cc4 100644
--- a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java
@@ -28,7 +28,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStreamReader;
 import java.lang.reflect.Type;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.Map;
@@ -46,8 +45,8 @@ public class JsonPropertiesProvider implements OutputGeneratorPropertiesProvider
         this.dataDir = dataDir;
         this.templateDir = templateDir;
         this.outputDir = outputDir;
-        gson = new GsonBuilder().setLenient().create();
-        stringObjectMap = new TypeToken<Map<String, Object>>() {}.getType();
+        this.gson = new GsonBuilder().setLenient().create();
+        this.stringObjectMap = new TypeToken<Map<String, Object>>() {}.getType();
     }
 
     public static JsonPropertiesProvider create(File dataDir, File templateDir, File outputDir) {
@@ -56,8 +55,8 @@ public class JsonPropertiesProvider implements OutputGeneratorPropertiesProvider
 
     @Override
     public void providePropertiesFromFile(Path path, OutputGenerator.OutputGeneratorBuilder builder) {
-        File jsonDataFile = path.toFile();
-        Map<String, Object> data = parseJson(jsonDataFile);
+        final File jsonDataFile = path.toFile();
+        final Map<String, Object> data = parseJson(jsonDataFile);
 
         Object obj = data.get("dataModel");
         if (obj != null) {
@@ -72,16 +71,16 @@ public class JsonPropertiesProvider implements OutputGeneratorPropertiesProvider
         }
         builder.addTemplateLocation(templateDir.toPath().resolve(obj.toString()));
 
-        String dataDirName = dataDir.getAbsolutePath();
-        String jsonFileName = jsonDataFile.getAbsolutePath();
+        final String dataDirName = dataDir.getAbsolutePath();
+        final String jsonFileName = jsonDataFile.getAbsolutePath();
         if (!jsonFileName.startsWith(dataDirName)) {
             throw new IllegalStateException("visitFile() given file not in sourceDirectory: " + jsonDataFile);
         }
 
         String outputFileName = jsonFileName.substring(dataDirName.length() + 1);
         outputFileName = outputFileName.substring(0, outputFileName.length() - 5);
-        Path outputPath = outputDir.toPath();
-        Path resolved = outputPath.resolve(outputFileName);
+        final Path outputPath = outputDir.toPath();
+        final Path resolved = outputPath.resolve(outputFileName);
         builder.addOutputLocation(resolved);
     }
 
diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGenerator.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGenerator.java
index bec4f22..2ac3b4f 100644
--- a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGenerator.java
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGenerator.java
@@ -115,16 +115,21 @@ class OutputGenerator {
          * @throws IllegalStateException if any of the parts of the OutputGenerator were not set.
          */
         public OutputGenerator create() {
-            if (pomModifiedTimestamp == Long.MAX_VALUE)
+            if (pomModifiedTimestamp == Long.MAX_VALUE) {
                 throw new IllegalStateException("Must set the pomModifiedTimestamp");
-            if (generatorLocation == null)
+            }
+            if (generatorLocation == null) {
                 throw new IllegalStateException("Must set a non-null generatorLocation");
-            if (templateLocation == null)
+            }
+            if (templateLocation == null) {
                 throw new IllegalStateException("Must set a non-null templateLocation");
-            if (outputLocation == null)
+            }
+            if (outputLocation == null) {
                 throw new IllegalStateException("Must set a non-null outputLocation");
-            if (dataModel == null)
+            }
+            if (dataModel == null) {
                 throw new IllegalStateException("Must set a non-null dataModel");
+            }
             return new OutputGenerator(pomModifiedTimestamp, generatorLocation, templateLocation, outputLocation, dataModel);
         }
     }
@@ -137,9 +142,9 @@ class OutputGenerator {
      */
     public void generate(Configuration config) {
         //Use "createFile" for testing purposes only
-        File outputFile = FactoryUtil.createFile(outputLocation.toFile().toString());
-        File templateFile = templateLocation.toFile();
-        File generatorFile = generatorLocation.toFile();
+        final File outputFile = FactoryUtil.createFile(outputLocation.toFile().toString());
+        final File templateFile = templateLocation.toFile();
+        final File generatorFile = generatorLocation.toFile();
         if (outputFile.exists()) {
             //early exit only if the output file is newer than all files that contribute to its generation
             if (outputFile.lastModified() > generatorFile.lastModified()
@@ -148,7 +153,7 @@ class OutputGenerator {
                 return;
             }
         } else {
-            File parentDir = outputFile.getParentFile();
+            final File parentDir = outputFile.getParentFile();
             if (parentDir.isFile()) {
                 throw new RuntimeException("Parent directory of output file is a file: " + parentDir.getAbsoluteFile());
             }
@@ -158,7 +163,7 @@ class OutputGenerator {
             }
         }
 
-        Template template;
+        final Template template;
         try {
             template = config.getTemplate(templateFile.getName());
         } catch (Throwable t) {
diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java
index edc0910..f835c6a 100644
--- a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java
+++ b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java
@@ -91,7 +91,7 @@ public class FreeMarkerMojoTest extends Assert {
             mojo.execute();
         }).withMessage("freeMarkerVersion is required");
 
-        File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "executeTest");
+        final File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "executeTest");
         Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
         Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
         Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));


[freemarker-generator] 02/03: FREEMARKER-129 Cleanup source code

Posted by sg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 846145f47bc85ee5ba99b27330afedd4f232185b
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Thu Feb 6 21:10:58 2020 +0100

    FREEMARKER-129 Cleanup source code
---
 freemarker-generator-base/pom.xml                  |  4 +-
 .../generator/base/util/PropertiesTransformer.java | 41 +++++++++++++++
 .../generator/util/PropertiesTransformerTest.java  | 48 ++++++++++++++++++
 freemarker-generator-cli/pom.xml                   | 23 +--------
 .../src/main/assembly/small.xml                    | 59 ----------------------
 .../org/apache/freemarker/generator/cli/Main.java  |  8 +--
 .../generator/cli/impl/ToolsSupplier.java          | 17 ++++---
 freemarker-generator-maven-plugin/pom.xml          | 14 +----
 freemarker-generator-tools/pom.xml                 |  4 +-
 9 files changed, 106 insertions(+), 112 deletions(-)

diff --git a/freemarker-generator-base/pom.xml b/freemarker-generator-base/pom.xml
index d86e3d3..e67c1a3 100644
--- a/freemarker-generator-base/pom.xml
+++ b/freemarker-generator-base/pom.xml
@@ -26,10 +26,8 @@
     </parent>
 
     <artifactId>freemarker-generator-base</artifactId>
-    <packaging>jar</packaging>
     <name>Apache FreeMarker Generator: Base</name>
-    <description>Command-line client for Apache FreeMarker</description>
-    <inceptionYear>2020</inceptionYear>
+    <description>Common functionality</description>
 
     <dependencies>
         <dependency>
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
new file mode 100644
index 0000000..6da5ecf
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesTransformer.java
@@ -0,0 +1,41 @@
+/*
+ * 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.util;
+
+import java.util.Properties;
+
+/**
+ * Helper class to transform <code>java.util.Properties</code>
+ */
+public class PropertiesTransformer {
+
+    /**
+     * Create a new <code>java.util.Properties</code> instance having the matching key prefix removed
+     *
+     * @param properties the properties
+     * @param prefix     prefix to be removed from the matching keys
+     * @return Properties
+     */
+    public static Properties removeKeyPrefix(Properties properties, String prefix) {
+        final Properties result = new Properties();
+        properties.entrySet()
+                .stream()
+                .filter(entry -> entry.getKey().toString().startsWith(prefix))
+                .forEach(entry -> result.put(entry.getKey().toString().substring(prefix.length()), entry.getValue()));
+        return result;
+    }
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java
new file mode 100644
index 0000000..710307a
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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.util;
+
+import org.apache.freemarker.generator.base.util.PropertiesTransformer;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+
+public class PropertiesTransformerTest {
+
+    private final Map<String, Object> settings = new HashMap<>();
+
+    @Test
+    public void shouldCreateToolWithDefaultConstructor() {
+        final Properties properties = PropertiesTransformer.removeKeyPrefix(properties(), "freemarker.tools.");
+
+        assertEquals(2, properties.size());
+        assertEquals("o.a.f.g.t.commonscsv.CommonsCSVTool", properties.getProperty("CSVTool"));
+        assertEquals("o.a.f.g.t.commonscsv.ExecTool", properties.getProperty("ExecTool"));
+    }
+
+    private Properties properties() {
+        final Properties properties = new Properties();
+        properties.put("foo", "bar");
+        properties.put("freemarker.tools.CSVTool", "o.a.f.g.t.commonscsv.CommonsCSVTool");
+        properties.put("freemarker.tools.ExecTool", "o.a.f.g.t.commonscsv.ExecTool");
+        return properties;
+    }
+}
diff --git a/freemarker-generator-cli/pom.xml b/freemarker-generator-cli/pom.xml
index 68b27d1..520a00b 100644
--- a/freemarker-generator-cli/pom.xml
+++ b/freemarker-generator-cli/pom.xml
@@ -26,13 +26,11 @@
     </parent>
 
     <artifactId>freemarker-generator-cli</artifactId>
-    <packaging>jar</packaging>
     <name>Apache FreeMarker Generator: CLI</name>
     <description>Command-line client for Apache FreeMarker</description>
-    <inceptionYear>2016</inceptionYear>
 
     <build>
-        <defaultGoal>clean package</defaultGoal>
+        <defaultGoal>package</defaultGoal>
         <plugins>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
@@ -93,25 +91,6 @@
                 <artifactId>maven-assembly-plugin</artifactId>
                 <executions>
                     <execution>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <configuration>
-                            <archive>
-                                <manifest>
-                                    <mainClass>org.apache.freemarker.generator.cli.Main</mainClass>
-                                </manifest>
-                            </archive>
-                            <descriptorRefs>
-                                <descriptorRef>jar-with-dependencies</descriptorRef>
-                            </descriptorRefs>
-                            <descriptors>
-                                <descriptor>src/main/assembly/small.xml</descriptor>
-                            </descriptors>
-                        </configuration>
-                    </execution>
-                    <execution>
                         <id>make-assembly</id>
                         <phase>package</phase>
                         <configuration>
diff --git a/freemarker-generator-cli/src/main/assembly/small.xml b/freemarker-generator-cli/src/main/assembly/small.xml
deleted file mode 100644
index 3fa92e6..0000000
--- a/freemarker-generator-cli/src/main/assembly/small.xml
+++ /dev/null
@@ -1,59 +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.
--->
-<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
-    <id>small</id>
-    <formats>
-        <format>jar</format>
-    </formats>
-    <includeBaseDirectory>false</includeBaseDirectory>
-    <dependencySets>
-        <dependencySet>
-            <outputDirectory>${file.separator}</outputDirectory>
-            <useProjectArtifact>true</useProjectArtifact>
-            <unpack>true</unpack>
-            <scope>runtime</scope>
-            <excludes>
-                <!-- Exclude Apache POI -->
-                <exclude>com.github.virtuald:curvesapi</exclude>
-                <exclude>commons-codec:commons-codec</exclude>
-                <exclude>org.apache.commons:commons-collections4</exclude>
-                <exclude>org.apache.commons:commons-compress</exclude>
-                <exclude>org.apache.commons:commons-lang3</exclude>
-                <exclude>org.apache.commons:commons-math3</exclude>
-                <exclude>org.apache.xmlbeans:xmlbeans</exclude>
-                <exclude>org.apache.poi:poi</exclude>
-                <exclude>org.apache.poi:poi-ooxml</exclude>
-                <exclude>org.apache.poi:poi-ooxml-schemas</exclude>
-                <exclude>org.apache.poi:poi-ooxml-schemas</exclude>
-                <!-- Exclude Grok -->
-                <exclude>io.krakens:java-grok</exclude>
-                <!-- Exclude JSoup -->
-                <exclude>org.jsoup:jsoup</exclude>
-            </excludes>
-        </dependencySet>
-    </dependencySets>
-    <fileSets>
-        <fileSet>
-            <outputDirectory>${file.separator}</outputDirectory>
-            <directory>${project.build.outputDirectory}</directory>
-        </fileSet>
-    </fileSets>
-</assembly>
\ No newline at end of file
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 46299b1..b5277a4 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
@@ -16,9 +16,9 @@
  */
 package org.apache.freemarker.generator.cli;
 
+import org.apache.freemarker.generator.base.file.PropertiesFileSupplier;
 import org.apache.freemarker.generator.base.util.ClosableUtils;
 import org.apache.freemarker.generator.base.util.StringUtils;
-import org.apache.freemarker.generator.base.file.PropertiesFileSupplier;
 import org.apache.freemarker.generator.cli.impl.TemplateDirectorySupplier;
 import org.apache.freemarker.generator.cli.model.Settings;
 import org.apache.freemarker.generator.cli.picocli.GitVersionProvider;
@@ -49,7 +49,7 @@ public class Main implements Callable<Integer> {
 
     private static final String FREEMARKER_CLI_PROPERTY_FILE = "freemarker-cli.properties";
 
-    @ArgGroup(exclusive = true, multiplicity = "1")
+    @ArgGroup(multiplicity = "1")
     private TemplateSourceOptions templateSourceOptions;
 
     private static final class TemplateSourceOptions {
@@ -67,7 +67,7 @@ public class Main implements Callable<Integer> {
     private Map<String, String> properties;
 
     @Option(names = { "-e", "--input-encoding" }, description = "Encoding of input file", defaultValue = "UTF-8")
-    String inputEncoding;
+    private String inputEncoding;
 
     @Option(names = { "-E", "--expose-env" }, description = "Expose environment variables and user-supplied properties globally")
     private boolean isEnvironmentExposed;
@@ -85,7 +85,7 @@ public class Main implements Callable<Integer> {
     private String include;
 
     @Option(names = { "--output-encoding" }, description = "Encoding of output file, e.g. UTF-8", defaultValue = "UTF-8")
-    String outputEncoding;
+    private String outputEncoding;
 
     @Option(names = { "--stdin" }, description = "Read input document from stdin")
     private boolean readFromStdin;
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/impl/ToolsSupplier.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/impl/ToolsSupplier.java
index d76e5ef..977cd1c 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/impl/ToolsSupplier.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/impl/ToolsSupplier.java
@@ -24,6 +24,7 @@ import java.util.function.Supplier;
 
 import static java.util.Objects.requireNonNull;
 import static java.util.stream.Collectors.toMap;
+import static org.apache.freemarker.generator.base.util.PropertiesTransformer.removeKeyPrefix;
 
 public class ToolsSupplier implements Supplier<Map<String, Object>> {
 
@@ -45,17 +46,17 @@ public class ToolsSupplier implements Supplier<Map<String, Object>> {
 
     @Override
     public Map<String, Object> get() {
-        return configuration.stringPropertyNames().stream()
-                .filter(name -> name.startsWith(FREEMARKER_TOOLS_PREFIX))
-                .filter(name -> toolClassCanBeLoaded(configuration.getProperty(name)))
-                .collect(toMap(ToolsSupplier::toolName, name -> ToolsFactory.create(configuration.getProperty(name), settings)));
+        final Properties properties = toolsProperties();
+        return properties.stringPropertyNames().stream()
+                .filter(key -> toolExists(properties.getProperty(key)))
+                .collect(toMap(key -> key, key -> ToolsFactory.create(properties.getProperty(key), settings)));
     }
 
-    private boolean toolClassCanBeLoaded(String clazzName) {
-        return ToolsFactory.exists(clazzName);
+    private Properties toolsProperties() {
+        return removeKeyPrefix(this.configuration, FREEMARKER_TOOLS_PREFIX);
     }
 
-    private static String toolName(String propertyName) {
-        return propertyName.substring(FREEMARKER_TOOLS_PREFIX.length());
+    private static boolean toolExists(String clazzName) {
+        return ToolsFactory.exists(clazzName);
     }
 }
diff --git a/freemarker-generator-maven-plugin/pom.xml b/freemarker-generator-maven-plugin/pom.xml
index ad4c32c..a17ddc9 100644
--- a/freemarker-generator-maven-plugin/pom.xml
+++ b/freemarker-generator-maven-plugin/pom.xml
@@ -12,7 +12,7 @@
     <packaging>maven-plugin</packaging>
 
     <name>Apache FreeMarker Generator: Maven Plugin</name>
-    <url>http://freemarker.apache.org/</url>
+    <description>Maven plugin for Apache FreeMarker</description>
 
     <properties>
         <maven-core.version>3.5.2</maven-core.version>
@@ -116,22 +116,10 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-source-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>attach-sources</id>
-                        <goals>
-                            <goal>jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
diff --git a/freemarker-generator-tools/pom.xml b/freemarker-generator-tools/pom.xml
index 7c4096f..4b67e50 100644
--- a/freemarker-generator-tools/pom.xml
+++ b/freemarker-generator-tools/pom.xml
@@ -26,10 +26,8 @@
     </parent>
 
     <artifactId>freemarker-generator-tools</artifactId>
-    <packaging>jar</packaging>
     <name>Apache FreeMarker Generator: Tools</name>
-    <description>Tools for Apache FreeMarker</description>
-    <inceptionYear>2020</inceptionYear>
+    <description>Document processing tools for Apache FreeMarker Generator</description>
 
     <dependencies>
         <dependency>