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 <[email protected]> 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;
