From 941bf0ed4afc5b2efbaf2fa962ab93c250540a34 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 8 Nov 2019 13:55:55 +0100 Subject: [PATCH] [jOOQ/jOOQ#9520] Log info message when a forcedType never matches --- .../main/java/org/jooq/codegen/GenerationTool.java | 8 ++++++++ .../main/java/org/jooq/meta/AbstractDatabase.java | 14 ++++++++++++++ .../jooq/meta/AbstractTypedElementDefinition.java | 1 + .../src/main/java/org/jooq/meta/Database.java | 10 ++++++++++ 4 files changed, 33 insertions(+) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java index 884b351197..5862b64188 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -69,6 +69,7 @@ import org.jooq.meta.Definition; import org.jooq.meta.SchemaVersionProvider; import org.jooq.meta.jaxb.CatalogMappingType; import org.jooq.meta.jaxb.Configuration; +import org.jooq.meta.jaxb.ForcedType; import org.jooq.meta.jaxb.Generate; import org.jooq.meta.jaxb.Jdbc; import org.jooq.meta.jaxb.Logging; @@ -803,6 +804,13 @@ public class GenerationTool { generator.generate(database); + + if (!database.getUnusedForcedTypes().isEmpty()) { + log.info("Unused ForcedTypes", "There are unused forced types, which have not been used by this generation run. This can be because of misconfigurations (e.g. bad regular expressions, which do not take into account case sensitivity or object qualification) or because the forced type is obsolete."); + + for (ForcedType f : database.getUnusedForcedTypes()) + log.info("Unused ForcedType", f); + } } finally { if (database != null) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java index 63aa64a82a..a3d8c83e1b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java @@ -55,6 +55,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -154,6 +155,7 @@ public abstract class AbstractDatabase implements Database { private List configuredCustomTypes; private List configuredEnumTypes; private List configuredForcedTypes; + private Set unusedForcedTypes; private List configuredEmbeddables; private SchemaVersionProvider schemaVersionProvider; private CatalogVersionProvider catalogVersionProvider; @@ -223,6 +225,7 @@ public abstract class AbstractDatabase implements Database { all = new ArrayList<>(); included = new ArrayList<>(); excluded = new ArrayList<>(); + unusedForcedTypes = new HashSet<>(); } @Override @@ -1255,6 +1258,16 @@ public abstract class AbstractDatabase implements Database { return null; } + @Override + public void markUsed(ForcedType forcedType) { + unusedForcedTypes.remove(forcedType); + } + + @Override + public List getUnusedForcedTypes() { + return new ArrayList<>(unusedForcedTypes); + } + @Override public final void setConfiguredForcedTypes(List configuredForcedTypes) { @@ -1262,6 +1275,7 @@ public abstract class AbstractDatabase implements Database { // a forced type programmatically, so we must not set the list but // append it. getConfiguredForcedTypes().addAll(configuredForcedTypes); + unusedForcedTypes.addAll(configuredForcedTypes); } @Override diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractTypedElementDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractTypedElementDefinition.java index 5212e4e896..da81dfb57b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractTypedElementDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractTypedElementDefinition.java @@ -246,6 +246,7 @@ public abstract class AbstractTypedElementDefinition } if (uType != null) { + db.markUsed(forcedType); log.info("Forcing type", child + " to " + forcedType); DataType forcedDataType = null; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java index 027ca955fd..e9ac5015f0 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java @@ -798,6 +798,16 @@ public interface Database extends AutoCloseable { */ void setOrderProvider(Comparator provider); + /** + * Mark a forced type as used. + */ + void markUsed(ForcedType forcedType); + + /** + * Retrieve the not-yet used forced types. + */ + List getUnusedForcedTypes(); + /** * Database objects matching any of these field names will be generated as * forced types.