diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGeneratorStrategy.java b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGeneratorStrategy.java index 3f028307ab..767ca2c073 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGeneratorStrategy.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGeneratorStrategy.java @@ -252,4 +252,42 @@ public abstract class AbstractGeneratorStrategy implements GeneratorStrategy { return result; } + + /** + * [#4168] [#5783] Some identifiers must not be modified by custom strategies. + */ + final String getFixedJavaIdentifier(Definition definition) { + + // [#1473] Identity identifiers should not be renamed by custom strategies + if (definition instanceof IdentityDefinition) + return "IDENTITY_" + getJavaIdentifier(((IdentityDefinition) definition).getColumn().getContainer()); + + // [#2032] Intercept default Catalog + else if (definition instanceof CatalogDefinition && ((CatalogDefinition) definition).isDefaultCatalog()) + return "DEFAULT_CATALOG"; + + // [#2089] Intercept default schema + else if (definition instanceof SchemaDefinition && ((SchemaDefinition) definition).isDefaultSchema()) + return "DEFAULT_SCHEMA"; + + else + return null; + } + + /** + * [#4168] [#5783] Some class names must not be modified by custom strategies. + */ + final String getFixedJavaClassName(Definition definition) { + + // [#2032] Intercept default catalog + if (definition instanceof CatalogDefinition && ((CatalogDefinition) definition).isDefaultCatalog()) + return "DefaultCatalog"; + + // [#2089] Intercept default schema + else if (definition instanceof SchemaDefinition && ((SchemaDefinition) definition).isDefaultSchema()) + return "DefaultSchema"; + + else + return null; + } } \ No newline at end of file diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java index 565459cc7f..cc3eb96a45 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java @@ -96,20 +96,12 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy { @Override public String getJavaIdentifier(Definition definition) { + String identifier = getFixedJavaIdentifier(definition); - // [#1473] Identity identifiers should not be renamed by custom strategies - if (definition instanceof IdentityDefinition) - return "IDENTITY_" + getJavaIdentifier(((IdentityDefinition) definition).getColumn().getContainer()); - - // [#2032] Intercept default Catalog - else if (definition instanceof CatalogDefinition && ((CatalogDefinition) definition).isDefaultCatalog()) - return "DEFAULT_CATALOG"; - - // [#2089] Intercept default schema - else if (definition instanceof SchemaDefinition && ((SchemaDefinition) definition).isDefaultSchema()) - return "DEFAULT_SCHEMA"; - - return definition.getOutputName().toUpperCase(); + if (identifier != null) + return identifier; + else + return definition.getOutputName().toUpperCase(); } @Override @@ -139,18 +131,12 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy { @Override public String getJavaClassName(Definition definition, Mode mode) { + String name = getFixedJavaClassName(definition); - // [#2032] Intercept default catalog - if (definition instanceof CatalogDefinition && ((CatalogDefinition) definition).isDefaultCatalog()) { - return "DefaultCatalog"; - } - - // [#2089] Intercept default schema - else if (definition instanceof SchemaDefinition && ((SchemaDefinition) definition).isDefaultSchema()) { - return "DefaultSchema"; - } - - return getJavaClassName0(definition, mode); + if (name != null) + return name; + else + return getJavaClassName0(definition, mode); } @Override diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java index df08611f59..c4d3ed5b9b 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java @@ -114,7 +114,12 @@ class GeneratorStrategyWrapper extends AbstractGeneratorStrategy { @Override public String getJavaIdentifier(Definition definition) { - String identifier = convertToIdentifier(delegate.getJavaIdentifier(definition), language); + String identifier = getFixedJavaIdentifier(definition); + + if (identifier != null) + return identifier; + + identifier = convertToIdentifier(delegate.getJavaIdentifier(definition), language); // [#1212] Don't trust custom strategies and disambiguate identifiers here if (definition instanceof ColumnDefinition || @@ -288,11 +293,13 @@ class GeneratorStrategyWrapper extends AbstractGeneratorStrategy { @Override public String getJavaClassName(Definition definition, Mode mode) { + String name = getFixedJavaClassName(definition); + if (name != null) + return name; // [#1150] Intercept Mode.RECORD calls for tables - if (definition instanceof TableDefinition && !generator.generateRecords() && mode == Mode.RECORD) { + if (definition instanceof TableDefinition && !generator.generateRecords() && mode == Mode.RECORD) return Record.class.getSimpleName(); - } String className;