[jOOQ/jOOQ#9520] Log info message when a forcedType never matches

This commit is contained in:
Lukas Eder 2019-11-08 13:55:55 +01:00
parent 6eac9739f1
commit 941bf0ed4a
4 changed files with 33 additions and 0 deletions

View File

@ -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)

View File

@ -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<CustomType> configuredCustomTypes;
private List<EnumType> configuredEnumTypes;
private List<ForcedType> configuredForcedTypes;
private Set<ForcedType> unusedForcedTypes;
private List<Embeddable> 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<ForcedType> getUnusedForcedTypes() {
return new ArrayList<>(unusedForcedTypes);
}
@Override
public final void setConfiguredForcedTypes(List<ForcedType> 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

View File

@ -246,6 +246,7 @@ public abstract class AbstractTypedElementDefinition<T extends Definition>
}
if (uType != null) {
db.markUsed(forcedType);
log.info("Forcing type", child + " to " + forcedType);
DataType<?> forcedDataType = null;

View File

@ -798,6 +798,16 @@ public interface Database extends AutoCloseable {
*/
void setOrderProvider(Comparator<Definition> provider);
/**
* Mark a forced type as used.
*/
void markUsed(ForcedType forcedType);
/**
* Retrieve the not-yet used forced types.
*/
List<ForcedType> getUnusedForcedTypes();
/**
* Database objects matching any of these field names will be generated as
* forced types.