[jOOQ/jOOQ#8353] Log warning when there are unused embeddables
This commit is contained in:
parent
d8a2b44e96
commit
14c2fac8f0
@ -72,6 +72,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.Embeddable;
|
||||
import org.jooq.meta.jaxb.ForcedType;
|
||||
import org.jooq.meta.jaxb.Generate;
|
||||
import org.jooq.meta.jaxb.Jdbc;
|
||||
@ -245,7 +246,7 @@ public class GenerationTool {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@SuppressWarnings({ "unchecked", "unused" })
|
||||
private void run0(Configuration configuration) throws Exception {
|
||||
if (configuration.getLogging() != null) {
|
||||
setGlobalLoggingThreshold(configuration);
|
||||
@ -855,7 +856,7 @@ public class GenerationTool {
|
||||
generator.generate(database);
|
||||
|
||||
if (!database.getUnusedForcedTypes().isEmpty()) {
|
||||
log.info(
|
||||
log.warn(
|
||||
"Unused ForcedTypes",
|
||||
"There are unused forced types, which have not been used by this generation run.\n"
|
||||
+ "This can be because of misconfigurations, such as, for example:\n"
|
||||
@ -866,7 +867,22 @@ public class GenerationTool {
|
||||
);
|
||||
|
||||
for (ForcedType f : database.getUnusedForcedTypes())
|
||||
log.info("Unused ForcedType", f);
|
||||
log.warn("Unused ForcedType", f);
|
||||
}
|
||||
|
||||
if (!database.getUnusedEmbeddables().isEmpty()) {
|
||||
log.warn(
|
||||
"Unused Embeddables",
|
||||
"There are unused embeddables, which have not been used by this generation run.\n"
|
||||
+ "This can be because of misconfigurations, such as, for example:\n"
|
||||
+ "- case sensitive regular expressions\n"
|
||||
+ "- regular expressions depending on whitespace (Pattern.COMMENTS is turned on!)\n"
|
||||
+ "- missing or inadequate object qualification\n"
|
||||
+ "- the embeddable is obsolete\n"
|
||||
);
|
||||
|
||||
for (Embeddable e : database.getUnusedEmbeddables())
|
||||
log.warn("Unused Embeddable", e);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
|
||||
@ -169,8 +169,9 @@ public abstract class AbstractDatabase implements Database {
|
||||
private List<CustomType> configuredCustomTypes = new ArrayList<>();
|
||||
private List<EnumType> configuredEnumTypes = new ArrayList<>();
|
||||
private List<ForcedType> configuredForcedTypes = new ArrayList<>();
|
||||
private Set<ForcedType> unusedForcedTypes;
|
||||
private Set<ForcedType> unusedForcedTypes = new HashSet<>();
|
||||
private List<Embeddable> configuredEmbeddables = new ArrayList<>();
|
||||
private Set<Embeddable> unusedEmbeddables = new HashSet<>();
|
||||
private SchemaVersionProvider schemaVersionProvider;
|
||||
private CatalogVersionProvider catalogVersionProvider;
|
||||
private Comparator<Definition> orderProvider;
|
||||
@ -241,7 +242,6 @@ public abstract class AbstractDatabase implements Database {
|
||||
all = new ArrayList<>();
|
||||
included = new ArrayList<>();
|
||||
excluded = new ArrayList<>();
|
||||
unusedForcedTypes = new HashSet<>();
|
||||
orderProvider = new DefaultOrderProvider();
|
||||
}
|
||||
|
||||
@ -1780,9 +1780,24 @@ public abstract class AbstractDatabase implements Database {
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void markUsed(Embeddable embeddable) {
|
||||
unusedEmbeddables.remove(embeddable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final List<Embeddable> getUnusedEmbeddables() {
|
||||
return new ArrayList<>(unusedEmbeddables);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setConfiguredEmbeddables(List<Embeddable> configuredEmbeddables) {
|
||||
this.configuredEmbeddables = configuredEmbeddables;
|
||||
|
||||
// [#8512] Some implementation of this database may have already
|
||||
// configured a forced type programmatically, so we must not set the
|
||||
// list but append it.
|
||||
getConfiguredEmbeddables().addAll(configuredEmbeddables);
|
||||
unusedEmbeddables.addAll(configuredEmbeddables);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1912,9 +1927,10 @@ public abstract class AbstractDatabase implements Database {
|
||||
|
||||
Name name = table.getQualifiedNamePart().append(embeddable.getName());
|
||||
|
||||
if (result.containsKey(name))
|
||||
if (result.containsKey(name)) {
|
||||
log.warn("Embeddable configuration", "Table " + table + " already has embeddable " + embeddable);
|
||||
else
|
||||
}
|
||||
else {
|
||||
result.put(
|
||||
name,
|
||||
new DefaultEmbeddableDefinition(
|
||||
@ -1928,6 +1944,9 @@ public abstract class AbstractDatabase implements Database {
|
||||
TRUE.equals(embeddable.isReplacesFields())
|
||||
)
|
||||
);
|
||||
|
||||
markUsed(embeddable);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -888,6 +888,16 @@ public interface Database extends AutoCloseable {
|
||||
*/
|
||||
List<Embeddable> getConfiguredEmbeddables();
|
||||
|
||||
/**
|
||||
* Mark an embeddable as used.
|
||||
*/
|
||||
void markUsed(Embeddable embeddable);
|
||||
|
||||
/**
|
||||
* Retrieve the not-yet used embeddables.
|
||||
*/
|
||||
List<Embeddable> getUnusedEmbeddables();
|
||||
|
||||
/**
|
||||
* Whether embeddable types for primary keys should be generated.
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user