From eb64cf976d972b8991d851b99aea99d1f9c3cf0b Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 17 Jan 2024 11:53:03 +0100 Subject: [PATCH] [jOOQ/jOOQ#16092] JavaGenerator::generateRecordSetter0 uses wrong Mode.POJO for GeneratorStrategy::getJavaMemberName call --- .../codegen/DefaultGeneratorStrategy.java | 4 +-- .../java/org/jooq/codegen/JavaGenerator.java | 35 +++++++------------ 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/DefaultGeneratorStrategy.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/DefaultGeneratorStrategy.java index 3122ce6c64..631c0e562c 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/DefaultGeneratorStrategy.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/DefaultGeneratorStrategy.java @@ -639,9 +639,9 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy { // [#10481] Embeddables have a defining name (class name) and a referencing name (identifier name, member name). if (definition instanceof EmbeddableDefinition) - return getJavaClassName0LC(((EmbeddableDefinition) definition).getReferencingOutputName(), mode); + return getJavaClassName0LC(((EmbeddableDefinition) definition).getReferencingOutputName(), Mode.DEFAULT); else - return getJavaClassName0LC(definition, mode); + return getJavaClassName0LC(definition, Mode.DEFAULT); } @Override diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java index 02359c0040..11b4c658d0 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -1956,7 +1956,7 @@ public class JavaGenerator extends AbstractGenerator { final String colTypeFull = getJavaType(column, out); final String colType = out.ref(colTypeFull); final String colGetter = getStrategy().getJavaGetterName(column, Mode.RECORD); - final String colMember = getStrategy().getJavaMemberName(column, Mode.POJO); + final String colMember = getStrategy().getJavaMemberName(column, Mode.RECORD); if (scala) { printDeprecationIfUnknownType(out, colTypeFull); @@ -1993,7 +1993,7 @@ public class JavaGenerator extends AbstractGenerator { final String colTypeFull = getJavaType(column, out); final String colType = out.ref(colTypeFull); final String colGetter = getStrategy().getJavaGetterName(column, Mode.RECORD); - final String colMember = getStrategy().getJavaMemberName(column, Mode.POJO); + final String colMember = getStrategy().getJavaMemberName(column, Mode.RECORD); if (scala) { printDeprecationIfUnknownType(out, colTypeFull); @@ -2030,7 +2030,6 @@ public class JavaGenerator extends AbstractGenerator { final String colTypeFull = getJavaType(column, out); final String colType = out.ref(colTypeFull); final String colSetter = getStrategy().getJavaSetterName(column, Mode.RECORD); - final String colMember = getStrategy().getJavaMemberName(column, Mode.POJO); if (scala) { out.println(); @@ -2549,7 +2548,7 @@ public class JavaGenerator extends AbstractGenerator { else out.println("%s(%s);", getStrategy().getJavaSetterName(column, Mode.RECORD), - getStrategy().getJavaMemberName(column, Mode.POJO)); + getStrategy().getJavaMemberName(column, Mode.RECORD)); } } } @@ -2624,7 +2623,7 @@ public class JavaGenerator extends AbstractGenerator { // [#12459] Kotlin setters must return Unit final String setterReturnType = generateFluentSetters() && !kotlin ? className : tokenVoid; final String setter = getStrategy().getJavaSetterName(column, Mode.RECORD); - final String member = getStrategy().getJavaMemberName(column, Mode.POJO); + final String member = getStrategy().getJavaMemberName(column, Mode.RECORD); final String typeFull = getJavaType(column.getType(resolver(out)), out); final String type = out.ref(typeFull); final String name = column.getQualifiedOutputName(); @@ -2633,7 +2632,7 @@ public class JavaGenerator extends AbstractGenerator { final boolean isUDTArray = column.getType(resolver(out)).isUDTArray(); final boolean override = generateInterfaces() && !generateImmutableInterfaces() && !isUDT || !kotlin && getStrategy().getJavaSetterOverride(column, Mode.RECORD) - || kotlin && getStrategy().getJavaMemberOverride(column, Mode.POJO); + || kotlin && getStrategy().getJavaMemberOverride(column, Mode.RECORD); // We cannot have covariant setters for arrays because of type erasure if (!(generateInterfaces() && isArray)) { @@ -2748,13 +2747,13 @@ public class JavaGenerator extends AbstractGenerator { protected void generateEmbeddableRecordSetter(EmbeddableDefinition embeddable, int index, JavaWriter out) { final String className = getStrategy().getJavaClassName(embeddable.getReferencingTable(), Mode.RECORD); final String setterReturnType = generateFluentSetters() ? className : tokenVoid; - final String member = getStrategy().getJavaMemberName(embeddable, Mode.POJO); + final String member = getStrategy().getJavaMemberName(embeddable, Mode.RECORD); final String setter = getStrategy().getJavaSetterName(embeddable, Mode.RECORD); final String typeFull = getStrategy().getFullJavaClassName(embeddable, generateInterfaces() ? Mode.INTERFACE : Mode.RECORD); final String type = out.ref(typeFull); final String name = embeddable.getQualifiedOutputName(); final boolean override = generateInterfaces() && !generateImmutableInterfaces() - || !kotlin && getStrategy().getJavaMemberOverride(embeddable, Mode.POJO) + || !kotlin && getStrategy().getJavaMemberOverride(embeddable, Mode.RECORD) || kotlin && getStrategy().getJavaSetterOverride(embeddable, Mode.RECORD); if (!kotlin && !printDeprecationIfUnknownType(out, typeFull)) @@ -2786,7 +2785,7 @@ public class JavaGenerator extends AbstractGenerator { if (kotlin) out.tab(1).println("set(%s, value.%s)", position, - getStrategy().getJavaMemberName(column, Mode.POJO) + getStrategy().getJavaMemberName(column, Mode.RECORD) ); else out.println("set(%s, value.%s%s)%s", @@ -2850,7 +2849,7 @@ public class JavaGenerator extends AbstractGenerator { printNullableOrNonnullAnnotation(out, column); boolean override = generateInterfaces() || !kotlin && getStrategy().getJavaGetterOverride(column, Mode.RECORD) - || kotlin && getStrategy().getJavaMemberOverride(column, Mode.POJO); + || kotlin && getStrategy().getJavaMemberOverride(column, Mode.RECORD); if (scala) { out.println("%s%sdef %s: %s = get(%s).asInstanceOf[%s]", visibility(override), override ? "override " : "", scalaWhitespaceSuffix(getter), type, index, type); @@ -3214,9 +3213,7 @@ public class JavaGenerator extends AbstractGenerator { * Subclasses may override this method to provide their own interface getters. */ protected void generateEmbeddableInterfaceGetter(EmbeddableDefinition embeddable, @SuppressWarnings("unused") int index, JavaWriter out) { - - // TODO: The Mode should be INTERFACE - final String member = getStrategy().getJavaMemberName(embeddable, Mode.POJO); + final String member = getStrategy().getJavaMemberName(embeddable, Mode.INTERFACE); final String getter = getStrategy().getJavaGetterName(embeddable, Mode.INTERFACE); final String typeFull = getStrategy().getFullJavaClassName(embeddable, Mode.INTERFACE); final String type = out.ref(typeFull); @@ -3243,9 +3240,7 @@ public class JavaGenerator extends AbstractGenerator { } private final void generateInterfaceGetter0(TypedElementDefinition column, @SuppressWarnings("unused") int index, JavaWriter out) { - - // TODO: The Mode should be INTERFACE - final String member = getStrategy().getJavaMemberName(column, Mode.POJO); + final String member = getStrategy().getJavaMemberName(column, Mode.INTERFACE); final String getter = getStrategy().getJavaGetterName(column, Mode.INTERFACE); final String typeFull = getJavaType(column.getType(resolver(out, Mode.INTERFACE)), out, Mode.INTERFACE); final String type = out.ref(typeFull); @@ -8879,9 +8874,7 @@ public class JavaGenerator extends AbstractGenerator { for (TypedElementDefinition column : getTypedElements(tableOrUDT)) { final String setter = getStrategy().getJavaSetterName(column, Mode.INTERFACE); final String getter = getStrategy().getJavaGetterName(column, Mode.INTERFACE); - - // TODO: Use appropriate Mode here - final String member = getStrategy().getJavaMemberName(column, Mode.POJO); + final String member = getStrategy().getJavaMemberName(column, Mode.INTERFACE); if (scala) out.println("%s(from.%s)", setter, getter); @@ -9288,9 +9281,7 @@ public class JavaGenerator extends AbstractGenerator { if (kotlin && generateKotlinSetterJvmNameAnnotationsOnIsPrefix() && column instanceof ColumnDefinition - - // TODO: The Mode should be INTERFACE - && P_IS.matcher(getStrategy().getJavaMemberName(column, Mode.POJO)).matches()) { + && P_IS.matcher(getStrategy().getJavaMemberName(column, mode)).matches()) { // [#12440] And if we have interfaces, we'll run into https://youtrack.jetbrains.com/issue/KT-31420 // [#13467] Since jOOQ 3.17, all these properties are open, so this applies everywhere