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:42 UTC
[freemarker-generator] 02/03: FREEMARKER-129 Cleanup source code
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>