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 2021/10/05 19:27:47 UTC

[freemarker-generator] 02/02: FREEMARKER-195 [freemarker-generator] Change of package names and cleanup

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

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

commit d0f36bc6386da434037ed333d3a8ff26caed35cb
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Tue Oct 5 21:26:11 2021 +0200

    FREEMARKER-195 [freemarker-generator] Change of package names and cleanup
---
 .../freemarker/generator/base/datasource/DataSource.java       |  9 +++++++--
 .../freemarker/generator/base/datasource/DataSources.java      |  2 +-
 .../freemarker/generator/datasource/DataSourcesTest.java       | 10 +++++++++-
 .../src/app/examples/templates/datasources.ftl                 |  1 +
 .../freemarker/generator/cli/config/ConfigurationSupplier.java |  2 +-
 .../generator/cli/{model => wrapper}/DataSourcesAdapter.java   |  6 +++---
 .../{model => wrapper}/FreeMarkerGeneratorObjectWrapper.java   |  2 +-
 7 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
index 779e955..de2b295 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
@@ -410,7 +410,8 @@ public class DataSource implements Closeable, javax.activation.DataSource {
     }
 
     /**
-     * Matches a metadata key with a wildcard expression.
+     * Matches a metadata key with a wildcard expression. If the wildcard is prefixed
+     * with a "!" than the match will be negated.
      *
      * @param key      metadata key, e.g. "name", "fileName", "baseName", "extension", "uri", "group"
      * @param wildcard the wildcard string to match against
@@ -419,7 +420,11 @@ public class DataSource implements Closeable, javax.activation.DataSource {
      */
     public boolean match(String key, String wildcard) {
         final String value = getMetadata(key);
-        return FilenameUtils.wildcardMatch(value, wildcard);
+        if (wildcard != null && wildcard.startsWith("!")) {
+            return !FilenameUtils.wildcardMatch(value, wildcard.substring(1));
+        } else {
+            return FilenameUtils.wildcardMatch(value, wildcard);
+        }
     }
 
     /**
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java
index 129b996..77b8a4a 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java
@@ -160,7 +160,7 @@ public class DataSources implements Closeable {
     }
 
     /**
-     * Find data sources based on their name using a wildcard string..
+     * Find data sources based on their name using a wildcard string.
      *
      * @param wildcard the wildcard string to match against
      * @return list of matching data sources
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java
index 8ba7905..cbc2315 100644
--- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java
@@ -60,13 +60,17 @@ public class DataSourcesTest {
             assertEquals(1, dataSources.find("*o*.xml").size());
 
             assertEquals(3, dataSources.find("*").size());
+
+            assertEquals(2, dataSources.find("!pom.xml").size());
+            assertEquals(3, dataSources.find("!").size());
+            assertEquals(0, dataSources.find("!*").size());
+            assertEquals(1, dataSources.find("!*.*").size());
         }
     }
 
     @Test
     public void shouldFindByGroupPart() {
         try (DataSources dataSources = dataSources()) {
-
             assertEquals(0, dataSources.find(GROUP_PART, null).size());
             assertEquals(0, dataSources.find(GROUP_PART, "").size());
 
@@ -76,6 +80,10 @@ public class DataSourcesTest {
             assertEquals(3, dataSources.find(GROUP_PART, "default").size());
             assertEquals(3, dataSources.find(GROUP_PART, "d*").size());
             assertEquals(3, dataSources.find(GROUP_PART, "d??????").size());
+
+            assertEquals(0, dataSources.find(GROUP_PART, "!*").size());
+            assertEquals(3, dataSources.find(GROUP_PART, "!unknown").size());
+            assertEquals(0, dataSources.find(GROUP_PART, "!default").size());
         }
     }
 
diff --git a/freemarker-generator-cli/src/app/examples/templates/datasources.ftl b/freemarker-generator-cli/src/app/examples/templates/datasources.ftl
index 2b0a8f8..c1b1566 100644
--- a/freemarker-generator-cli/src/app/examples/templates/datasources.ftl
+++ b/freemarker-generator-cli/src/app/examples/templates/datasources.ftl
@@ -84,6 +84,7 @@ DataSources.getGroups(): ${dataSources?api.getGroups()?size}
 DataSources.find("*"): ${dataSources?api.find("*")?size}
 DataSources.find("uri", "*.md"): ${dataSources?api.find("uri", "*.md")?size}
 DataSources.find("extension", "md"): ${dataSources?api.find("extension", "md")?size}
+DataSources.find("name", "!readme"): ${dataSources?api.find("name", "!readme")?size}
 
 <#if dataSources?has_content>
 <#list dataSources as dataSource>
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplier.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplier.java
index 63f21c0..a54f98d 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplier.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplier.java
@@ -20,7 +20,7 @@ import freemarker.cache.TemplateLoader;
 import freemarker.template.Configuration;
 import freemarker.template.Version;
 import org.apache.freemarker.generator.base.util.PropertiesTransformer;
-import org.apache.freemarker.generator.cli.model.FreeMarkerGeneratorObjectWrapper;
+import org.apache.freemarker.generator.cli.wrapper.FreeMarkerGeneratorObjectWrapper;
 
 import java.util.Properties;
 import java.util.function.Supplier;
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/DataSourcesAdapter.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/wrapper/DataSourcesAdapter.java
similarity index 96%
rename from freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/DataSourcesAdapter.java
rename to freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/wrapper/DataSourcesAdapter.java
index 3f49654..de25ed4 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/DataSourcesAdapter.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/wrapper/DataSourcesAdapter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.freemarker.generator.cli.model;
+package org.apache.freemarker.generator.cli.wrapper;
 
 import freemarker.ext.util.WrapperTemplateModel;
 import freemarker.template.AdapterTemplateModel;
@@ -41,8 +41,8 @@ import static java.util.Objects.requireNonNull;
  * API can be accessed using FreeMarkers "?api" built-in.
  */
 public class DataSourcesAdapter extends WrappingTemplateModel
-        implements TemplateHashModelEx2, AdapterTemplateModel, WrapperTemplateModel, TemplateModelWithAPISupport, TemplateSequenceModel,
-        Serializable {
+        implements TemplateHashModelEx2, AdapterTemplateModel, WrapperTemplateModel, TemplateModelWithAPISupport,
+        TemplateSequenceModel, Serializable {
 
     /** Wrapped instance */
     private final DataSources dataSources;
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/FreeMarkerGeneratorObjectWrapper.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/wrapper/FreeMarkerGeneratorObjectWrapper.java
similarity index 96%
rename from freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/FreeMarkerGeneratorObjectWrapper.java
rename to freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/wrapper/FreeMarkerGeneratorObjectWrapper.java
index 08027ce..102a84e 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/model/FreeMarkerGeneratorObjectWrapper.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/wrapper/FreeMarkerGeneratorObjectWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.freemarker.generator.cli.model;
+package org.apache.freemarker.generator.cli.wrapper;
 
 import freemarker.template.DefaultObjectWrapper;
 import freemarker.template.TemplateModel;